aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r--gcc/config/rs6000/rs6000.md89
1 files changed, 55 insertions, 34 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3b5eb7b..36553bb 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -159,13 +159,13 @@
;; computations.
(define_attr "type"
"integer,two,three,
- add,shift,insert,
+ add,logical,shift,insert,
mul,halfmul,div,
exts,cntlz,popcnt,isel,
load,store,fpload,fpstore,vecload,vecstore,
cmp,
branch,jmpreg,mfjmpr,mtjmpr,trap,isync,sync,load_l,store_c,
- compare,fast_compare,
+ compare,
cr_logical,delayed_cr,mfcr,mfcrf,mtcr,
fpcompare,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,
brinc,
@@ -179,7 +179,7 @@
(define_attr "size" "8,16,32,64" (const_string "32"))
;; Is this instruction record form ("dot", signed compare to 0, writing CR0)?
-;; This is used for mul.
+;; This is used for add, logical, shift, mul.
(define_attr "dot" "no,yes" (const_string "no"))
;; Does this instruction sign-extend its result?
@@ -877,7 +877,8 @@
"@
andi. %2,%1,0xff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -903,7 +904,8 @@
"@
andi. %0,%1,0xff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -997,7 +999,8 @@
"@
andi. %2,%1,0xff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -1023,7 +1026,8 @@
"@
andi. %0,%1,0xff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -1123,7 +1127,8 @@
"@
andi. %2,%1,0xffff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -1149,7 +1154,8 @@
"@
andi. %0,%1,0xffff
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -1952,7 +1958,8 @@
"@
nor. %2,%1,%1
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -1978,7 +1985,8 @@
"@
nor. %0,%1,%1
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -2907,7 +2915,8 @@
rlwinm %0,%1,0,%m2,%M2
andi. %0,%1,%b2
andis. %0,%1,%u2"
- [(set_attr "type" "*,*,fast_compare,fast_compare")])
+ [(set_attr "type" "*,*,logical,logical")
+ (set_attr "dot" "no,no,yes,yes")])
(define_insn "andsi3_nomc"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
@@ -2950,7 +2959,7 @@
#
#
#"
- [(set_attr "type" "fast_compare,fast_compare,fast_compare,shift,\
+ [(set_attr "type" "logical,logical,logical,shift,\
compare,compare,compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,8,8,8,8")])
@@ -2972,7 +2981,7 @@
#
#
#"
- [(set_attr "type" "compare,fast_compare,fast_compare,shift,compare,\
+ [(set_attr "type" "compare,logical,logical,shift,compare,\
compare,compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "8,4,4,4,8,8,8,8")])
@@ -3033,7 +3042,7 @@
#
#
#"
- [(set_attr "type" "fast_compare,fast_compare,fast_compare,shift,\
+ [(set_attr "type" "logical,logical,logical,shift,\
compare,compare,compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,8,8,8,8")])
@@ -3057,7 +3066,7 @@
#
#
#"
- [(set_attr "type" "compare,fast_compare,fast_compare,shift,compare,\
+ [(set_attr "type" "compare,logical,logical,shift,compare,\
compare,compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "8,4,4,4,8,8,8,8")])
@@ -3190,7 +3199,8 @@
"@
%q4. %3,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -3219,7 +3229,8 @@
"@
%q4. %0,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -3344,7 +3355,8 @@
"@
%q4. %3,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -3373,7 +3385,8 @@
"@
%q4. %0,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4550,7 +4563,7 @@
#
#
#"
- [(set_attr "type" "fast_compare,shift,shift,shift,shift,shift")
+ [(set_attr "type" "logical,shift,shift,shift,shift,shift")
(set_attr "var_shift" "no,yes,no,no,yes,no")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,8,8,8")])
@@ -4584,7 +4597,7 @@
#
#
#"
- [(set_attr "type" "fast_compare,shift,shift,shift,shift,shift")
+ [(set_attr "type" "logical,shift,shift,shift,shift,shift")
(set_attr "var_shift" "no,yes,no,no,yes,no")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,8,8,8")])
@@ -8071,7 +8084,8 @@
andi. %0,%1,%b2
andis. %0,%1,%u2
#"
- [(set_attr "type" "*,*,*,fast_compare,fast_compare,*")
+ [(set_attr "type" "*,*,*,logical,logical,*")
+ (set_attr "dot" "no,no,no,yes,yes,no")
(set_attr "length" "4,4,4,4,4,8")])
(define_insn "anddi3_nomc"
@@ -8129,8 +8143,8 @@
#
#
#"
- [(set_attr "type" "fast_compare,compare,shift,fast_compare,\
- fast_compare,compare,compare,compare,compare,compare,\
+ [(set_attr "type" "logical,compare,shift,logical,\
+ logical,compare,compare,compare,compare,compare,\
compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")])
@@ -8183,8 +8197,8 @@
#
#
#"
- [(set_attr "type" "fast_compare,compare,shift,fast_compare,\
- fast_compare,compare,compare,compare,compare,compare,\
+ [(set_attr "type" "logical,compare,shift,logical,\
+ logical,compare,compare,compare,compare,compare,\
compare,compare")
(set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")])
@@ -8316,7 +8330,8 @@
"@
%q4. %3,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -8345,7 +8360,8 @@
"@
%q4. %0,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -8405,7 +8421,8 @@
"@
%q4. %3,%2,%1
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -8434,7 +8451,8 @@
"@
%q4. %0,%2,%1
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -8471,7 +8489,8 @@
"@
%q4. %3,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -8500,7 +8519,8 @@
"@
%q4. %0,%1,%2
#"
- [(set_attr "type" "fast_compare,compare")
+ [(set_attr "type" "logical,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -9039,7 +9059,8 @@
cmp<wd>i %2,%0,0
mr. %0,%1
#"
- [(set_attr "type" "cmp,fast_compare,cmp")
+ [(set_attr "type" "cmp,logical,cmp")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8")])
(define_split