(ashldi3): Update pattern for (sign_extend (ashift ..)) to match the
current canonicalization. From-SVN: r7743
This commit is contained in:
parent
ee59bdfc51
commit
db19fab5ec
@ -785,26 +785,19 @@
|
||||
}"
|
||||
[(set_attr "type" "iaddlog,shiftcm")])
|
||||
|
||||
;; This is the same as (sign_extend (shift X [123])).
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=r")
|
||||
(ashiftrt:DI (ashift:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
|
||||
(match_operand:DI 2 "const_int_operand" "i"))
|
||||
(const_int 32)))]
|
||||
"INTVAL (operands[2]) >= 33 && INTVAL (operands[2]) <= 35"
|
||||
(sign_extend:DI
|
||||
(subreg:SI (ashift:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
|
||||
(match_operand:DI 2 "const_int_operand" "P"))
|
||||
0)))]
|
||||
"INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3"
|
||||
"*
|
||||
{
|
||||
switch (INTVAL (operands[2]))
|
||||
{
|
||||
case 33:
|
||||
return \"addl %r1,%r1,%0\";
|
||||
case 34:
|
||||
return \"s4addl %r1,0,%0\";
|
||||
case 35:
|
||||
return \"s8addl %r1,0,%0\";
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
if (operands[2] == const1_rtx)
|
||||
return \"addl %r1,%r1,%0\";
|
||||
else
|
||||
return \"s%P2addl %r1,0,%0\";
|
||||
}"
|
||||
[(set_attr "type" "iaddlog")])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user