diff options
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 89 |
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 |