diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2014-05-23 18:36:14 +0200 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2014-05-23 18:36:14 +0200 |
commit | e0528ed9e55edf892d0593696e28f483f409fe9f (patch) | |
tree | 7a938a4ca036507d5033c698af6c5e27d74a8ef7 /gcc/config/rs6000/power4.md | |
parent | 1263d6429d280b0a7e92b87b4ac392abf0ff7ff1 (diff) | |
download | gcc-e0528ed9e55edf892d0593696e28f483f409fe9f.zip gcc-e0528ed9e55edf892d0593696e28f483f409fe9f.tar.gz gcc-e0528ed9e55edf892d0593696e28f483f409fe9f.tar.bz2 |
rs6000: Make all multiply instructions one type
This uses the attributes "size" and "dot" to specify the differences:
imul3 -> mul size=8
imul2 -> mul size=16
imul -> mul size=32
lmul -> mul size=64
imul_compare -> mul size=32 dot=yes
lmul_compare -> mul size=64 dot=yes
From-SVN: r210867
Diffstat (limited to 'gcc/config/rs6000/power4.md')
-rw-r--r-- | gcc/config/rs6000/power4.md | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/config/rs6000/power4.md b/gcc/config/rs6000/power4.md index bafb429..2f50851 100644 --- a/gcc/config/rs6000/power4.md +++ b/gcc/config/rs6000/power4.md @@ -261,7 +261,9 @@ (define_bypass 4 "power4-compare" "power4-branch,power4-crlogical,power4-delayedcr,power4-mfcr,power4-mfcrf") (define_insn_reservation "power4-lmul-cmp" 7 - (and (eq_attr "type" "lmul_compare") + (and (eq_attr "type" "mul") + (eq_attr "dot" "yes") + (eq_attr "size" "64") (eq_attr "cpu" "power4")) "(du1_power4+du2_power4|du2_power4+du3_power4|du3_power4+du4_power4),\ ((iu1_power4*6,iu2_power4)\ @@ -271,7 +273,9 @@ (define_bypass 10 "power4-lmul-cmp" "power4-branch,power4-crlogical,power4-delayedcr,power4-mfcr,power4-mfcrf") (define_insn_reservation "power4-imul-cmp" 5 - (and (eq_attr "type" "imul_compare") + (and (eq_attr "type" "mul") + (eq_attr "dot" "yes") + (eq_attr "size" "32") (eq_attr "cpu" "power4")) "(du1_power4+du2_power4|du2_power4+du3_power4|du3_power4+du4_power4),\ ((iu1_power4*4,iu2_power4)\ @@ -281,19 +285,24 @@ (define_bypass 8 "power4-imul-cmp" "power4-branch,power4-crlogical,power4-delayedcr,power4-mfcr,power4-mfcrf") (define_insn_reservation "power4-lmul" 7 - (and (eq_attr "type" "lmul") + (and (eq_attr "type" "mul") + (eq_attr "dot" "no") + (eq_attr "size" "64") (eq_attr "cpu" "power4")) "(du1_power4|du2_power4|du3_power4|du4_power4),\ (iu1_power4*6|iu2_power4*6)") (define_insn_reservation "power4-imul" 5 - (and (eq_attr "type" "imul") + (and (eq_attr "type" "mul") + (eq_attr "dot" "no") + (eq_attr "size" "32") (eq_attr "cpu" "power4")) "(du1_power4|du2_power4|du3_power4|du4_power4),\ (iu1_power4*4|iu2_power4*4)") (define_insn_reservation "power4-imul3" 4 - (and (eq_attr "type" "imul2,imul3") + (and (eq_attr "type" "mul") + (eq_attr "size" "8,16") (eq_attr "cpu" "power4")) "(du1_power4|du2_power4|du3_power4|du4_power4),\ (iu1_power4*3|iu2_power4*3)") |