# include "array.h"
#if 0
+static long long count = 0;
# define ANNOUNCE() printf(__FILE__": call no. %lld (%s)\n", count++, __FUNCTION__)
#else
# define ANNOUNCE() ((void)0)
* local values
* * */
-static long long count = 0;
/* dynamic array to hold all modes */
static ir_mode * modes;
# undef get_mode_ident
# undef get_mode_name
# undef get_mode_sort
-# undef get_mode_size
+# undef get_mode_size_bits
# undef get_mode_align
#endif
modecode
return mode->sort;
}
-int
-get_mode_size(ir_mode *mode)
+INLINE int
+get_mode_size_bits(ir_mode *mode)
{
ANNOUNCE();
return mode->size;
}
+int get_mode_size_bytes(ir_mode *mode) {
+ ANNOUNCE();
+ int size = get_mode_size_bits(mode);
+ if ((size % 8) != 0) return -1;
+ return size / 8;
+}
+
int
get_mode_align (ir_mode *mode)
{
# define get_mode_ident(mode) (mode)->name
# define get_mode_name(mode) id_to_str((mode)->name)
# define get_mode_sort(mode) (mode)->sort
-# define get_mode_size(mode) (mode)->size
+# define get_mode_size_bits(mode) (mode)->size
# define get_mode_align(mode) (mode)->align
#endif
int
# define mode_is_dataM(mode) (((mode)->sort == float_number) || ((mode)->sort == int_number) || ((mode)->sort == character) || ((mode)->sort == reference) || ((mode)->code == irm_M))
#endif
/* Returns true if sm can be converted to lm without loss. */
-bool
+int
smaller_mode(ir_mode *sm, ir_mode *lm)
{
ANNOUNCE();
*/
if (mode_is_signed(sm))
{
- if ( mode_is_signed(lm) && (get_mode_size(lm) > get_mode_size(sm)) )
+ if ( mode_is_signed(lm) && (get_mode_size_bits(lm) > get_mode_size_bits(sm)) )
return 1;
}
else if (mode_is_signed(lm))
{
- if (get_mode_size(lm) > get_mode_size(sm) + 1)
+ if (get_mode_size_bits(lm) > get_mode_size_bits(sm) + 1)
return 1;
}
- else if (get_mode_size(lm) > get_mode_size(sm))
+ else if (get_mode_size_bits(lm) > get_mode_size_bits(sm))
{
return 1;
}
/* XXX currently only the three standard 32,64,80 bit floats
* are supported which can safely be converted */
if ( (get_mode_sort(lm) == float_number)
- && (get_mode_size(lm) > get_mode_size(sm)) )
+ && (get_mode_size_bits(lm) > get_mode_size_bits(sm)) )
return 1;
break;