Commit beaec479 by Michael Meissner

Do not split large constants, let define_split do it later if needed

From-SVN: r10662
parent 9fa9626b
...@@ -4045,24 +4045,11 @@ ...@@ -4045,24 +4045,11 @@
operands[1] = change_address (operands[1], SImode, operands[1] = change_address (operands[1], SImode,
XEXP (operands[1], 0)); XEXP (operands[1], 0));
} }
if (GET_CODE (operands[1]) == CONST_INT
&& (unsigned) (INTVAL (operands[1]) + 0x8000) >= 0x10000
&& (INTVAL (operands[1]) & 0xffff) != 0)
{
emit_move_insn (operands[0],
gen_rtx (CONST_INT, VOIDmode,
INTVAL (operands[1]) & 0xffff0000));
emit_insn (gen_iorsi3 (operands[0], operands[0],
gen_rtx (CONST_INT, VOIDmode,
INTVAL (operands[1]) & 0xffff)));
DONE;
}
}") }")
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,r,r,r,r,*q,*c*l,*h") [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,m,r,r,r,r,r,*q,*c*l,*h")
(match_operand:SI 1 "input_operand" "r,S,T,m,r,I,J,R,*h,r,r,0"))] (match_operand:SI 1 "input_operand" "r,S,T,m,r,I,J,n,R,*h,r,r,0"))]
"gpc_reg_operand (operands[0], SImode) "gpc_reg_operand (operands[0], SImode)
|| gpc_reg_operand (operands[1], SImode)" || gpc_reg_operand (operands[1], SImode)"
"@ "@
...@@ -4073,12 +4060,14 @@ ...@@ -4073,12 +4060,14 @@
{st%U0%X0|stw%U0%X0} %1,%0 {st%U0%X0|stw%U0%X0} %1,%0
{lil|li} %0,%1 {lil|li} %0,%1
{liu|lis} %0,%u1 {liu|lis} %0,%u1
#
{cal|la} %0,%1(%*) {cal|la} %0,%1(%*)
mf%1 %0 mf%1 %0
mt%0 %1 mt%0 %1
mt%0 %1 mt%0 %1
cror 0,0,0" cror 0,0,0"
[(set_attr "type" "*,load,load,load,*,*,*,*,*,*,mtjmpr,*")]) [(set_attr "type" "*,load,load,load,*,*,*,*,*,*,*,mtjmpr,*")
(set_attr "length" "4,4,4,4,4,4,4,8,4,4,4,4,4")])
;; Split a load of a large constant into the appropriate two-insn ;; Split a load of a large constant into the appropriate two-insn
;; sequence. ;; sequence.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment