aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/power4.md
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2014-05-23 18:36:14 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2014-05-23 18:36:14 +0200
commite0528ed9e55edf892d0593696e28f483f409fe9f (patch)
tree7a938a4ca036507d5033c698af6c5e27d74a8ef7 /gcc/config/rs6000/power4.md
parent1263d6429d280b0a7e92b87b4ac392abf0ff7ff1 (diff)
downloadgcc-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.md19
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)")