*/
static void set_mode_values(ir_mode* mode) {
switch (get_mode_sort(mode)) {
+ case irms_reference:
case irms_int_number:
case irms_float_number:
mode->min = get_tarval_min(mode);
mode->null = get_tarval_null(mode);
mode->one = get_tarval_one(mode);
mode->minus_one = get_tarval_minus_one(mode);
+ if(get_mode_sort(mode) != irms_float_number) {
+ mode->all_one = get_tarval_all_one(mode);
+ } else {
+ mode->all_one = tarval_bad;
+ }
break;
case irms_internal_boolean:
mode->null = tarval_b_false;
mode->one = tarval_b_true;
mode->minus_one = tarval_bad;
- break;
-
- case irms_reference:
- mode->min = tarval_bad;
- mode->max = tarval_bad;
- mode->null = get_tarval_null(mode);
- mode->one = tarval_bad;
- mode->minus_one = tarval_bad;
+ mode->all_one = tarval_b_true;
break;
case irms_auxiliary:
return _get_mode_sign(mode);
}
-int
+mode_arithmetic
(get_mode_arithmetic)(const ir_mode *mode) {
return get_mode_arithmetic(mode);
}
get_mode_null(ir_mode *mode) {
assert(mode);
assert(get_mode_modecode(mode) < (modecode) num_modes);
- assert(mode_is_data(mode));
+ assert(mode_is_datab(mode));
return mode->null;
}
return mode->minus_one;
}
+tarval *
+get_mode_all_one(ir_mode *mode) {
+ assert(mode);
+ assert(get_mode_modecode(mode) < (modecode) num_modes);
+ assert(mode_is_data(mode));
+ return mode->all_one;
+}
+
tarval *
get_mode_infinite(ir_mode *mode) {
assert(mode);
/* do exist machines out there with different pointer lenghts ?*/
return 0;
+ case irms_internal_boolean:
+ return mode_is_int(lm);
+
default:
break;
}