diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2015-07-20 18:32:55 +0200 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2015-07-20 18:32:55 +0200 |
commit | 824478c04c49adfe005b23ab33a25795ee4ccf84 (patch) | |
tree | 68b08aa12a213ce5ee6b8e1185c3edda0f8ca863 /gcc | |
parent | 7fc5cca3880987199e2a65dfd0b56162711f451d (diff) | |
download | gcc-824478c04c49adfe005b23ab33a25795ee4ccf84.zip gcc-824478c04c49adfe005b23ab33a25795ee4ccf84.tar.gz gcc-824478c04c49adfe005b23ab33a25795ee4ccf84.tar.bz2 |
* config/rs6000/rs6000.md (*lt0_disi): New.
From-SVN: r226006
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a4b22b..953e6b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2015-07-20 Segher Boessenkool <segher@kernel.crashing.org> + * config/rs6000/rs6000.md (*lt0_disi): New. + +2015-07-20 Segher Boessenkool <segher@kernel.crashing.org> + PR target/66217 * config/rs6000/constraints.md ("S", "T", "t"): Delete. Update "available letters" comment. diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 5727068..4e64a36 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -3475,6 +3475,17 @@ (set_attr "dot" "yes") (set_attr "length" "4,8")]) +; Special case for less-than-0. We can do it with just one machine +; instruction, but the generic optimizers do not realise it is cheap. +(define_insn "*lt0_disi" + [(set (match_operand:DI 0 "gpc_reg_operand" "=r") + (lt:DI (match_operand:SI 1 "gpc_reg_operand" "r") + (const_int 0)))] + "TARGET_POWERPC64" + "rlwinm %0,%1,1,31,31" + [(set_attr "type" "shift")]) + + ; Two forms for insert (the two arms of the IOR are not canonicalized, ; both are an AND so are the same precedence). |