+2015-08-25 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/67346
+ * config/rs6000/rs6000.md (*ior<mode>_mask): Use a match_scratch.
+
2015-08-25 Segher Boessenkool <segher@kernel.crashing.org>
PR target/67344
(define_insn_and_split "*ior<mode>_mask"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(ior:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
- (match_operand:GPR 2 "const_int_operand" "n")))]
- "can_create_pseudo_p ()
- && !logical_const_operand (operands[2], <MODE>mode)
+ (match_operand:GPR 2 "const_int_operand" "n")))
+ (clobber (match_scratch:GPR 3 "=r"))]
+ "!logical_const_operand (operands[2], <MODE>mode)
&& rs6000_is_valid_mask (operands[2], NULL, NULL, <MODE>mode)"
"#"
"&& 1"
{
int nb, ne;
rs6000_is_valid_mask (operands[2], &nb, &ne, <MODE>mode);
- operands[3] = gen_reg_rtx (<MODE>mode);
+ if (GET_CODE (operands[3]) == SCRATCH)
+ operands[3] = gen_reg_rtx (<MODE>mode);
operands[4] = GEN_INT (ne);
operands[5] = GEN_INT (~UINTVAL (operands[2]));
}