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