summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/e5500.md
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-23 16:36:14 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-23 16:36:14 +0000
commit86c149d422c2af292cede60eef3f0c96985c872f (patch)
tree7a938a4ca036507d5033c698af6c5e27d74a8ef7 /gcc/config/rs6000/e5500.md
parent18f0a24b677b550b7271d18959ba994a681af6a4 (diff)
downloadgcc-86c149d422c2af292cede60eef3f0c96985c872f.tar.gz
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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210867 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/e5500.md')
-rw-r--r--gcc/config/rs6000/e5500.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/rs6000/e5500.md b/gcc/config/rs6000/e5500.md
index 51645266cb9..b04d0a3b75a 100644
--- a/gcc/config/rs6000/e5500.md
+++ b/gcc/config/rs6000/e5500.md
@@ -101,12 +101,16 @@
;; CFX - Multiply.
(define_insn_reservation "e5500_multiply" 4
- (and (eq_attr "type" "imul")
+ (and (eq_attr "type" "mul")
+ (eq_attr "dot" "no")
+ (eq_attr "size" "32")
(eq_attr "cpu" "ppce5500"))
"e5500_decode,e5500_cfx_stage0,e5500_cfx_stage1")
(define_insn_reservation "e5500_multiply_i" 5
- (and (eq_attr "type" "imul2,imul3,imul_compare")
+ (and (eq_attr "type" "mul")
+ (ior (eq_attr "dot" "yes")
+ (eq_attr "size" "8,16"))
(eq_attr "cpu" "ppce5500"))
"e5500_decode,e5500_cfx_stage0,\
e5500_cfx_stage0+e5500_cfx_stage1,e5500_cfx_stage1")