summaryrefslogtreecommitdiff
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.md308
1 files changed, 219 insertions, 89 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 0de26c925c4..c8709473f6d 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -159,13 +159,13 @@
;; computations.
(define_attr "type"
"integer,two,three,
- shift,var_shift_rotate,insert,
+ 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,delayed_compare,var_delayed_compare,
+ compare,fast_compare,
cr_logical,delayed_cr,mfcr,mfcrf,mtcr,
fpcompare,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,
brinc,
@@ -205,6 +205,10 @@
(const_string "yes")
(const_string "no")))
+;; Is this instruction using a shift amount from a register?
+;; This is used for shift insns.
+(define_attr "var_shift" "no,yes" (const_string "no"))
+
;; Define floating point instruction sub-types for use with Xfpu.md
(define_attr "fp_type" "fp_default,fp_addsub_s,fp_addsub_d,fp_mul_s,fp_mul_d,fp_div_s,fp_div_d,fp_maddsub_s,fp_maddsub_d,fp_sqrt_s,fp_sqrt_d" (const_string "fp_default"))
@@ -236,11 +240,13 @@
;; If this instruction is microcoded on the CELL processor
; The default for load extended, the recorded instructions and rotate/shifts by a variable is always microcoded
(define_attr "cell_micro" "not,conditional,always"
- (if_then_else (ior (eq_attr "type" "compare,delayed_compare,var_shift_rotate,var_delayed_compare")
- (and (eq_attr "type" "mul")
+ (if_then_else (ior (eq_attr "type" "compare")
+ (and (eq_attr "type" "shift,mul")
(eq_attr "dot" "yes"))
(and (eq_attr "type" "load")
- (eq_attr "sign_extend" "yes")))
+ (eq_attr "sign_extend" "yes"))
+ (and (eq_attr "type" "shift")
+ (eq_attr "var_shift" "yes")))
(const_string "always")
(const_string "not")))
@@ -2936,8 +2942,9 @@
#
#
#"
- [(set_attr "type" "fast_compare,fast_compare,fast_compare,delayed_compare,\
+ [(set_attr "type" "fast_compare,fast_compare,fast_compare,shift,\
compare,compare,compare,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,8,8,8,8")])
(define_insn "*andsi3_internal3_mc"
@@ -2957,8 +2964,9 @@
#
#
#"
- [(set_attr "type" "compare,fast_compare,fast_compare,delayed_compare,compare,\
+ [(set_attr "type" "compare,fast_compare,fast_compare,shift,compare,\
compare,compare,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "8,4,4,4,8,8,8,8")])
(define_split
@@ -3017,8 +3025,9 @@
#
#
#"
- [(set_attr "type" "fast_compare,fast_compare,fast_compare,delayed_compare,\
+ [(set_attr "type" "fast_compare,fast_compare,fast_compare,shift,\
compare,compare,compare,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,4,4,8,8,8,8")])
(define_insn "*andsi3_internal5_mc"
@@ -3040,8 +3049,9 @@
#
#
#"
- [(set_attr "type" "compare,fast_compare,fast_compare,delayed_compare,compare,\
+ [(set_attr "type" "compare,fast_compare,fast_compare,shift,compare,\
compare,compare,compare")
+ (set_attr "dot" "yes")
(set_attr "length" "8,4,4,4,8,8,8,8")])
(define_split
@@ -3675,7 +3685,8 @@
operands[3] = GEN_INT (start + size);
return \"rlwinm. %4,%1,%3,%s2,31\";
}"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -3726,7 +3737,8 @@
operands[3] = GEN_INT (start + size);
return \"rlwinm. %0,%1,%3,%s2,31\";
}"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -3817,7 +3829,8 @@
"@
rlwnm %0,%1,%2,0xffffffff
rlwinm %0,%1,%h2,0xffffffff"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotlsi3_64"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -3828,7 +3841,8 @@
"@
rlwnm %0,%1,%2,0xffffffff
rlwinm %0,%1,%h2,0xffffffff"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotlsi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -3842,7 +3856,9 @@
rlwinm. %3,%1,%h2,0xffffffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -3872,7 +3888,9 @@
rlwinm. %0,%1,%h2,0xffffffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -3899,7 +3917,8 @@
"@
rlwnm %0,%1,%2,%m3,%M3
rlwinm %0,%1,%h2,%m3,%M3"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotlsi3_internal5"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -3915,7 +3934,9 @@
rlwinm. %4,%1,%h2,%m3,%M3
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -3951,7 +3972,9 @@
rlwinm. %0,%1,%h2,%m3,%M3
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4011,7 +4034,9 @@
rlwinm. %3,%1,%h2,0xff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotlsi3_internal8be"
@@ -4028,7 +4053,9 @@
rlwinm. %3,%1,%h2,0xff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4082,7 +4109,9 @@
rlwinm. %0,%1,%h2,0xff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotlsi3_internal9be"
@@ -4100,7 +4129,9 @@
rlwinm. %0,%1,%h2,0xff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4147,7 +4178,8 @@
"@
rlwnm %0,%1,%2,0xffff
rlwinm %0,%1,%h2,0xffff"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotlsi3_internal10be"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
@@ -4159,7 +4191,8 @@
"@
rlwnm %0,%1,%2,0xffff
rlwinm %0,%1,%h2,0xffff"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotlsi3_internal11le"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -4175,7 +4208,9 @@
rlwinm. %3,%1,%h2,0xffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotlsi3_internal11be"
@@ -4192,7 +4227,9 @@
rlwinm. %3,%1,%h2,0xffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4246,7 +4283,9 @@
rlwinm. %0,%1,%h2,0xffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotlsi3_internal12be"
@@ -4264,7 +4303,9 @@
rlwinm. %0,%1,%h2,0xffff
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4309,7 +4350,8 @@
"@
slw %0,%1,%2
slwi %0,%1,%h2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*ashlsi3_64"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -4320,7 +4362,8 @@
"@
slw %0,%1,%2
slwi %0,%1,%h2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -4334,7 +4377,9 @@
slwi. %3,%1,%h2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4364,7 +4409,9 @@
slwi. %0,%1,%h2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4402,7 +4449,8 @@
"@
rlwinm. %4,%1,%h2,%m3,%M3
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4435,7 +4483,8 @@
"@
rlwinm. %0,%1,%h2,%m3,%M3
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4464,7 +4513,8 @@
mr %0,%1
srw %0,%1,%2
srwi %0,%1,%h2"
- [(set_attr "type" "integer,var_shift_rotate,shift")])
+ [(set_attr "type" "integer,shift,shift")
+ (set_attr "var_shift" "no,yes,no")])
(define_insn "*lshrsi3_64"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -4475,7 +4525,8 @@
"@
srw %0,%1,%2
srwi %0,%1,%h2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,?y,?y,?y")
@@ -4491,7 +4542,9 @@
#
#
#"
- [(set_attr "type" "fast_compare,var_delayed_compare,delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "fast_compare,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")])
(define_split
@@ -4523,7 +4576,9 @@
#
#
#"
- [(set_attr "type" "fast_compare,var_delayed_compare,delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "fast_compare,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")])
(define_split
@@ -4561,7 +4616,8 @@
"@
rlwinm. %4,%1,%s2,%m3,%M3
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4594,7 +4650,8 @@
"@
rlwinm. %0,%1,%s2,%m3,%M3
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4645,7 +4702,8 @@
"@
rlwinm. %3,%1,%s2,0xff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_insn "*lshiftrt_internal2be"
@@ -4661,7 +4719,8 @@
"@
rlwinm. %3,%1,%s2,0xff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4716,7 +4775,8 @@
"@
rlwinm. %0,%1,%s2,0xff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_insn "*lshiftrt_internal3be"
@@ -4733,7 +4793,8 @@
"@
rlwinm. %0,%1,%s2,0xff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4803,7 +4864,8 @@
"@
rlwinm. %3,%1,%s2,0xffff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_insn "*lshiftrt_internal5be"
@@ -4819,7 +4881,8 @@
"@
rlwinm. %3,%1,%s2,0xffff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4874,7 +4937,8 @@
"@
rlwinm. %0,%1,%s2,0xffff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_insn "*lshiftrt_internal5be"
@@ -4891,7 +4955,8 @@
"@
rlwinm. %0,%1,%s2,0xffff
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "4,8")])
(define_split
@@ -4938,7 +5003,8 @@
"@
sraw %0,%1,%2
srawi %0,%1,%h2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*ashrsi3_64"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -4949,7 +5015,8 @@
"@
sraw %0,%1,%2
srawi %0,%1,%h2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -4963,7 +5030,9 @@
srawi. %3,%1,%h2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -4993,7 +5062,9 @@
srawi. %0,%1,%h2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
;; Builtins to replace a division to generate FRE reciprocal estimate
@@ -6877,7 +6948,8 @@
"@
rldcl %0,%1,%2,0
rldicl %0,%1,%H2,0"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -6891,7 +6963,9 @@
rldicl. %3,%1,%H2,0
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -6921,7 +6995,9 @@
rldicl. %0,%1,%H2,0
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -6948,7 +7024,8 @@
"@
rldc%B3 %0,%1,%2,%S3
rldic%B3 %0,%1,%H2,%S3"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal5"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -6964,7 +7041,9 @@
rldic%B3. %4,%1,%H2,%S3
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7000,7 +7079,9 @@
rldic%B3. %0,%1,%H2,%S3
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7030,7 +7111,8 @@
"@
rldcl %0,%1,%2,56
rldicl %0,%1,%H2,56"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal7be"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -7042,7 +7124,8 @@
"@
rldcl %0,%1,%2,56
rldicl %0,%1,%H2,56"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal8le"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7058,7 +7141,9 @@
rldicl. %3,%1,%H2,56
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal8be"
@@ -7075,7 +7160,9 @@
rldicl. %3,%1,%H2,56
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7129,7 +7216,9 @@
rldicl. %0,%1,%H2,56
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal9be"
@@ -7147,7 +7236,9 @@
rldicl. %0,%1,%H2,56
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7194,7 +7285,8 @@
"@
rldcl %0,%1,%2,48
rldicl %0,%1,%H2,48"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal10be"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -7206,7 +7298,8 @@
"@
rldcl %0,%1,%2,48
rldicl %0,%1,%H2,48"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal11le"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7222,7 +7315,9 @@
rldicl. %3,%1,%H2,48
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal11be"
@@ -7239,7 +7334,9 @@
rldicl. %3,%1,%H2,48
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7293,7 +7390,9 @@
rldicl. %0,%1,%H2,48
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal12be"
@@ -7311,7 +7410,9 @@
rldicl. %0,%1,%H2,48
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7358,7 +7459,8 @@
"@
rldcl %0,%1,%2,32
rldicl %0,%1,%H2,32"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal13be"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
@@ -7370,7 +7472,8 @@
"@
rldcl %0,%1,%2,32
rldicl %0,%1,%H2,32"
- [(set_attr "type" "var_shift_rotate,integer")])
+ [(set_attr "type" "shift,integer")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*rotldi3_internal14le"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7386,7 +7489,9 @@
rldicl. %3,%1,%H2,32
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal14be"
@@ -7403,7 +7508,9 @@
rldicl. %3,%1,%H2,32
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7457,7 +7564,9 @@
rldicl. %0,%1,%H2,32
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_insn "*rotldi3_internal15be"
@@ -7475,7 +7584,9 @@
rldicl. %0,%1,%H2,32
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7527,7 +7638,8 @@
"@
sld %0,%1,%2
sldi %0,%1,%H2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*ashldi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7541,7 +7653,9 @@
sldi. %3,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7571,7 +7685,9 @@
sldi. %0,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7756,7 +7872,8 @@
"@
srd %0,%1,%2
srdi %0,%1,%H2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*lshrdi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7770,7 +7887,9 @@
srdi. %3,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7800,7 +7919,9 @@
srdi. %0,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7844,7 +7965,8 @@
"@
srad %0,%1,%2
sradi %0,%1,%H2"
- [(set_attr "type" "var_shift_rotate,shift")])
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no")])
(define_insn "*ashrdi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,?y,?y")
@@ -7858,7 +7980,9 @@
sradi. %3,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7888,7 +8012,9 @@
sradi. %0,%1,%H2
#
#"
- [(set_attr "type" "var_delayed_compare,delayed_compare,var_delayed_compare,delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "var_shift" "yes,no,yes,no")
+ (set_attr "dot" "yes")
(set_attr "length" "4,4,8,8")])
(define_split
@@ -7995,9 +8121,10 @@
#
#
#"
- [(set_attr "type" "fast_compare,compare,delayed_compare,fast_compare,\
+ [(set_attr "type" "fast_compare,compare,shift,fast_compare,\
fast_compare,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")])
(define_split
@@ -8048,9 +8175,10 @@
#
#
#"
- [(set_attr "type" "fast_compare,compare,delayed_compare,fast_compare,\
+ [(set_attr "type" "fast_compare,compare,shift,fast_compare,\
fast_compare,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")])
(define_split
@@ -13068,7 +13196,8 @@
"@
mfcr %3%Q2\;rlwinm. %3,%3,%J1,1
#"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "8,16")])
(define_split
@@ -13149,7 +13278,8 @@
return \"mfcr %4%Q2\;rlwinm. %4,%4,%5,%6,%6\";
}"
- [(set_attr "type" "delayed_compare")
+ [(set_attr "type" "shift")
+ (set_attr "dot" "yes")
(set_attr "length" "8,16")])
(define_split