re PR target/40977 (problem with code like this: res = ((uint64_t)resh << 32) | resl;)
PR target/40977 * config/m68k/m68k.md (ashldi_extsi): Turn into a define_insn_and_split. From-SVN: r207615
This commit is contained in:
parent
b581c05cd9
commit
63e6247dfe
|
@ -1,5 +1,9 @@
|
|||
2014-02-07 Jeff Law <law@redhat.com>
|
||||
|
||||
PR target/40977
|
||||
* config/m68k/m68k.md (ashldi_extsi): Turn into a
|
||||
define_insn_and_split.
|
||||
|
||||
* ipa-inline.c (inline_small_functions): Fix typos.
|
||||
|
||||
2014-02-07 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
|
||||
|
|
|
@ -4338,25 +4338,18 @@
|
|||
|
||||
;; arithmetic shift instructions
|
||||
;; We don't need the shift memory by 1 bit instruction
|
||||
|
||||
(define_insn "ashldi_extsi"
|
||||
(define_insn_and_split "ashldi_extsi"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=ro")
|
||||
(ashift:DI
|
||||
(match_operator:DI 2 "extend_operator"
|
||||
[(match_operand:SI 1 "general_operand" "rm")])
|
||||
(const_int 32)))]
|
||||
""
|
||||
{
|
||||
CC_STATUS_INIT;
|
||||
if (GET_CODE (operands[0]) == REG)
|
||||
operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1);
|
||||
else
|
||||
operands[2] = adjust_address (operands[0], SImode, 4);
|
||||
if (ADDRESS_REG_P (operands[0]))
|
||||
return "move%.l %1,%0\;sub%.l %2,%2";
|
||||
else
|
||||
return "move%.l %1,%0\;clr%.l %2";
|
||||
})
|
||||
"#"
|
||||
"&& reload_completed"
|
||||
[(set (match_dup 3) (match_dup 1))
|
||||
(set (match_dup 2) (const_int 0))]
|
||||
"split_di(operands, 1, operands + 2, operands + 3);")
|
||||
|
||||
(define_insn "ashldi_sexthi"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=m,a*d")
|
||||
|
|
Loading…
Reference in New Issue