X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode.c;h=5b9e024ab440f11955d582a35ac4d5d0c296fcbe;hb=9be70b7ef6120836707d76050372a89247cec2a6;hp=2efc4220df67882dd954d05a657b3a489db8f74d;hpb=5c27107154d63252e27639ebb34e98022f9b3358;p=libfirm diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index 2efc4220d..5b9e024ab 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -38,6 +38,27 @@ ir_mode *mode_M; ir_mode *mode_R; ir_mode *mode_Z; +INLINE ir_mode *get_mode_T() { return mode_T; } +INLINE ir_mode *get_mode_f() { return mode_f; } +INLINE ir_mode *get_mode_d() { return mode_d; } +INLINE ir_mode *get_mode_c() { return mode_c; } +INLINE ir_mode *get_mode_C() { return mode_C; } +INLINE ir_mode *get_mode_h() { return mode_h; } +INLINE ir_mode *get_mode_H() { return mode_H; } +INLINE ir_mode *get_mode_i() { return mode_i; } +INLINE ir_mode *get_mode_I() { return mode_I; } +INLINE ir_mode *get_mode_l() { return mode_l; } +INLINE ir_mode *get_mode_L() { return mode_L; } +INLINE ir_mode *get_mode_B() { return mode_B; } +INLINE ir_mode *get_mode_p() { return mode_b; } +INLINE ir_mode *get_mode_b() { return mode_p; } +INLINE ir_mode *get_mode_s() { return mode_s; } +INLINE ir_mode *get_mode_S() { return mode_S; } +INLINE ir_mode *get_mode_X() { return mode_X; } +INLINE ir_mode *get_mode_M() { return mode_M; } +INLINE ir_mode *get_mode_R() { return mode_R; } +INLINE ir_mode *get_mode_Z() { return mode_Z; } + void init_mode (void) { @@ -508,3 +529,15 @@ mode_is_dataM (ir_mode *mode) } return res; } + +/* Returns true if sm can be converted to lm without loss. */ +bool +smaller_mode(ir_mode *sm, ir_mode *lm) { + if ((mode_is_int(sm) && mode_is_int(lm)) && + get_mode_modecode(sm) <= get_mode_modecode(lm)) + return true; + if ((mode_is_float(sm) && mode_is_float(lm)) && + get_mode_modecode(sm) <= get_mode_modecode(lm)) + return true; + return(false); +}