Added get_signed_mode() and get_unsigned_mode()
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Mon, 11 Oct 2004 13:10:23 +0000 (13:10 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Mon, 11 Oct 2004 13:10:23 +0000 (13:10 +0000)
[r4097]

ir/ir/irmode.c
ir/ir/irmode.h

index 4bfb961..f1c37aa 100644 (file)
@@ -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);
index e812293..804dc32 100644 (file)
@@ -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_ */