From: Michael Beck Date: Mon, 11 Oct 2004 13:10:23 +0000 (+0000) Subject: Added get_signed_mode() and get_unsigned_mode() X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=325f37244b1cc135b5e3a5977cad7835636d9ae5;p=libfirm Added get_signed_mode() and get_unsigned_mode() [r4097] --- diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index 4bfb9618e..f1c37aa02 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -915,6 +915,24 @@ init_mode (void) mode_P_mach = mode_P; } +ir_mode *find_unsigned_mode(const ir_mode *mode) +{ + ir_mode n = *mode; + + assert(mode->sort == irms_int_number); + n.sign = 0; + return find_mode(&n); +} + +ir_mode *find_signed_mode(const ir_mode *mode) +{ + ir_mode n = *mode; + + assert(mode->sort == irms_int_number); + n.sign = 1; + return find_mode(&n); +} + void finish_mode(void) { obstack_free(&modes, 0); diff --git a/ir/ir/irmode.h b/ir/ir/irmode.h index e8122938e..804dc327c 100644 --- a/ir/ir/irmode.h +++ b/ir/ir/irmode.h @@ -425,5 +425,14 @@ int mode_is_int_vector (const ir_mode *mode); according to firm definiton */ int smaller_mode(const ir_mode *sm, const ir_mode *lm); +/** + * Returns a matching unsigned mode for a given integer signed mode. + */ +ir_mode *find_unsigned_mode(const ir_mode *mode); + +/** + * Returns a matching signed mode for a given integer unsigned mode. + */ +ir_mode *find_signed_mode(const ir_mode *mode); #endif /* _IRMODE_H_ */