;; 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,
(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"))
;; 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")))
#
#
#"
- [(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"
#
#
#"
- [(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
#
#
#"
- [(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"
#
#
#"
- [(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
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
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
"@
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")
"@
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")
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
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
"@
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")
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
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
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"
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
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"
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
"@
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")
"@
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")
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"
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
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"
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
"@
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")
"@
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")
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
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
"@
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
"@
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
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")
"@
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")
#
#
#"
- [(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
#
#
#"
- [(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
"@
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
"@
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
"@
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"
"@
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
"@
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"
"@
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
"@
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"
"@
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
"@
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"
"@
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
"@
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")
"@
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")
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
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")])
\f
;; Builtins to replace a division to generate FRE reciprocal estimate
"@
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")
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
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
"@
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")
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
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
"@
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")
"@
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")
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"
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
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"
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
"@
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")
"@
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")
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"
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
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"
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
"@
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")
"@
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")
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"
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
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"
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
"@
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")
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
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
"@
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")
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
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
"@
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")
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
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
#
#
#"
- [(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
#
#
#"
- [(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
"@
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
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