re PR target/66217 (PowerPC rotate/shift/mask instructions not optimal)

PR target/66217
	PR target/67045
	* config/rs6000/rs6000.md (and<mode>3): Put a CONST_INT_P check
	around those cases that need one.

From-SVN: r226378
This commit is contained in:
Segher Boessenkool 2015-07-30 04:34:09 +02:00 committed by Segher Boessenkool
parent dfe8fbc22c
commit 2d590ab09c
2 changed files with 26 additions and 16 deletions

View File

@ -1,3 +1,10 @@
2015-07-29 Segher Boessenkool <segher@kernel.crashing.org>
PR target/66217
PR target/67045
* config/rs6000/rs6000.md (and<mode>3): Put a CONST_INT_P check
around those cases that need one.
2015-07-29 Aditya Kumar <hiraditya@msn.com>
* params.def (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Default to 3.

View File

@ -2898,26 +2898,29 @@
DONE;
}
if (rs6000_is_valid_and_mask (operands[2], <MODE>mode))
if (CONST_INT_P (operands[2]))
{
emit_insn (gen_and<mode>3_mask (operands[0], operands[1], operands[2]));
DONE;
}
if (rs6000_is_valid_and_mask (operands[2], <MODE>mode))
{
emit_insn (gen_and<mode>3_mask (operands[0], operands[1], operands[2]));
DONE;
}
if (logical_const_operand (operands[2], <MODE>mode)
&& rs6000_gen_cell_microcode)
{
emit_insn (gen_and<mode>3_imm (operands[0], operands[1], operands[2]));
DONE;
}
if (logical_const_operand (operands[2], <MODE>mode)
&& rs6000_gen_cell_microcode)
{
emit_insn (gen_and<mode>3_imm (operands[0], operands[1], operands[2]));
DONE;
}
if (rs6000_is_valid_2insn_and (operands[2], <MODE>mode))
{
rs6000_emit_2insn_and (<MODE>mode, operands, true, 0);
DONE;
}
if (rs6000_is_valid_2insn_and (operands[2], <MODE>mode))
{
rs6000_emit_2insn_and (<MODE>mode, operands, true, 0);
DONE;
}
operands[2] = force_reg (<MODE>mode, operands[2]);
operands[2] = force_reg (<MODE>mode, operands[2]);
}
})