Lines Matching refs:mode

61 neg_const_int (machine_mode mode, const_rtx i)  in neg_const_int()  argument
65 if (!HWI_COMPUTABLE_MODE_P (mode) in neg_const_int()
67 return simplify_const_unary_operation (NEG, mode, CONST_CAST_RTX (i), in neg_const_int()
68 mode); in neg_const_int()
69 return gen_int_mode (val, mode); in neg_const_int()
76 mode_signbit_p (machine_mode mode, const_rtx x) in mode_signbit_p() argument
82 if (!is_int_mode (mode, &int_mode)) in mode_signbit_p()
130 val_signbit_p (machine_mode mode, unsigned HOST_WIDE_INT val) in val_signbit_p() argument
135 if (!is_int_mode (mode, &int_mode)) in val_signbit_p()
149 val_signbit_known_set_p (machine_mode mode, unsigned HOST_WIDE_INT val) in val_signbit_known_set_p() argument
154 if (!is_int_mode (mode, &int_mode)) in val_signbit_known_set_p()
168 val_signbit_known_clear_p (machine_mode mode, unsigned HOST_WIDE_INT val) in val_signbit_known_clear_p() argument
173 if (!is_int_mode (mode, &int_mode)) in val_signbit_known_clear_p()
188 simplify_gen_binary (enum rtx_code code, machine_mode mode, rtx op0, in simplify_gen_binary() argument
194 tem = simplify_binary_operation (code, mode, op0, op1); in simplify_gen_binary()
203 return gen_rtx_fmt_ee (code, mode, op0, op1); in simplify_gen_binary()
291 machine_mode mode = GET_MODE (x); in delegitimize_mem_from_attrs() local
316 = get_inner_reference (decl, &bitsize, &bitpos, &toffset, &mode, in delegitimize_mem_from_attrs()
318 if (maybe_ne (bitsize, GET_MODE_BITSIZE (mode)) in delegitimize_mem_from_attrs()
329 && mode == GET_MODE (x) in delegitimize_mem_from_attrs()
357 x = adjust_address_nv (newx, mode, offset); in delegitimize_mem_from_attrs()
372 simplify_gen_unary (enum rtx_code code, machine_mode mode, rtx op, in simplify_gen_unary() argument
378 if ((tem = simplify_unary_operation (code, mode, op, op_mode)) != 0) in simplify_gen_unary()
381 return gen_rtx_fmt_e (code, mode, op); in simplify_gen_unary()
387 simplify_gen_ternary (enum rtx_code code, machine_mode mode, in simplify_gen_ternary() argument
393 if ((tem = simplify_ternary_operation (code, mode, op0_mode, in simplify_gen_ternary()
397 return gen_rtx_fmt_eee (code, mode, op0, op1, op2); in simplify_gen_ternary()
404 simplify_gen_relational (enum rtx_code code, machine_mode mode, in simplify_gen_relational() argument
409 if ((tem = simplify_relational_operation (code, mode, cmp_mode, in simplify_gen_relational()
413 return gen_rtx_fmt_ee (code, mode, op0, op1); in simplify_gen_relational()
426 machine_mode mode = GET_MODE (x); in simplify_replace_fn_rtx() local
450 return simplify_gen_unary (code, mode, op0, op_mode); in simplify_replace_fn_rtx()
458 return simplify_gen_binary (code, mode, op0, op1); in simplify_replace_fn_rtx()
469 return simplify_gen_relational (code, mode, op_mode, op0, op1); in simplify_replace_fn_rtx()
482 return simplify_gen_ternary (code, mode, op_mode, op0, op1, op2); in simplify_replace_fn_rtx()
522 return gen_rtx_LO_SUM (mode, op0, op1); in simplify_replace_fn_rtx()
629 simplify_truncation (machine_mode mode, rtx op, in simplify_truncation() argument
632 unsigned int precision = GET_MODE_UNIT_PRECISION (mode); in simplify_truncation()
649 if (mode == origmode) in simplify_truncation()
652 return simplify_gen_unary (TRUNCATE, mode, in simplify_truncation()
655 return simplify_gen_unary (GET_CODE (op), mode, in simplify_truncation()
668 rtx op0 = simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0), op_mode); in simplify_truncation()
671 rtx op1 = simplify_gen_unary (TRUNCATE, mode, XEXP (op, 1), op_mode); in simplify_truncation()
673 return simplify_gen_binary (GET_CODE (op), mode, op0, op1); in simplify_truncation()
689 && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode in simplify_truncation()
691 return simplify_gen_binary (ASHIFTRT, mode, in simplify_truncation()
701 && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode in simplify_truncation()
703 return simplify_gen_binary (LSHIFTRT, mode, in simplify_truncation()
713 && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode in simplify_truncation()
715 return simplify_gen_binary (ASHIFT, mode, in simplify_truncation()
736 && ((GET_MODE_MASK (mode) >> shift) & mask) in simplify_truncation()
738 && (op0 = simplify_gen_unary (TRUNCATE, mode, op0, op_mode)) in simplify_truncation()
739 && (op0 = simplify_gen_binary (LSHIFTRT, mode, op0, shift_op))) in simplify_truncation()
741 mask_op = GEN_INT (trunc_int_for_mode (mask, mode)); in simplify_truncation()
742 return simplify_gen_binary (AND, mode, op0, mask_op); in simplify_truncation()
760 op0 = simplify_gen_unary (TRUNCATE, mode, op0, GET_MODE (op0)); in simplify_truncation()
764 return simplify_gen_ternary (GET_CODE (op), mode, mode, op0, in simplify_truncation()
770 op0 = simplify_gen_unary (TRUNCATE, mode, op0, GET_MODE (op0)); in simplify_truncation()
772 return simplify_gen_ternary (GET_CODE (op), mode, mode, op0, in simplify_truncation()
780 && SCALAR_INT_MODE_P (mode) in simplify_truncation()
788 poly_int64 byte = subreg_lowpart_offset (mode, op_mode); in simplify_truncation()
790 return simplify_gen_subreg (mode, XEXP (op, 0), op_mode, in simplify_truncation()
801 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_truncation()
828 && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode) in simplify_truncation()
829 return simplify_gen_unary (GET_CODE (op), mode, in simplify_truncation()
830 XEXP (XEXP (op, 0), 0), mode); in simplify_truncation()
835 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_truncation()
853 return simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0), in simplify_truncation()
859 && SCALAR_INT_MODE_P (mode) in simplify_truncation()
862 && trunc_int_for_mode (INTVAL (XEXP (op, 1)), mode) == -1) in simplify_truncation()
872 simplify_unary_operation (enum rtx_code code, machine_mode mode, in simplify_unary_operation() argument
879 tem = simplify_const_unary_operation (code, mode, trueop, op_mode); in simplify_unary_operation()
883 return simplify_unary_operation_1 (code, mode, op); in simplify_unary_operation()
915 simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op) in simplify_unary_operation_1() argument
931 && (mode == BImode || STORE_FLAG_VALUE == -1) in simplify_unary_operation_1()
933 return simplify_gen_relational (reversed, mode, VOIDmode, in simplify_unary_operation_1()
939 return simplify_gen_unary (NEG, mode, XEXP (op, 0), mode); in simplify_unary_operation_1()
944 if (GET_CODE (op) == NEG && CONSTM1_RTX (mode)) in simplify_unary_operation_1()
945 return simplify_gen_binary (PLUS, mode, XEXP (op, 0), in simplify_unary_operation_1()
946 CONSTM1_RTX (mode)); in simplify_unary_operation_1()
951 && (temp = simplify_unary_operation (NOT, mode, in simplify_unary_operation_1()
952 XEXP (op, 1), mode)) != 0) in simplify_unary_operation_1()
953 return simplify_gen_binary (XOR, mode, XEXP (op, 0), temp); in simplify_unary_operation_1()
958 && mode_signbit_p (mode, XEXP (op, 1)) in simplify_unary_operation_1()
959 && (temp = simplify_unary_operation (NOT, mode, in simplify_unary_operation_1()
960 XEXP (op, 1), mode)) != 0) in simplify_unary_operation_1()
961 return simplify_gen_binary (XOR, mode, XEXP (op, 0), temp); in simplify_unary_operation_1()
972 temp = simplify_gen_unary (NOT, mode, const1_rtx, mode); in simplify_unary_operation_1()
973 return simplify_gen_binary (ROTATE, mode, temp, XEXP (op, 1)); in simplify_unary_operation_1()
980 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_unary_operation_1()
1000 temp = rtl_hooks.gen_lowpart_no_emit (mode, x); in simplify_unary_operation_1()
1019 op_mode = mode; in simplify_unary_operation_1()
1026 mode, in1, in2); in simplify_unary_operation_1()
1032 rtx x = simplify_gen_unary (NOT, mode, XEXP (op, 0), mode); in simplify_unary_operation_1()
1033 return simplify_gen_unary (BSWAP, mode, x, mode); in simplify_unary_operation_1()
1057 temp = reversed_comparison (cond, mode); in simplify_unary_operation_1()
1063 return simplify_gen_ternary (IF_THEN_ELSE, mode, in simplify_unary_operation_1()
1064 mode, temp, true_rtx, false_rtx); in simplify_unary_operation_1()
1071 return simplify_gen_unary (NOT, mode, XEXP (op, 0), mode); in simplify_unary_operation_1()
1075 return simplify_gen_binary (PLUS, mode, XEXP (op, 0), in simplify_unary_operation_1()
1076 CONST1_RTX (mode)); in simplify_unary_operation_1()
1084 && !HONOR_SIGNED_ZEROS (mode) in simplify_unary_operation_1()
1085 && !HONOR_SIGN_DEPENDENT_ROUNDING (mode)) in simplify_unary_operation_1()
1086 return simplify_gen_binary (MINUS, mode, XEXP (op, 1), XEXP (op, 0)); in simplify_unary_operation_1()
1089 && !HONOR_SIGNED_ZEROS (mode) in simplify_unary_operation_1()
1090 && !HONOR_SIGN_DEPENDENT_ROUNDING (mode)) in simplify_unary_operation_1()
1096 temp = simplify_unary_operation (NEG, mode, XEXP (op, 1), mode); in simplify_unary_operation_1()
1098 return simplify_gen_binary (MINUS, mode, temp, XEXP (op, 0)); in simplify_unary_operation_1()
1102 temp = simplify_gen_unary (NEG, mode, XEXP (op, 0), mode); in simplify_unary_operation_1()
1103 return simplify_gen_binary (MINUS, mode, temp, XEXP (op, 1)); in simplify_unary_operation_1()
1109 && !HONOR_SIGN_DEPENDENT_ROUNDING (mode)) in simplify_unary_operation_1()
1111 temp = simplify_gen_unary (NEG, mode, XEXP (op, 1), mode); in simplify_unary_operation_1()
1112 return simplify_gen_binary (MULT, mode, XEXP (op, 0), temp); in simplify_unary_operation_1()
1120 temp = simplify_unary_operation (NEG, mode, XEXP (op, 0), mode); in simplify_unary_operation_1()
1122 return simplify_gen_binary (ASHIFT, mode, temp, XEXP (op, 1)); in simplify_unary_operation_1()
1129 && INTVAL (XEXP (op, 1)) == GET_MODE_UNIT_PRECISION (mode) - 1) in simplify_unary_operation_1()
1130 return simplify_gen_binary (LSHIFTRT, mode, in simplify_unary_operation_1()
1137 && INTVAL (XEXP (op, 1)) == GET_MODE_UNIT_PRECISION (mode) - 1) in simplify_unary_operation_1()
1138 return simplify_gen_binary (ASHIFTRT, mode, in simplify_unary_operation_1()
1144 && nonzero_bits (XEXP (op, 0), mode) == 1) in simplify_unary_operation_1()
1145 return plus_constant (mode, XEXP (op, 0), -1); in simplify_unary_operation_1()
1153 int_mode = as_a <scalar_int_mode> (mode); in simplify_unary_operation_1()
1184 scalar_mode inner_mode = GET_MODE_INNER (mode); in simplify_unary_operation_1()
1191 return gen_vec_series (mode, base, step); in simplify_unary_operation_1()
1203 if (GET_MODE_CLASS (mode) == MODE_PARTIAL_INT) in simplify_unary_operation_1()
1205 if (TRULY_NOOP_TRUNCATION_MODES_P (mode, GET_MODE (op))) in simplify_unary_operation_1()
1207 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1219 temp = simplify_truncation (mode, op, GET_MODE (op)); in simplify_unary_operation_1()
1226 if (known_eq (GET_MODE_NUNITS (mode), 1) in simplify_unary_operation_1()
1227 && (TRULY_NOOP_TRUNCATION_MODES_P (mode, GET_MODE (op)) in simplify_unary_operation_1()
1228 || truncated_to_mode (mode, op))) in simplify_unary_operation_1()
1230 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1239 if (HWI_COMPUTABLE_MODE_P (mode) in simplify_unary_operation_1()
1241 && (STORE_FLAG_VALUE & ~GET_MODE_MASK (mode)) == 0) in simplify_unary_operation_1()
1243 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1251 && !VECTOR_MODE_P (mode) in simplify_unary_operation_1()
1255 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1263 if (DECIMAL_FLOAT_MODE_P (mode)) in simplify_unary_operation_1()
1268 && GET_MODE (XEXP (op, 0)) == mode) in simplify_unary_operation_1()
1284 > GET_MODE_UNIT_SIZE (mode) in simplify_unary_operation_1()
1286 mode, in simplify_unary_operation_1()
1287 XEXP (op, 0), mode); in simplify_unary_operation_1()
1293 return simplify_gen_unary (GET_CODE (op), mode, in simplify_unary_operation_1()
1302 && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode) in simplify_unary_operation_1()
1303 return simplify_gen_unary (GET_CODE (op), mode, in simplify_unary_operation_1()
1304 XEXP (XEXP (op, 0), 0), mode); in simplify_unary_operation_1()
1315 if (DECIMAL_FLOAT_MODE_P (mode)) in simplify_unary_operation_1()
1326 return simplify_gen_unary (GET_CODE (op), mode, in simplify_unary_operation_1()
1335 return simplify_gen_unary (ABS, mode, XEXP (op, 0), in simplify_unary_operation_1()
1350 if (is_a <scalar_int_mode> (mode, &int_mode) in simplify_unary_operation_1()
1361 return simplify_gen_unary (FFS, mode, XEXP (op, 0), in simplify_unary_operation_1()
1371 return simplify_gen_unary (POPCOUNT, mode, XEXP (op, 0), in simplify_unary_operation_1()
1378 return simplify_gen_unary (POPCOUNT, mode, XEXP (op, 0), in simplify_unary_operation_1()
1394 return simplify_gen_unary (PARITY, mode, XEXP (op, 0), in simplify_unary_operation_1()
1401 return simplify_gen_unary (PARITY, mode, XEXP (op, 0), in simplify_unary_operation_1()
1419 return simplify_gen_unary (FLOAT, mode, XEXP (op, 0), in simplify_unary_operation_1()
1429 && GET_MODE (XEXP (op, 0)) == mode in simplify_unary_operation_1()
1473 (MULT, mode, in simplify_unary_operation_1()
1474 simplify_gen_unary (SIGN_EXTEND, mode, lhs, lmode), in simplify_unary_operation_1()
1475 simplify_gen_unary (SIGN_EXTEND, mode, rhs, rmode)); in simplify_unary_operation_1()
1485 && !paradoxical_subreg_p (mode, GET_MODE (SUBREG_REG (op)))) in simplify_unary_operation_1()
1487 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1496 gcc_assert (GET_MODE_UNIT_PRECISION (mode) in simplify_unary_operation_1()
1498 return simplify_gen_unary (GET_CODE (op), mode, XEXP (op, 0), in simplify_unary_operation_1()
1509 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_unary_operation_1()
1535 return simplify_gen_unary (ZERO_EXTEND, mode, op, GET_MODE (op)); in simplify_unary_operation_1()
1543 && mode == Pmode && GET_MODE (op) == ptr_mode in simplify_unary_operation_1()
1568 && !paradoxical_subreg_p (mode, GET_MODE (SUBREG_REG (op)))) in simplify_unary_operation_1()
1570 temp = rtl_hooks.gen_lowpart_no_emit (mode, op); in simplify_unary_operation_1()
1613 (MULT, mode, in simplify_unary_operation_1()
1614 simplify_gen_unary (ZERO_EXTEND, mode, lhs, lmode), in simplify_unary_operation_1()
1615 simplify_gen_unary (ZERO_EXTEND, mode, rhs, rmode)); in simplify_unary_operation_1()
1621 return simplify_gen_unary (ZERO_EXTEND, mode, XEXP (op, 0), in simplify_unary_operation_1()
1629 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_unary_operation_1()
1653 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_unary_operation_1()
1673 && mode == Pmode && GET_MODE (op) == ptr_mode in simplify_unary_operation_1()
1695 if (VECTOR_MODE_P (mode) in simplify_unary_operation_1()
1713 temp = simplify_unary_operation (code, GET_MODE_INNER (mode), in simplify_unary_operation_1()
1716 return gen_vec_duplicate (mode, temp); in simplify_unary_operation_1()
1726 simplify_const_unary_operation (enum rtx_code code, machine_mode mode, in simplify_const_unary_operation() argument
1733 gcc_assert (VECTOR_MODE_P (mode)); in simplify_const_unary_operation()
1737 gcc_assert (GET_MODE_INNER (mode) == GET_MODE (op)); in simplify_const_unary_operation()
1739 gcc_assert (GET_MODE_INNER (mode) == GET_MODE_INNER in simplify_const_unary_operation()
1743 return gen_const_vec_duplicate (mode, op); in simplify_const_unary_operation()
1746 && GET_MODE_NUNITS (mode).is_constant (&n_elts)) in simplify_const_unary_operation()
1756 return gen_rtx_CONST_VECTOR (mode, v); in simplify_const_unary_operation()
1760 if (VECTOR_MODE_P (mode) && GET_CODE (op) == CONST_VECTOR) in simplify_const_unary_operation()
1767 gcc_assert (known_eq (GET_MODE_NUNITS (mode), n_elts)); in simplify_const_unary_operation()
1775 rtx x = simplify_unary_operation (code, GET_MODE_INNER (mode), in simplify_const_unary_operation()
1778 if (!x || !valid_for_const_vector_p (mode, x)) in simplify_const_unary_operation()
1782 return gen_rtx_CONST_VECTOR (mode, v); in simplify_const_unary_operation()
1803 real_from_integer (&d, mode, rtx_mode_t (op, op_mode), SIGNED); in simplify_const_unary_operation()
1807 if (HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)) in simplify_const_unary_operation()
1810 d = real_value_truncate (mode, d); in simplify_const_unary_operation()
1811 return const_double_from_real_value (d, mode); in simplify_const_unary_operation()
1827 real_from_integer (&d, mode, rtx_mode_t (op, op_mode), UNSIGNED); in simplify_const_unary_operation()
1831 if (HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)) in simplify_const_unary_operation()
1834 d = real_value_truncate (mode, d); in simplify_const_unary_operation()
1835 return const_double_from_real_value (d, mode); in simplify_const_unary_operation()
1838 if (CONST_SCALAR_INT_P (op) && is_a <scalar_int_mode> (mode, &result_mode)) in simplify_const_unary_operation()
1926 && SCALAR_FLOAT_MODE_P (mode) in simplify_const_unary_operation()
1943 if (HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)) in simplify_const_unary_operation()
1945 d = real_value_truncate (mode, d); in simplify_const_unary_operation()
1950 if (HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)) in simplify_const_unary_operation()
1954 if (GET_MODE_CLASS (mode) != GET_MODE_CLASS (GET_MODE (op))) in simplify_const_unary_operation()
1955 real_convert (&d, mode, &d); in simplify_const_unary_operation()
1960 if (HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)) in simplify_const_unary_operation()
1972 real_from_target (&d, tmp, mode); in simplify_const_unary_operation()
1978 return const_double_from_real_value (d, mode); in simplify_const_unary_operation()
1982 && is_int_mode (mode, &result_mode)) in simplify_const_unary_operation()
2009 return immed_wide_int_const (wmax, mode); in simplify_const_unary_operation()
2015 return immed_wide_int_const (wmin, mode); in simplify_const_unary_operation()
2018 mode); in simplify_const_unary_operation()
2028 return immed_wide_int_const (wmax, mode); in simplify_const_unary_operation()
2031 mode); in simplify_const_unary_operation()
2055 return immed_wide_int_const (result, mode); in simplify_const_unary_operation()
2067 simplify_byte_swapping_operation (enum rtx_code code, machine_mode mode, in simplify_byte_swapping_operation() argument
2075 tem = simplify_gen_binary (code, mode, XEXP (op0, 0), in simplify_byte_swapping_operation()
2076 simplify_gen_unary (BSWAP, mode, op1, mode)); in simplify_byte_swapping_operation()
2077 return simplify_gen_unary (BSWAP, mode, tem, mode); in simplify_byte_swapping_operation()
2083 tem = simplify_gen_binary (code, mode, XEXP (op0, 0), XEXP (op1, 0)); in simplify_byte_swapping_operation()
2084 return simplify_gen_unary (BSWAP, mode, tem, mode); in simplify_byte_swapping_operation()
2097 simplify_associative_operation (enum rtx_code code, machine_mode mode, in simplify_associative_operation() argument
2108 tem = simplify_gen_binary (code, mode, op0, XEXP (op1, 0)); in simplify_associative_operation()
2109 return simplify_gen_binary (code, mode, tem, XEXP (op1, 1)); in simplify_associative_operation()
2114 return simplify_gen_binary (code, mode, op1, op0); in simplify_associative_operation()
2124 tem = simplify_gen_binary (code, mode, XEXP (op0, 0), op1); in simplify_associative_operation()
2125 return simplify_gen_binary (code, mode, tem, XEXP (op0, 1)); in simplify_associative_operation()
2129 tem = simplify_binary_operation (code, mode, XEXP (op0, 1), op1); in simplify_associative_operation()
2131 return simplify_gen_binary (code, mode, XEXP (op0, 0), tem); in simplify_associative_operation()
2134 tem = simplify_binary_operation (code, mode, XEXP (op0, 0), op1); in simplify_associative_operation()
2136 return simplify_gen_binary (code, mode, tem, XEXP (op0, 1)); in simplify_associative_operation()
2149 simplify_binary_operation (enum rtx_code code, machine_mode mode, in simplify_binary_operation() argument
2170 tem = simplify_const_binary_operation (code, mode, trueop0, trueop1); in simplify_binary_operation()
2173 tem = simplify_binary_operation_1 (code, mode, op0, op1, trueop0, trueop1); in simplify_binary_operation()
2181 return simplify_gen_binary (code, mode, trueop0, trueop1); in simplify_binary_operation()
2196 simplify_binary_operation_series (rtx_code code, machine_mode mode, in simplify_binary_operation_series() argument
2214 scalar_mode inner_mode = GET_MODE_INNER (mode); in simplify_binary_operation_series()
2223 return gen_vec_series (mode, new_base, new_step); in simplify_binary_operation_series()
2232 simplify_binary_operation_1 (enum rtx_code code, machine_mode mode, in simplify_binary_operation_1() argument
2250 if (!HONOR_SIGNED_ZEROS (mode) && trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
2256 return simplify_gen_binary (MINUS, mode, op1, XEXP (op0, 0)); in simplify_binary_operation_1()
2258 return simplify_gen_binary (MINUS, mode, op0, XEXP (op1, 0)); in simplify_binary_operation_1()
2261 if (INTEGRAL_MODE_P (mode) in simplify_binary_operation_1()
2264 return simplify_gen_unary (NEG, mode, XEXP (op0, 0), mode); in simplify_binary_operation_1()
2276 return plus_constant (mode, op0, INTVAL (op1)); in simplify_binary_operation_1()
2281 return plus_constant (mode, op1, INTVAL (op0)); in simplify_binary_operation_1()
2289 if (is_a <scalar_int_mode> (mode, &int_mode)) in simplify_binary_operation_1()
2356 && mode_signbit_p (mode, op1)) in simplify_binary_operation_1()
2357 return simplify_gen_binary (XOR, mode, XEXP (op0, 0), in simplify_binary_operation_1()
2358 simplify_gen_binary (XOR, mode, op1, in simplify_binary_operation_1()
2362 if (!HONOR_SIGN_DEPENDENT_ROUNDING (mode) in simplify_binary_operation_1()
2370 return simplify_gen_binary (MINUS, mode, op1, in simplify_binary_operation_1()
2371 simplify_gen_binary (MULT, mode, in simplify_binary_operation_1()
2381 && (reversed = reversed_comparison (op0, mode))) in simplify_binary_operation_1()
2383 simplify_gen_unary (NEG, mode, reversed, mode); in simplify_binary_operation_1()
2391 if (INTEGRAL_MODE_P (mode) in simplify_binary_operation_1()
2394 && (tem = simplify_plus_minus (code, mode, op0, op1)) != 0) in simplify_binary_operation_1()
2399 if (FLOAT_MODE_P (mode) in simplify_binary_operation_1()
2402 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
2408 if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT) in simplify_binary_operation_1()
2410 tem = simplify_binary_operation_series (code, mode, op0, op1); in simplify_binary_operation_1()
2430 && GET_MODE (xop00) == mode in simplify_binary_operation_1()
2431 && GET_MODE (xop10) == mode in simplify_binary_operation_1()
2432 && GET_MODE_CLASS (mode) == MODE_CC) in simplify_binary_operation_1()
2443 && (!FLOAT_MODE_P (mode) || !HONOR_NANS (mode))) in simplify_binary_operation_1()
2444 return CONST0_RTX (mode); in simplify_binary_operation_1()
2450 if (!HONOR_SIGNED_ZEROS (mode) && trueop0 == CONST0_RTX (mode)) in simplify_binary_operation_1()
2451 return simplify_gen_unary (NEG, mode, op1, mode); in simplify_binary_operation_1()
2458 return simplify_gen_unary (NOT, mode, op1, mode); in simplify_binary_operation_1()
2463 if (!(HONOR_SIGNED_ZEROS (mode) in simplify_binary_operation_1()
2464 && HONOR_SIGN_DEPENDENT_ROUNDING (mode)) in simplify_binary_operation_1()
2465 && trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
2474 if (is_a <scalar_int_mode> (mode, &int_mode)) in simplify_binary_operation_1()
2540 return simplify_gen_binary (PLUS, mode, op0, XEXP (op1, 0)); in simplify_binary_operation_1()
2546 tem = simplify_unary_operation (NEG, mode, op1, mode); in simplify_binary_operation_1()
2548 return simplify_gen_binary (MINUS, mode, tem, XEXP (op0, 0)); in simplify_binary_operation_1()
2555 return plus_constant (mode, op0, trunc_int_for_mode (-offset, mode)); in simplify_binary_operation_1()
2559 return simplify_gen_binary (PLUS, mode, in simplify_binary_operation_1()
2561 neg_const_int (mode, op1)); in simplify_binary_operation_1()
2564 if (INTEGRAL_MODE_P (mode) && GET_CODE (op1) == AND) in simplify_binary_operation_1()
2568 tem = simplify_gen_unary (NOT, mode, XEXP (op1, 1), in simplify_binary_operation_1()
2570 return simplify_gen_binary (AND, mode, op0, tem); in simplify_binary_operation_1()
2574 tem = simplify_gen_unary (NOT, mode, XEXP (op1, 0), in simplify_binary_operation_1()
2576 return simplify_gen_binary (AND, mode, op0, tem); in simplify_binary_operation_1()
2585 && (reversed = reversed_comparison (op1, mode))) in simplify_binary_operation_1()
2589 if (!HONOR_SIGN_DEPENDENT_ROUNDING (mode) in simplify_binary_operation_1()
2597 return simplify_gen_binary (PLUS, mode, in simplify_binary_operation_1()
2598 simplify_gen_binary (MULT, mode, in simplify_binary_operation_1()
2605 if (!HONOR_SIGN_DEPENDENT_ROUNDING (mode) in simplify_binary_operation_1()
2611 in1 = simplify_gen_unary (NEG, mode, XEXP (op1, 0), mode); in simplify_binary_operation_1()
2613 return simplify_gen_binary (MINUS, mode, in simplify_binary_operation_1()
2614 simplify_gen_binary (MULT, mode, in simplify_binary_operation_1()
2626 if (INTEGRAL_MODE_P (mode) in simplify_binary_operation_1()
2629 && (tem = simplify_plus_minus (code, mode, op0, op1)) != 0) in simplify_binary_operation_1()
2633 if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT) in simplify_binary_operation_1()
2635 tem = simplify_binary_operation_series (code, mode, op0, op1); in simplify_binary_operation_1()
2643 return simplify_gen_unary (NEG, mode, op0, mode); in simplify_binary_operation_1()
2647 rtx temp = simplify_unary_operation (NEG, mode, op1, mode); in simplify_binary_operation_1()
2660 return simplify_gen_binary (MULT, mode, XEXP (op0, 0), temp); in simplify_binary_operation_1()
2664 rtx temp = simplify_unary_operation (NEG, mode, op0, mode); in simplify_binary_operation_1()
2677 return simplify_gen_binary (MULT, mode, temp, XEXP (op1, 0)); in simplify_binary_operation_1()
2684 if (!HONOR_NANS (mode) in simplify_binary_operation_1()
2685 && !HONOR_SIGNED_ZEROS (mode) in simplify_binary_operation_1()
2686 && trueop1 == CONST0_RTX (mode) in simplify_binary_operation_1()
2692 if (!HONOR_SNANS (mode) in simplify_binary_operation_1()
2693 && trueop1 == CONST1_RTX (mode)) in simplify_binary_operation_1()
2699 val = wi::exact_log2 (rtx_mode_t (trueop1, mode)); in simplify_binary_operation_1()
2701 return simplify_gen_binary (ASHIFT, mode, op0, in simplify_binary_operation_1()
2702 gen_int_shift_amount (mode, val)); in simplify_binary_operation_1()
2709 && GET_MODE (op0) == mode) in simplify_binary_operation_1()
2714 return simplify_gen_binary (PLUS, mode, op0, copy_rtx (op0)); in simplify_binary_operation_1()
2716 if (!HONOR_SNANS (mode) in simplify_binary_operation_1()
2718 return simplify_gen_unary (NEG, mode, op0, mode); in simplify_binary_operation_1()
2722 if (FLOAT_MODE_P (mode) in simplify_binary_operation_1()
2727 return simplify_gen_binary (MULT, mode, XEXP (op0, 0), XEXP (op1, 0)); in simplify_binary_operation_1()
2730 if (SCALAR_FLOAT_MODE_P (mode) in simplify_binary_operation_1()
2735 return simplify_gen_binary (MULT, mode, XEXP (op0, 0), XEXP (op1, 0)); in simplify_binary_operation_1()
2739 if (! FLOAT_MODE_P (mode) in simplify_binary_operation_1()
2742 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
2749 if (trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
2751 if (INTEGRAL_MODE_P (mode) in simplify_binary_operation_1()
2752 && trueop1 == CONSTM1_RTX (mode) in simplify_binary_operation_1()
2761 && SCALAR_INT_MODE_P (mode)) in simplify_binary_operation_1()
2766 && HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
2767 && (nonzero_bits (op0, mode) & ~UINTVAL (op1)) == 0 in simplify_binary_operation_1()
2776 HOST_WIDE_INT mask = GET_MODE_MASK (mode); in simplify_binary_operation_1()
2787 return simplify_gen_binary (IOR, mode, XEXP (op0, 0), op1); in simplify_binary_operation_1()
2818 == GET_MODE_UNIT_PRECISION (mode))) in simplify_binary_operation_1()
2819 return gen_rtx_ROTATE (mode, XEXP (opright, 0), XEXP (opleft, 1)); in simplify_binary_operation_1()
2825 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_binary_operation_1()
2858 && trunc_int_for_mode (mask, mode) == mask in simplify_binary_operation_1()
2859 && (mask & nonzero_bits (XEXP (op0, 0), mode)) == 0) in simplify_binary_operation_1()
2860 return simplify_gen_binary (ASHIFTRT, mode, in simplify_binary_operation_1()
2861 plus_constant (mode, XEXP (op0, 0), in simplify_binary_operation_1()
2866 tem = simplify_byte_swapping_operation (code, mode, op0, op1); in simplify_binary_operation_1()
2870 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
2876 if (trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
2878 if (INTEGRAL_MODE_P (mode) && trueop1 == CONSTM1_RTX (mode)) in simplify_binary_operation_1()
2879 return simplify_gen_unary (NOT, mode, op0, mode); in simplify_binary_operation_1()
2882 && GET_MODE_CLASS (mode) != MODE_CC) in simplify_binary_operation_1()
2883 return CONST0_RTX (mode); in simplify_binary_operation_1()
2887 && mode_signbit_p (mode, op1)) in simplify_binary_operation_1()
2888 return simplify_gen_binary (PLUS, mode, op0, op1); in simplify_binary_operation_1()
2893 && mode_signbit_p (mode, XEXP (op0, 1))) in simplify_binary_operation_1()
2894 return simplify_gen_binary (XOR, mode, XEXP (op0, 0), in simplify_binary_operation_1()
2895 simplify_gen_binary (XOR, mode, op1, in simplify_binary_operation_1()
2902 if (HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
2903 && (nonzero_bits (op0, mode) in simplify_binary_operation_1()
2904 & nonzero_bits (op1, mode)) == 0) in simplify_binary_operation_1()
2905 return (simplify_gen_binary (IOR, mode, op0, op1)); in simplify_binary_operation_1()
2919 return simplify_gen_binary (XOR, mode, op0, op1); in simplify_binary_operation_1()
2921 return simplify_gen_unary (NOT, mode, in simplify_binary_operation_1()
2922 simplify_gen_binary (XOR, mode, op0, op1), in simplify_binary_operation_1()
2923 mode); in simplify_binary_operation_1()
2933 return simplify_gen_binary (AND, mode, in simplify_binary_operation_1()
2934 simplify_gen_unary (NOT, mode, in simplify_binary_operation_1()
2935 XEXP (op0, 0), mode), in simplify_binary_operation_1()
2941 return simplify_gen_binary (AND, mode, in simplify_binary_operation_1()
2942 simplify_gen_unary (NOT, mode, in simplify_binary_operation_1()
2943 XEXP (op0, 1), mode), in simplify_binary_operation_1()
2973 return simplify_gen_binary (XOR, mode, in simplify_binary_operation_1()
2974 simplify_gen_binary (op, mode, a, c), in simplify_binary_operation_1()
2976 mode)); in simplify_binary_operation_1()
3001 rtx n_na_c = simplify_binary_operation (IOR, mode, a, in simplify_binary_operation_1()
3008 na_c = simplify_gen_unary (NOT, mode, n_na_c, mode); in simplify_binary_operation_1()
3015 rtx na = simplify_unary_operation (NOT, mode, a, mode); in simplify_binary_operation_1()
3017 na_c = simplify_gen_binary (AND, mode, na, c); in simplify_binary_operation_1()
3022 return simplify_gen_binary (IOR, mode, na_c, in simplify_binary_operation_1()
3023 gen_int_mode (~bval & cval, mode)); in simplify_binary_operation_1()
3028 if (n_na_c == CONSTM1_RTX (mode)) in simplify_binary_operation_1()
3030 rtx a_nc_b = simplify_gen_binary (AND, mode, a, in simplify_binary_operation_1()
3032 mode)); in simplify_binary_operation_1()
3033 return simplify_gen_binary (IOR, mode, a_nc_b, in simplify_binary_operation_1()
3035 mode)); in simplify_binary_operation_1()
3051 rtx nc = simplify_gen_unary (NOT, mode, c, mode); in simplify_binary_operation_1()
3052 rtx a_nc = simplify_gen_binary (AND, mode, a, nc); in simplify_binary_operation_1()
3053 rtx bc = simplify_gen_binary (AND, mode, b, c); in simplify_binary_operation_1()
3054 return simplify_gen_binary (IOR, mode, a_nc, bc); in simplify_binary_operation_1()
3065 rtx nc = simplify_gen_unary (NOT, mode, c, mode); in simplify_binary_operation_1()
3066 rtx b_nc = simplify_gen_binary (AND, mode, b, nc); in simplify_binary_operation_1()
3067 rtx ac = simplify_gen_binary (AND, mode, a, c); in simplify_binary_operation_1()
3068 return simplify_gen_binary (IOR, mode, ac, b_nc); in simplify_binary_operation_1()
3076 && (reversed = reversed_comparison (op0, mode))) in simplify_binary_operation_1()
3083 if (is_a <scalar_int_mode> (mode, &int_mode) in simplify_binary_operation_1()
3093 if (is_a <scalar_int_mode> (mode, &int_mode) in simplify_binary_operation_1()
3100 tem = simplify_byte_swapping_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3104 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3110 if (trueop1 == CONST0_RTX (mode) && ! side_effects_p (op0)) in simplify_binary_operation_1()
3112 if (INTEGRAL_MODE_P (mode) && trueop1 == CONSTM1_RTX (mode)) in simplify_binary_operation_1()
3114 if (HWI_COMPUTABLE_MODE_P (mode)) in simplify_binary_operation_1()
3116 HOST_WIDE_INT nzop0 = nonzero_bits (trueop0, mode); in simplify_binary_operation_1()
3126 nzop1 = nonzero_bits (trueop1, mode); in simplify_binary_operation_1()
3130 return CONST0_RTX (mode); in simplify_binary_operation_1()
3133 && GET_MODE_CLASS (mode) != MODE_CC) in simplify_binary_operation_1()
3139 && GET_MODE_CLASS (mode) != MODE_CC) in simplify_binary_operation_1()
3140 return CONST0_RTX (mode); in simplify_binary_operation_1()
3147 && HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
3155 return simplify_gen_unary (ZERO_EXTEND, mode, tem, imode); in simplify_binary_operation_1()
3167 return simplify_gen_unary (TRUNCATE, mode, tem, xmode); in simplify_binary_operation_1()
3176 return simplify_gen_binary (IOR, mode, in simplify_binary_operation_1()
3177 simplify_gen_binary (AND, mode, in simplify_binary_operation_1()
3179 gen_int_mode (tmp, mode)); in simplify_binary_operation_1()
3187 return simplify_gen_binary (AND, mode, in simplify_binary_operation_1()
3188 simplify_gen_unary (NOT, mode, in simplify_binary_operation_1()
3189 XEXP (op0, 1), mode), in simplify_binary_operation_1()
3195 return simplify_gen_binary (AND, mode, in simplify_binary_operation_1()
3196 simplify_gen_unary (NOT, mode, in simplify_binary_operation_1()
3197 XEXP (op0, 0), mode), in simplify_binary_operation_1()
3205 return simplify_gen_binary (AND, mode, XEXP (XEXP (op0, 0), 1), op1); in simplify_binary_operation_1()
3211 return simplify_gen_binary (AND, mode, XEXP (XEXP (op0, 0), 0), op1); in simplify_binary_operation_1()
3229 && HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
3242 return simplify_gen_binary (AND, mode, pmop[0], op1); in simplify_binary_operation_1()
3268 tem = simplify_gen_binary (GET_CODE (op0), mode, in simplify_binary_operation_1()
3270 return simplify_gen_binary (code, mode, tem, op1); in simplify_binary_operation_1()
3278 return simplify_gen_binary (AND, mode, op0, XEXP (op1, 1)); in simplify_binary_operation_1()
3284 return simplify_gen_binary (AND, mode, op1, XEXP (op0, 1)); in simplify_binary_operation_1()
3290 return simplify_gen_binary (AND, mode, op0, XEXP (op1, 0)); in simplify_binary_operation_1()
3296 return simplify_gen_binary (AND, mode, op1, XEXP (op0, 0)); in simplify_binary_operation_1()
3298 tem = simplify_byte_swapping_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3302 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3309 if (trueop0 == CONST0_RTX (mode) in simplify_binary_operation_1()
3313 return simplify_gen_binary (AND, mode, op1, trueop0); in simplify_binary_operation_1()
3317 if (trueop1 == CONST1_RTX (mode)) in simplify_binary_operation_1()
3319 tem = rtl_hooks.gen_lowpart_no_emit (mode, op0); in simplify_binary_operation_1()
3326 return simplify_gen_binary (LSHIFTRT, mode, op0, in simplify_binary_operation_1()
3327 gen_int_shift_amount (mode, val)); in simplify_binary_operation_1()
3332 if (SCALAR_FLOAT_MODE_P (mode)) in simplify_binary_operation_1()
3338 if (trueop0 == CONST0_RTX (mode) in simplify_binary_operation_1()
3339 && !HONOR_NANS (mode) in simplify_binary_operation_1()
3340 && !HONOR_SIGNED_ZEROS (mode) in simplify_binary_operation_1()
3344 if (trueop1 == CONST1_RTX (mode) in simplify_binary_operation_1()
3345 && !HONOR_SNANS (mode)) in simplify_binary_operation_1()
3349 && trueop1 != CONST0_RTX (mode)) in simplify_binary_operation_1()
3355 && !HONOR_SNANS (mode)) in simplify_binary_operation_1()
3356 return simplify_gen_unary (NEG, mode, op0, mode); in simplify_binary_operation_1()
3365 tem = const_double_from_real_value (d, mode); in simplify_binary_operation_1()
3366 return simplify_gen_binary (MULT, mode, op0, tem); in simplify_binary_operation_1()
3370 else if (SCALAR_INT_MODE_P (mode)) in simplify_binary_operation_1()
3373 if (trueop0 == CONST0_RTX (mode) in simplify_binary_operation_1()
3377 return simplify_gen_binary (AND, mode, op1, trueop0); in simplify_binary_operation_1()
3381 if (trueop1 == CONST1_RTX (mode)) in simplify_binary_operation_1()
3383 tem = rtl_hooks.gen_lowpart_no_emit (mode, op0); in simplify_binary_operation_1()
3390 rtx x = rtl_hooks.gen_lowpart_no_emit (mode, op0); in simplify_binary_operation_1()
3392 return simplify_gen_unary (NEG, mode, x, mode); in simplify_binary_operation_1()
3399 if (trueop0 == CONST0_RTX (mode)) in simplify_binary_operation_1()
3402 return simplify_gen_binary (AND, mode, op1, trueop0); in simplify_binary_operation_1()
3406 if (trueop1 == CONST1_RTX (mode)) in simplify_binary_operation_1()
3409 return simplify_gen_binary (AND, mode, op0, CONST0_RTX (mode)); in simplify_binary_operation_1()
3410 return CONST0_RTX (mode); in simplify_binary_operation_1()
3415 return simplify_gen_binary (AND, mode, op0, in simplify_binary_operation_1()
3417 mode)); in simplify_binary_operation_1()
3422 if (trueop0 == CONST0_RTX (mode)) in simplify_binary_operation_1()
3425 return simplify_gen_binary (AND, mode, op1, trueop0); in simplify_binary_operation_1()
3429 if (trueop1 == CONST1_RTX (mode) || trueop1 == constm1_rtx) in simplify_binary_operation_1()
3432 return simplify_gen_binary (AND, mode, op0, CONST0_RTX (mode)); in simplify_binary_operation_1()
3433 return CONST0_RTX (mode); in simplify_binary_operation_1()
3446 GET_MODE_UNIT_PRECISION (mode) / 2 + (code == ROTATE), in simplify_binary_operation_1()
3447 GET_MODE_UNIT_PRECISION (mode) - 1)) in simplify_binary_operation_1()
3449 int new_amount = GET_MODE_UNIT_PRECISION (mode) - INTVAL (trueop1); in simplify_binary_operation_1()
3450 rtx new_amount_rtx = gen_int_shift_amount (mode, new_amount); in simplify_binary_operation_1()
3452 mode, op0, new_amount_rtx); in simplify_binary_operation_1()
3457 if (trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
3459 if (trueop0 == CONST0_RTX (mode) && ! side_effects_p (op1)) in simplify_binary_operation_1()
3463 && HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
3464 && UINTVAL (trueop0) == GET_MODE_MASK (mode) in simplify_binary_operation_1()
3482 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_binary_operation_1()
3504 val = INTVAL (op1) & (GET_MODE_UNIT_PRECISION (mode) - 1); in simplify_binary_operation_1()
3506 return simplify_gen_binary (code, mode, op0, in simplify_binary_operation_1()
3507 gen_int_shift_amount (mode, val)); in simplify_binary_operation_1()
3514 if (trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
3516 if (trueop0 == CONST0_RTX (mode) && ! side_effects_p (op1)) in simplify_binary_operation_1()
3521 if (trueop1 == CONST0_RTX (mode)) in simplify_binary_operation_1()
3523 if (trueop0 == CONST0_RTX (mode) && ! side_effects_p (op1)) in simplify_binary_operation_1()
3530 && INTVAL (trueop1) < GET_MODE_UNIT_PRECISION (mode)) in simplify_binary_operation_1()
3537 return simplify_gen_relational (EQ, mode, inner_mode, in simplify_binary_operation_1()
3543 if (HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
3544 && mode_signbit_p (mode, trueop1) in simplify_binary_operation_1()
3549 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3555 if (HWI_COMPUTABLE_MODE_P (mode) in simplify_binary_operation_1()
3557 && (UINTVAL (trueop1) == GET_MODE_MASK (mode) >> 1) in simplify_binary_operation_1()
3562 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3568 if (trueop1 == CONST0_RTX (mode) && ! side_effects_p (op0)) in simplify_binary_operation_1()
3572 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3582 tem = simplify_associative_operation (code, mode, op0, op1); in simplify_binary_operation_1()
3599 if (op1 == CONST0_RTX (GET_MODE_INNER (mode))) in simplify_binary_operation_1()
3600 return gen_vec_duplicate (mode, op0); in simplify_binary_operation_1()
3601 if (valid_for_const_vector_p (mode, op0) in simplify_binary_operation_1()
3602 && valid_for_const_vector_p (mode, op1)) in simplify_binary_operation_1()
3603 return gen_const_vec_series (mode, op0, op1); in simplify_binary_operation_1()
3607 if (!VECTOR_MODE_P (mode)) in simplify_binary_operation_1()
3610 gcc_assert (mode == GET_MODE_INNER (GET_MODE (trueop0))); in simplify_binary_operation_1()
3684 tmp = gen_rtx_fmt_ee (code, mode, in simplify_binary_operation_1()
3692 gcc_assert (GET_MODE_INNER (mode) in simplify_binary_operation_1()
3699 return gen_vec_duplicate (mode, elt0); in simplify_binary_operation_1()
3707 gcc_assert (known_eq (n_elts, GET_MODE_NUNITS (mode))); in simplify_binary_operation_1()
3717 return gen_rtx_CONST_VECTOR (mode, v); in simplify_binary_operation_1()
3721 if (GET_MODE (trueop0) == mode) in simplify_binary_operation_1()
3743 && GET_MODE (XEXP (trueop0, 0)) == mode in simplify_binary_operation_1()
3745 && GET_MODE (XEXP (trueop0, 1)) == mode) in simplify_binary_operation_1()
3755 return simplify_gen_binary (VEC_CONCAT, mode, subop0, subop1); in simplify_binary_operation_1()
3762 && GET_MODE (trueop0) == mode) in simplify_binary_operation_1()
3772 return simplify_gen_binary (VEC_CONCAT, mode, subop0, subop1); in simplify_binary_operation_1()
3789 if (i0 == 0 && !side_effects_p (op1) && mode == mode0) in simplify_binary_operation_1()
3804 if (i0 == l0 && !side_effects_p (op0) && mode == mode1) in simplify_binary_operation_1()
3827 offset = INTVAL (XVECEXP (trueop1, 0, 0)) * GET_MODE_SIZE (mode); in simplify_binary_operation_1()
3830 while (GET_MODE (vec) != mode in simplify_binary_operation_1()
3860 if (GET_MODE (vec) == mode) in simplify_binary_operation_1()
3883 return simplify_gen_binary (VEC_SELECT, mode, XEXP (op0, 0), op1); in simplify_binary_operation_1()
3885 return simplify_gen_binary (VEC_SELECT, mode, XEXP (op0, 1), op1); in simplify_binary_operation_1()
3892 && GET_MODE (XEXP (trueop0, 0)) == mode) in simplify_binary_operation_1()
3896 gcc_assert (known_eq (XVECLEN (trueop1, 0), GET_MODE_NUNITS (mode))); in simplify_binary_operation_1()
3919 : GET_MODE_INNER (mode)); in simplify_binary_operation_1()
3922 : GET_MODE_INNER (mode)); in simplify_binary_operation_1()
3924 gcc_assert (VECTOR_MODE_P (mode)); in simplify_binary_operation_1()
3927 GET_MODE_SIZE (mode))); in simplify_binary_operation_1()
3930 gcc_assert (GET_MODE_INNER (mode) in simplify_binary_operation_1()
3933 gcc_assert (GET_MODE_INNER (mode) == op0_mode); in simplify_binary_operation_1()
3936 gcc_assert (GET_MODE_INNER (mode) in simplify_binary_operation_1()
3939 gcc_assert (GET_MODE_INNER (mode) == op1_mode); in simplify_binary_operation_1()
3948 && GET_MODE_NUNITS (mode).is_constant (&n_elts) in simplify_binary_operation_1()
3972 return gen_rtx_CONST_VECTOR (mode, v); in simplify_binary_operation_1()
3981 && GET_MODE (XEXP (trueop0, 0)) == mode) in simplify_binary_operation_1()
3992 return simplify_gen_binary (VEC_SELECT, mode, XEXP (trueop0, 0), in simplify_binary_operation_1()
4002 if (mode == GET_MODE (op0) in simplify_binary_operation_1()
4003 && mode == GET_MODE (op1) in simplify_binary_operation_1()
4022 tem = simplify_binary_operation (code, GET_MODE_INNER (mode), in simplify_binary_operation_1()
4025 return gen_vec_duplicate (mode, tem); in simplify_binary_operation_1()
4032 simplify_const_binary_operation (enum rtx_code code, machine_mode mode, in simplify_const_binary_operation() argument
4035 if (VECTOR_MODE_P (mode) in simplify_const_binary_operation()
4045 gcc_assert (known_eq (n_elts, GET_MODE_NUNITS (mode))); in simplify_const_binary_operation()
4051 rtx x = simplify_binary_operation (code, GET_MODE_INNER (mode), in simplify_const_binary_operation()
4054 if (!x || !valid_for_const_vector_p (mode, x)) in simplify_const_binary_operation()
4059 return gen_rtx_CONST_VECTOR (mode, v); in simplify_const_binary_operation()
4062 if (VECTOR_MODE_P (mode) in simplify_const_binary_operation()
4073 unsigned n_elts = GET_MODE_NUNITS (mode).to_constant (); in simplify_const_binary_operation()
4101 return gen_rtx_CONST_VECTOR (mode, v); in simplify_const_binary_operation()
4104 if (SCALAR_FLOAT_MODE_P (mode) in simplify_const_binary_operation()
4107 && mode == GET_MODE (op0) && mode == GET_MODE (op1)) in simplify_const_binary_operation()
4139 real_from_target (&r, tmp0, mode); in simplify_const_binary_operation()
4140 return const_double_from_real_value (r, mode); in simplify_const_binary_operation()
4151 if (HONOR_SNANS (mode) in simplify_const_binary_operation()
4156 real_convert (&f0, mode, opr0); in simplify_const_binary_operation()
4157 real_convert (&f1, mode, opr1); in simplify_const_binary_operation()
4161 && (flag_trapping_math || ! MODE_HAS_INFINITIES (mode))) in simplify_const_binary_operation()
4164 if (MODE_HAS_INFINITIES (mode) && HONOR_NANS (mode) in simplify_const_binary_operation()
4191 if (code == MULT && MODE_HAS_INFINITIES (mode) && HONOR_NANS (mode) in simplify_const_binary_operation()
4201 real_convert (&result, mode, &value); in simplify_const_binary_operation()
4207 && MODE_HAS_INFINITIES (mode) in simplify_const_binary_operation()
4220 || (MODE_COMPOSITE_P (mode) && !flag_unsafe_math_optimizations)) in simplify_const_binary_operation()
4224 return const_double_from_real_value (result, mode); in simplify_const_binary_operation()
4230 if (is_a <scalar_int_mode> (mode, &int_mode) in simplify_const_binary_operation()
4372 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_const_binary_operation()
4380 result = wi::to_poly_wide (op0, mode) + wi::to_poly_wide (op1, mode); in simplify_const_binary_operation()
4384 result = wi::to_poly_wide (op0, mode) - wi::to_poly_wide (op1, mode); in simplify_const_binary_operation()
4389 result = wi::to_poly_wide (op0, mode) * rtx_mode_t (op1, mode); in simplify_const_binary_operation()
4397 wide_int shift = rtx_mode_t (op1, mode); in simplify_const_binary_operation()
4402 result = wi::to_poly_wide (op0, mode) << shift; in simplify_const_binary_operation()
4410 || !can_ior_p (wi::to_poly_wide (op0, mode), in simplify_const_binary_operation()
4411 rtx_mode_t (op1, mode), &result)) in simplify_const_binary_operation()
4456 simplify_plus_minus (enum rtx_code code, machine_mode mode, rtx op0, in simplify_plus_minus() argument
4544 ops[n_ops].op = CONSTM1_RTX (mode); in simplify_plus_minus()
4557 ops[i].op = neg_const_int (mode, this_op); in simplify_plus_minus()
4586 lhs = gen_rtx_NEG (mode, ops[0].op); in simplify_plus_minus()
4600 return simplify_const_binary_operation (code, mode, lhs, rhs); in simplify_plus_minus()
4655 tem = simplify_binary_operation (ncode, mode, tem_lhs, in simplify_plus_minus()
4662 tem = simplify_binary_operation (ncode, mode, lhs, rhs); in simplify_plus_minus()
4683 tem = neg_const_int (mode, tem), lneg = 0; in simplify_plus_minus()
4733 return gen_rtx_fmt_ee (MINUS, mode, ops[1].op, ops[0].op); in simplify_plus_minus()
4747 value = neg_const_int (mode, value); in simplify_plus_minus()
4750 ops[n_ops - 2].op = plus_constant (mode, ops[n_ops - 2].op, in simplify_plus_minus()
4761 ops[0].op = gen_rtx_NEG (mode, ops[0].op); in simplify_plus_minus()
4775 mode, result, ops[i].op); in simplify_plus_minus()
4801 simplify_relational_operation (enum rtx_code code, machine_mode mode, in simplify_relational_operation() argument
4814 if (SCALAR_FLOAT_MODE_P (mode)) in simplify_relational_operation()
4817 return CONST0_RTX (mode); in simplify_relational_operation()
4821 val = FLOAT_STORE_FLAG_VALUE (mode); in simplify_relational_operation()
4822 return const_double_from_real_value (val, mode); in simplify_relational_operation()
4828 if (VECTOR_MODE_P (mode)) in simplify_relational_operation()
4831 return CONST0_RTX (mode); in simplify_relational_operation()
4834 rtx val = VECTOR_STORE_FLAG_VALUE (mode); in simplify_relational_operation()
4838 return CONST1_RTX (mode); in simplify_relational_operation()
4840 return gen_const_vec_duplicate (mode, val); in simplify_relational_operation()
4857 return simplify_gen_relational (code, mode, VOIDmode, in simplify_relational_operation()
4866 return simplify_relational_operation_1 (code, mode, cmp_mode, in simplify_relational_operation()
4877 simplify_relational_operation_1 (enum rtx_code code, machine_mode mode, in simplify_relational_operation_1() argument
4888 if (GET_MODE (op0) == mode) in simplify_relational_operation_1()
4891 return simplify_gen_relational (GET_CODE (op0), mode, VOIDmode, in simplify_relational_operation_1()
4898 return simplify_gen_relational (new_code, mode, VOIDmode, in simplify_relational_operation_1()
4915 return simplify_gen_relational ((code == LTU ? GEU : LTU), mode, in simplify_relational_operation_1()
4928 return simplify_gen_relational (LTU, mode, cmp_mode, in simplify_relational_operation_1()
4938 return simplify_gen_relational (code, mode, cmp_mode, op0, in simplify_relational_operation_1()
4945 return simplify_gen_relational (NE, mode, cmp_mode, op0, op1); in simplify_relational_operation_1()
4948 return simplify_gen_relational (EQ, mode, cmp_mode, op0, op1); in simplify_relational_operation_1()
4956 return simplify_gen_relational (GT, mode, cmp_mode, in simplify_relational_operation_1()
4960 return simplify_gen_relational (NE, mode, cmp_mode, in simplify_relational_operation_1()
4964 return simplify_gen_relational (LE, mode, cmp_mode, in simplify_relational_operation_1()
4968 return simplify_gen_relational (EQ, mode, cmp_mode, in simplify_relational_operation_1()
4978 return simplify_gen_relational (LT, mode, cmp_mode, op0, const0_rtx); in simplify_relational_operation_1()
4981 return simplify_gen_relational (GE, mode, cmp_mode, op0, const0_rtx); in simplify_relational_operation_1()
5006 return simplify_gen_relational (code, mode, cmp_mode, x, tem); in simplify_relational_operation_1()
5014 && is_int_mode (mode, &int_mode) in simplify_relational_operation_1()
5029 return simplify_gen_relational (code, mode, cmp_mode, in simplify_relational_operation_1()
5037 return simplify_gen_relational (code, mode, cmp_mode, XEXP (op0, 1), in simplify_relational_operation_1()
5038 CONST0_RTX (mode)); in simplify_relational_operation_1()
5045 return simplify_gen_relational (code, mode, cmp_mode, XEXP (op0, 0), in simplify_relational_operation_1()
5046 CONST0_RTX (mode)); in simplify_relational_operation_1()
5053 return simplify_gen_relational (code, mode, cmp_mode, XEXP (op0, 0), in simplify_relational_operation_1()
5073 return simplify_gen_relational (code, mode, cmp_mode, lhs, in simplify_relational_operation_1()
5086 return simplify_gen_relational (code, mode, cmp_mode, lhs, in simplify_relational_operation_1()
5095 return simplify_gen_relational (code, mode, cmp_mode, XEXP (op0, 0), in simplify_relational_operation_1()
5103 return simplify_gen_relational (code, mode, cmp_mode, in simplify_relational_operation_1()
5113 return simplify_gen_relational (EQ, mode, GET_MODE (XEXP (op0, 0)), in simplify_relational_operation_1()
5120 return simplify_gen_relational (NE, mode, GET_MODE (XEXP (op0, 0)), in simplify_relational_operation_1()
5199 machine_mode mode, in simplify_const_relational_operation() argument
5206 gcc_assert (mode != VOIDmode in simplify_const_relational_operation()
5217 mode = GET_MODE (op0); in simplify_const_relational_operation()
5219 mode = GET_MODE (op1); in simplify_const_relational_operation()
5249 if (INTEGRAL_MODE_P (mode) && trueop1 != const0_rtx in simplify_const_relational_operation()
5253 && (tem = simplify_binary_operation (MINUS, mode, op0, op1)) != 0 in simplify_const_relational_operation()
5257 mode, tem, const0_rtx); in simplify_const_relational_operation()
5259 if (! HONOR_NANS (mode) && code == ORDERED) in simplify_const_relational_operation()
5262 if (! HONOR_NANS (mode) && code == UNORDERED) in simplify_const_relational_operation()
5316 if ((GET_MODE_CLASS (mode) == MODE_INT || mode == VOIDmode) in simplify_const_relational_operation()
5322 machine_mode cmode = (mode == VOIDmode) ? MAX_MODE_INT : mode; in simplify_const_relational_operation()
5339 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_const_relational_operation()
5455 if (is_a <scalar_int_mode> (mode, &int_mode) in simplify_const_relational_operation()
5508 if (trueop1 == CONST0_RTX (mode) && !side_effects_p (trueop0) in simplify_const_relational_operation()
5517 if (!INTEGRAL_MODE_P (mode) && !HONOR_SNANS (mode)) in simplify_const_relational_operation()
5523 if (!INTEGRAL_MODE_P (mode) && !HONOR_NANS (mode)) in simplify_const_relational_operation()
5572 scalar_int_mode mode ATTRIBUTE_UNUSED in simplify_cond_clz_ctz()
5574 if (((op_code == CLZ && CLZ_DEFINED_VALUE_AT_ZERO (mode, op_val)) in simplify_cond_clz_ctz()
5575 || (op_code == CTZ && CTZ_DEFINED_VALUE_AT_ZERO (mode, op_val))) in simplify_cond_clz_ctz()
5588 simplify_ternary_operation (enum rtx_code code, machine_mode mode, in simplify_ternary_operation() argument
5604 tem = simplify_unary_operation (NEG, mode, op1, mode); in simplify_ternary_operation()
5610 tem = simplify_unary_operation (NEG, mode, op0, mode); in simplify_ternary_operation()
5621 return gen_rtx_FMA (mode, op0, op1, op2); in simplify_ternary_operation()
5629 && is_a <scalar_int_mode> (mode, &int_mode) in simplify_ternary_operation()
5671 && ! HONOR_NANS (mode) in simplify_ternary_operation()
5672 && ! HONOR_SIGNED_ZEROS (mode) in simplify_ternary_operation()
5682 && ! HONOR_NANS (mode) in simplify_ternary_operation()
5683 && ! HONOR_SIGNED_ZEROS (mode) in simplify_ternary_operation()
5714 rtx retval = gen_rtx_IF_THEN_ELSE (mode, new_op0, op2, op1); in simplify_ternary_operation()
5758 return simplify_gen_relational (code, mode, cmp_mode, in simplify_ternary_operation()
5772 return gen_rtx_IF_THEN_ELSE (mode, temp, op1, op2); in simplify_ternary_operation()
5778 gcc_assert (GET_MODE (op0) == mode); in simplify_ternary_operation()
5779 gcc_assert (GET_MODE (op1) == mode); in simplify_ternary_operation()
5780 gcc_assert (VECTOR_MODE_P (mode)); in simplify_ternary_operation()
5783 && GET_MODE_NUNITS (mode).is_constant (&n_elts)) in simplify_ternary_operation()
5809 return gen_rtx_CONST_VECTOR (mode, v); in simplify_ternary_operation()
5821 return simplify_gen_ternary (code, mode, mode, in simplify_ternary_operation()
5824 return simplify_gen_ternary (code, mode, mode, in simplify_ternary_operation()
5835 return simplify_gen_ternary (code, mode, mode, in simplify_ternary_operation()
5838 return simplify_gen_ternary (code, mode, mode, in simplify_ternary_operation()
5872 return simplify_gen_binary (VEC_CONCAT, mode, newop0, newop1); in simplify_ternary_operation()
5891 return simplify_gen_binary (VEC_CONCAT, mode, newop0, newop1); in simplify_ternary_operation()
5909 return simplify_gen_binary (VEC_CONCAT, mode, newop0, newop1); in simplify_ternary_operation()
6240 f.mode = outer_submode; in simplify_immed_subreg()
6595 const machine_mode mode = GET_MODE (x); in simplify_rtx() local
6600 return simplify_unary_operation (code, mode, in simplify_rtx()
6604 return simplify_gen_binary (code, mode, XEXP (x, 1), XEXP (x, 0)); in simplify_rtx()
6609 return simplify_binary_operation (code, mode, XEXP (x, 0), XEXP (x, 1)); in simplify_rtx()
6613 return simplify_ternary_operation (code, mode, GET_MODE (XEXP (x, 0)), in simplify_rtx()
6619 return simplify_relational_operation (code, mode, in simplify_rtx()
6629 return simplify_subreg (mode, SUBREG_REG (x), in simplify_rtx()
6657 make_test_reg (machine_mode mode) in make_test_reg() argument
6661 return gen_rtx_REG (mode, test_reg_num++); in make_test_reg()
6669 test_vector_ops_duplicate (machine_mode mode, rtx scalar_reg) in test_vector_ops_duplicate() argument
6671 scalar_mode inner_mode = GET_MODE_INNER (mode); in test_vector_ops_duplicate()
6672 rtx duplicate = gen_rtx_VEC_DUPLICATE (mode, scalar_reg); in test_vector_ops_duplicate()
6673 poly_uint64 nunits = GET_MODE_NUNITS (mode); in test_vector_ops_duplicate()
6674 if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT) in test_vector_ops_duplicate()
6678 rtx duplicate_not = gen_rtx_VEC_DUPLICATE (mode, not_scalar_reg); in test_vector_ops_duplicate()
6680 simplify_unary_operation (NOT, mode, in test_vector_ops_duplicate()
6681 duplicate_not, mode)); in test_vector_ops_duplicate()
6684 rtx duplicate_neg = gen_rtx_VEC_DUPLICATE (mode, neg_scalar_reg); in test_vector_ops_duplicate()
6686 simplify_unary_operation (NEG, mode, in test_vector_ops_duplicate()
6687 duplicate_neg, mode)); in test_vector_ops_duplicate()
6691 simplify_binary_operation (PLUS, mode, duplicate, in test_vector_ops_duplicate()
6692 CONST0_RTX (mode))); in test_vector_ops_duplicate()
6695 simplify_binary_operation (MINUS, mode, duplicate, in test_vector_ops_duplicate()
6696 CONST0_RTX (mode))); in test_vector_ops_duplicate()
6698 ASSERT_RTX_PTR_EQ (CONST0_RTX (mode), in test_vector_ops_duplicate()
6699 simplify_binary_operation (MINUS, mode, duplicate, in test_vector_ops_duplicate()
6721 poly_uint64 offset = subreg_lowpart_offset (inner_mode, mode); in test_vector_ops_duplicate()
6724 mode, offset)); in test_vector_ops_duplicate()
6742 poly_uint64 offset = subreg_lowpart_offset (narrower_mode, mode); in test_vector_ops_duplicate()
6745 mode, offset)); in test_vector_ops_duplicate()
6754 test_vector_ops_series (machine_mode mode, rtx scalar_reg) in test_vector_ops_series() argument
6757 scalar_mode inner_mode = GET_MODE_INNER (mode); in test_vector_ops_series()
6758 rtx duplicate = gen_rtx_VEC_DUPLICATE (mode, scalar_reg); in test_vector_ops_series()
6760 rtx series_0_r = gen_rtx_VEC_SERIES (mode, const0_rtx, scalar_reg); in test_vector_ops_series()
6761 rtx series_0_nr = gen_rtx_VEC_SERIES (mode, const0_rtx, neg_scalar_reg); in test_vector_ops_series()
6762 rtx series_nr_1 = gen_rtx_VEC_SERIES (mode, neg_scalar_reg, const1_rtx); in test_vector_ops_series()
6763 rtx series_r_m1 = gen_rtx_VEC_SERIES (mode, scalar_reg, constm1_rtx); in test_vector_ops_series()
6764 rtx series_r_r = gen_rtx_VEC_SERIES (mode, scalar_reg, scalar_reg); in test_vector_ops_series()
6765 rtx series_nr_nr = gen_rtx_VEC_SERIES (mode, neg_scalar_reg, in test_vector_ops_series()
6768 simplify_unary_operation (NEG, mode, series_0_nr, mode)); in test_vector_ops_series()
6770 simplify_unary_operation (NEG, mode, series_nr_1, mode)); in test_vector_ops_series()
6772 simplify_unary_operation (NEG, mode, series_nr_nr, mode)); in test_vector_ops_series()
6776 simplify_binary_operation (VEC_SERIES, mode, in test_vector_ops_series()
6780 rtx series_0_1 = gen_const_vec_series (mode, const0_rtx, const1_rtx); in test_vector_ops_series()
6781 rtx series_0_m1 = gen_const_vec_series (mode, const0_rtx, constm1_rtx); in test_vector_ops_series()
6782 rtx series_r_1 = gen_rtx_VEC_SERIES (mode, scalar_reg, const1_rtx); in test_vector_ops_series()
6784 simplify_binary_operation (PLUS, mode, series_0_r, in test_vector_ops_series()
6787 simplify_binary_operation (PLUS, mode, duplicate, in test_vector_ops_series()
6790 simplify_binary_operation (PLUS, mode, duplicate, in test_vector_ops_series()
6793 simplify_binary_operation (MINUS, mode, series_r_r, in test_vector_ops_series()
6796 simplify_binary_operation (MINUS, mode, duplicate, in test_vector_ops_series()
6799 simplify_binary_operation (MINUS, mode, duplicate, in test_vector_ops_series()
6802 simplify_binary_operation (VEC_SERIES, mode, const0_rtx, in test_vector_ops_series()
6813 machine_mode mode = (machine_mode) i; in test_vector_ops() local
6814 if (VECTOR_MODE_P (mode)) in test_vector_ops()
6816 rtx scalar_reg = make_test_reg (GET_MODE_INNER (mode)); in test_vector_ops()
6817 test_vector_ops_duplicate (mode, scalar_reg); in test_vector_ops()
6818 if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT in test_vector_ops()
6819 && maybe_gt (GET_MODE_NUNITS (mode), 2)) in test_vector_ops()
6820 test_vector_ops_series (mode, scalar_reg); in test_vector_ops()