darwin.md (load_macho_picbase): Ignore operand 0.
* config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0. (load_macho_picbase_{si,di}): Convert to LR hard reg. (call_indirect_nonlocal_darwin64): Same. (call_nonlocal_darwin64): Same. (call_value_indirect_nonlocal_darwin64): Same. (call_value_nonlocal_darwin64): Same. (sibcall_nonlocal_darwin64): Same. (sibcall_value_nonlocal_darwin64): Same. (sibcall_symbolic_64): Same. (sibcall_value_symbolic_64): Same. * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove LR pseudo. (rs6000_emit_load_toc_table): Same. * config/rs6000/altivec.md (restore_world): Convert to LR hard reg. * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg. (mull_call): Same. (divss_call): Same. (divus_call): Same. (quoss_call): Same. (quous_call): Same. (load_toc_v4_pic_si): Same (load_toc_v4_PIC_1): Same. (load_toc_v4_PIC_1b): Same. (call_indirect_aix{32,64}): Same. (call_value_indirect_aix{32,64}): Same. (call): Same. (call_value): Same. (call_local{32,64}): Same. (call_value_local{32,64}): Same. (call_indirect_nonlocal_aix{32,64}): Same. (call_nonlocal_aix{32,64}): Same. (call_value_indirect_nonlocal_aix{32,64}): Same. (call_value_nonlocal_aix{32,64}): Same. (call_indirect_nonlocal_sysv<mode>): Same. (call_nonlocal_sysv<mode>): Same. (call_value_indirect_nonlocal_sysv<mode>): Same. (call_value_nonlocal_sysv<mode>): Same. (sibcall): Same. (sibcall_local{32,64}): Same. (sibcall_value_local{32,64}): Same. (sibcall_nonlocal_aix{32,64}): Same. (sibcall_value_nonlocal_aix{32,64}): Same. (sibcall_value_nonlocal_aix{32,64}): Same. (sibcall_nonlocal_sysv<mode>): Same. (sibcall_value): Same. (sibcall_value_nonlocal_sysv<mode>): Same. From-SVN: r123193
This commit is contained in:
parent
3303be154c
commit
e65a3857a5
|
@ -1,3 +1,51 @@
|
|||
2007-03-25 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
|
||||
(load_macho_picbase_{si,di}): Convert to LR hard reg.
|
||||
(call_indirect_nonlocal_darwin64): Same.
|
||||
(call_nonlocal_darwin64): Same.
|
||||
(call_value_indirect_nonlocal_darwin64): Same.
|
||||
(call_value_nonlocal_darwin64): Same.
|
||||
(sibcall_nonlocal_darwin64): Same.
|
||||
(sibcall_value_nonlocal_darwin64): Same.
|
||||
(sibcall_symbolic_64): Same.
|
||||
(sibcall_value_symbolic_64): Same.
|
||||
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
|
||||
LR pseudo.
|
||||
(rs6000_emit_load_toc_table): Same.
|
||||
* config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
|
||||
* config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
|
||||
(mull_call): Same.
|
||||
(divss_call): Same.
|
||||
(divus_call): Same.
|
||||
(quoss_call): Same.
|
||||
(quous_call): Same.
|
||||
(load_toc_v4_pic_si): Same
|
||||
(load_toc_v4_PIC_1): Same.
|
||||
(load_toc_v4_PIC_1b): Same.
|
||||
(call_indirect_aix{32,64}): Same.
|
||||
(call_value_indirect_aix{32,64}): Same.
|
||||
(call): Same.
|
||||
(call_value): Same.
|
||||
(call_local{32,64}): Same.
|
||||
(call_value_local{32,64}): Same.
|
||||
(call_indirect_nonlocal_aix{32,64}): Same.
|
||||
(call_nonlocal_aix{32,64}): Same.
|
||||
(call_value_indirect_nonlocal_aix{32,64}): Same.
|
||||
(call_value_nonlocal_aix{32,64}): Same.
|
||||
(call_indirect_nonlocal_sysv<mode>): Same.
|
||||
(call_nonlocal_sysv<mode>): Same.
|
||||
(call_value_indirect_nonlocal_sysv<mode>): Same.
|
||||
(call_value_nonlocal_sysv<mode>): Same.
|
||||
(sibcall): Same.
|
||||
(sibcall_local{32,64}): Same.
|
||||
(sibcall_value_local{32,64}): Same.
|
||||
(sibcall_nonlocal_aix{32,64}): Same.
|
||||
(sibcall_value_nonlocal_aix{32,64}): Same.
|
||||
(sibcall_nonlocal_sysv<mode>): Same.
|
||||
(sibcall_value): Same.
|
||||
(sibcall_value_nonlocal_sysv<mode>): Same.
|
||||
|
||||
2007-03-24 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
|
||||
|
|
|
@ -312,7 +312,7 @@
|
|||
(define_insn "*restore_world"
|
||||
[(match_parallel 0 "restore_world_operation"
|
||||
[(return)
|
||||
(use (match_operand:SI 1 "register_operand" "l"))
|
||||
(use (reg:SI 65))
|
||||
(use (match_operand:SI 2 "call_operand" "s"))
|
||||
(clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])]
|
||||
"TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
|
||||
|
|
|
@ -245,28 +245,28 @@ Boston, MA 02110-1301, USA. */
|
|||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
{
|
||||
if (TARGET_32BIT)
|
||||
emit_insn (gen_load_macho_picbase_si (operands[0], operands[1]));
|
||||
emit_insn (gen_load_macho_picbase_si (operands[1]));
|
||||
else
|
||||
emit_insn (gen_load_macho_picbase_di (operands[0], operands[1]));
|
||||
emit_insn (gen_load_macho_picbase_di (operands[1]));
|
||||
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "load_macho_picbase_si"
|
||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
||||
(unspec:SI [(match_operand:SI 1 "immediate_operand" "s")
|
||||
[(set (reg:SI 65)
|
||||
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_LD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
"bcl 20,31,%1\\n%1:"
|
||||
"bcl 20,31,%0\\n%0:"
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "load_macho_picbase_di"
|
||||
[(set (match_operand:DI 0 "register_operand" "=l")
|
||||
(unspec:DI [(match_operand:DI 1 "immediate_operand" "s")
|
||||
[(set (reg:DI 65)
|
||||
(unspec:DI [(match_operand:DI 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_LD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic && TARGET_64BIT"
|
||||
"bcl 20,31,%1\\n%1:"
|
||||
"bcl 20,31,%0\\n%0:"
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "length" "4")])
|
||||
|
||||
|
@ -312,7 +312,7 @@ Boston, MA 02110-1301, USA. */
|
|||
[(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l,c,*l"))
|
||||
(match_operand 1 "" "g,g,g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l,l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"DEFAULT_ABI == ABI_DARWIN && TARGET_64BIT"
|
||||
{
|
||||
return "b%T0l";
|
||||
|
@ -324,7 +324,7 @@ Boston, MA 02110-1301, USA. */
|
|||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN)
|
||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
{
|
||||
|
@ -342,7 +342,7 @@ Boston, MA 02110-1301, USA. */
|
|||
(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l,c,*l"))
|
||||
(match_operand 2 "" "g,g,g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l,l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"DEFAULT_ABI == ABI_DARWIN"
|
||||
{
|
||||
return "b%T1l";
|
||||
|
@ -355,7 +355,7 @@ Boston, MA 02110-1301, USA. */
|
|||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN)
|
||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
{
|
||||
|
@ -372,7 +372,7 @@ Boston, MA 02110-1301, USA. */
|
|||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 1 "" ""))
|
||||
(use (match_operand 2 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(DEFAULT_ABI == ABI_DARWIN)
|
||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
|
@ -387,7 +387,7 @@ Boston, MA 02110-1301, USA. */
|
|||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 2 "" "")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(DEFAULT_ABI == ABI_DARWIN)
|
||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
|
@ -403,7 +403,7 @@ Boston, MA 02110-1301, USA. */
|
|||
[(call (mem:SI (match_operand:DI 0 "call_operand" "s,c")) ; 64
|
||||
(match_operand 1 "" ""))
|
||||
(use (match_operand 2 "" ""))
|
||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
|
||||
"*
|
||||
|
@ -423,7 +423,7 @@ Boston, MA 02110-1301, USA. */
|
|||
(call (mem:SI (match_operand:DI 1 "call_operand" "s,c"))
|
||||
(match_operand 2 "" "")))
|
||||
(use (match_operand:SI 3 "" ""))
|
||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
|
||||
"*
|
||||
|
|
|
@ -3444,17 +3444,17 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model)
|
|||
rs6000_emit_move (got, gsym, Pmode);
|
||||
else
|
||||
{
|
||||
rtx tempLR, tmp3, mem;
|
||||
rtx tmp3, mem;
|
||||
rtx first, last;
|
||||
|
||||
tempLR = gen_reg_rtx (Pmode);
|
||||
tmp1 = gen_reg_rtx (Pmode);
|
||||
tmp2 = gen_reg_rtx (Pmode);
|
||||
tmp3 = gen_reg_rtx (Pmode);
|
||||
mem = gen_const_mem (Pmode, tmp1);
|
||||
|
||||
first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym));
|
||||
emit_move_insn (tmp1, tempLR);
|
||||
first = emit_insn (gen_load_toc_v4_PIC_1b (gsym));
|
||||
emit_move_insn (tmp1,
|
||||
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||
emit_move_insn (tmp2, mem);
|
||||
emit_insn (gen_addsi3 (tmp3, tmp1, tmp2));
|
||||
last = emit_move_insn (got, tmp3);
|
||||
|
@ -13988,7 +13988,7 @@ rs6000_emit_load_toc_table (int fromprolog)
|
|||
if (TARGET_ELF && TARGET_SECURE_PLT && DEFAULT_ABI != ABI_AIX && flag_pic)
|
||||
{
|
||||
char buf[30];
|
||||
rtx lab, tmp1, tmp2, got, tempLR;
|
||||
rtx lab, tmp1, tmp2, got;
|
||||
|
||||
ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
|
||||
lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
|
||||
|
@ -14002,13 +14002,11 @@ rs6000_emit_load_toc_table (int fromprolog)
|
|||
tmp1 = gen_reg_rtx (Pmode);
|
||||
tmp2 = gen_reg_rtx (Pmode);
|
||||
}
|
||||
tempLR = (fromprolog
|
||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
||||
: gen_reg_rtx (Pmode));
|
||||
insn = emit_insn (gen_load_toc_v4_PIC_1 (tempLR, lab));
|
||||
insn = emit_insn (gen_load_toc_v4_PIC_1 (lab));
|
||||
if (fromprolog)
|
||||
rs6000_maybe_dead (insn);
|
||||
insn = emit_move_insn (tmp1, tempLR);
|
||||
insn = emit_move_insn (tmp1,
|
||||
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||
if (fromprolog)
|
||||
rs6000_maybe_dead (insn);
|
||||
insn = emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, got, lab));
|
||||
|
@ -14020,23 +14018,17 @@ rs6000_emit_load_toc_table (int fromprolog)
|
|||
}
|
||||
else if (TARGET_ELF && DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|
||||
{
|
||||
rtx tempLR = (fromprolog
|
||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
||||
: gen_reg_rtx (Pmode));
|
||||
|
||||
insn = emit_insn (gen_load_toc_v4_pic_si (tempLR));
|
||||
insn = emit_insn (gen_load_toc_v4_pic_si ());
|
||||
if (fromprolog)
|
||||
rs6000_maybe_dead (insn);
|
||||
insn = emit_move_insn (dest, tempLR);
|
||||
insn = emit_move_insn (dest,
|
||||
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||
if (fromprolog)
|
||||
rs6000_maybe_dead (insn);
|
||||
}
|
||||
else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2)
|
||||
{
|
||||
char buf[30];
|
||||
rtx tempLR = (fromprolog
|
||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
||||
: gen_reg_rtx (Pmode));
|
||||
rtx temp0 = (fromprolog
|
||||
? gen_rtx_REG (Pmode, 0)
|
||||
: gen_reg_rtx (Pmode));
|
||||
|
@ -14051,9 +14043,10 @@ rs6000_emit_load_toc_table (int fromprolog)
|
|||
ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
|
||||
symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
|
||||
|
||||
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR,
|
||||
symF)));
|
||||
rs6000_maybe_dead (emit_move_insn (dest, tempLR));
|
||||
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (symF)));
|
||||
rs6000_maybe_dead (emit_move_insn (dest,
|
||||
gen_rtx_REG (Pmode,
|
||||
LINK_REGISTER_REGNUM)));
|
||||
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
|
||||
symL,
|
||||
symF)));
|
||||
|
@ -14063,8 +14056,9 @@ rs6000_emit_load_toc_table (int fromprolog)
|
|||
rtx tocsym;
|
||||
|
||||
tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
|
||||
emit_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym));
|
||||
emit_move_insn (dest, tempLR);
|
||||
emit_insn (gen_load_toc_v4_PIC_1b (tocsym));
|
||||
emit_move_insn (dest,
|
||||
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||
emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest));
|
||||
}
|
||||
insn = emit_insn (gen_addsi3 (dest, temp0, dest));
|
||||
|
|
|
@ -2713,7 +2713,7 @@
|
|||
(lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 3))
|
||||
(sign_extend:DI (reg:SI 4)))
|
||||
(const_int 32))))
|
||||
(clobber (match_scratch:SI 0 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __mulh"
|
||||
[(set_attr "type" "imul")])
|
||||
|
@ -2722,7 +2722,7 @@
|
|||
[(set (reg:DI 3)
|
||||
(mult:DI (sign_extend:DI (reg:SI 3))
|
||||
(sign_extend:DI (reg:SI 4))))
|
||||
(clobber (match_scratch:SI 0 "=l"))
|
||||
(clobber (reg:SI 65))
|
||||
(clobber (reg:SI 0))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __mull"
|
||||
|
@ -2733,7 +2733,7 @@
|
|||
(div:SI (reg:SI 3) (reg:SI 4)))
|
||||
(set (reg:SI 4)
|
||||
(mod:SI (reg:SI 3) (reg:SI 4)))
|
||||
(clobber (match_scratch:SI 0 "=l"))
|
||||
(clobber (reg:SI 65))
|
||||
(clobber (reg:SI 0))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __divss"
|
||||
|
@ -2744,9 +2744,9 @@
|
|||
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
||||
(set (reg:SI 4)
|
||||
(umod:SI (reg:SI 3) (reg:SI 4)))
|
||||
(clobber (match_scratch:SI 0 "=l"))
|
||||
(clobber (reg:SI 65))
|
||||
(clobber (reg:SI 0))
|
||||
(clobber (match_scratch:CC 1 "=x"))
|
||||
(clobber (match_scratch:CC 0 "=x"))
|
||||
(clobber (reg:CC 69))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __divus"
|
||||
|
@ -2755,7 +2755,7 @@
|
|||
(define_insn "quoss_call"
|
||||
[(set (reg:SI 3)
|
||||
(div:SI (reg:SI 3) (reg:SI 4)))
|
||||
(clobber (match_scratch:SI 0 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __quoss"
|
||||
[(set_attr "type" "idiv")])
|
||||
|
@ -2763,9 +2763,9 @@
|
|||
(define_insn "quous_call"
|
||||
[(set (reg:SI 3)
|
||||
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
||||
(clobber (match_scratch:SI 0 "=l"))
|
||||
(clobber (reg:SI 65))
|
||||
(clobber (reg:SI 0))
|
||||
(clobber (match_scratch:CC 1 "=x"))
|
||||
(clobber (match_scratch:CC 0 "=x"))
|
||||
(clobber (reg:CC 69))]
|
||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||
"bla __quous"
|
||||
|
@ -10482,7 +10482,7 @@
|
|||
[(set_attr "type" "load")])
|
||||
|
||||
(define_insn "load_toc_v4_pic_si"
|
||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
||||
[(set (reg:SI 65)
|
||||
(unspec:SI [(const_int 0)] UNSPEC_TOC))]
|
||||
"DEFAULT_ABI == ABI_V4 && flag_pic == 1 && TARGET_32BIT"
|
||||
"bl _GLOBAL_OFFSET_TABLE_@local-4"
|
||||
|
@ -10490,21 +10490,21 @@
|
|||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "load_toc_v4_PIC_1"
|
||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
||||
(match_operand:SI 1 "immediate_operand" "s"))
|
||||
(use (unspec [(match_dup 1)] UNSPEC_TOC))]
|
||||
[(set (reg:SI 65)
|
||||
(match_operand:SI 0 "immediate_operand" "s"))
|
||||
(use (unspec [(match_dup 0)] UNSPEC_TOC))]
|
||||
"TARGET_ELF && DEFAULT_ABI != ABI_AIX
|
||||
&& (flag_pic == 2 || (flag_pic && TARGET_SECURE_PLT))"
|
||||
"bcl 20,31,%1\\n%1:"
|
||||
"bcl 20,31,%0\\n%0:"
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "load_toc_v4_PIC_1b"
|
||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
||||
(unspec:SI [(match_operand:SI 1 "immediate_operand" "s")]
|
||||
[(set (reg:SI 65)
|
||||
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")]
|
||||
UNSPEC_TOCPTR))]
|
||||
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
|
||||
"bcl 20,31,$+8\\n\\t.long %1-$"
|
||||
"bcl 20,31,$+8\\n\\t.long %0-$"
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "length" "8")])
|
||||
|
||||
|
@ -10610,7 +10610,7 @@
|
|||
(use (reg:SI 11))
|
||||
(set (reg:SI 2)
|
||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
"TARGET_32BIT"
|
||||
"
|
||||
{ operands[2] = gen_reg_rtx (SImode); }")
|
||||
|
@ -10632,7 +10632,7 @@
|
|||
(use (reg:DI 11))
|
||||
(set (reg:DI 2)
|
||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
"TARGET_64BIT"
|
||||
"
|
||||
{ operands[2] = gen_reg_rtx (DImode); }")
|
||||
|
@ -10655,7 +10655,7 @@
|
|||
(use (reg:SI 11))
|
||||
(set (reg:SI 2)
|
||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
"TARGET_32BIT"
|
||||
"
|
||||
{ operands[3] = gen_reg_rtx (SImode); }")
|
||||
|
@ -10678,7 +10678,7 @@
|
|||
(use (reg:DI 11))
|
||||
(set (reg:DI 2)
|
||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
"TARGET_64BIT"
|
||||
"
|
||||
{ operands[3] = gen_reg_rtx (DImode); }")
|
||||
|
@ -10688,7 +10688,7 @@
|
|||
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
||||
(match_operand 1 "" ""))
|
||||
(use (match_operand 2 "" ""))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
""
|
||||
"
|
||||
{
|
||||
|
@ -10758,7 +10758,7 @@
|
|||
(call (mem:SI (match_operand 1 "address_operand" ""))
|
||||
(match_operand 2 "" "")))
|
||||
(use (match_operand 3 "" ""))
|
||||
(clobber (scratch:SI))])]
|
||||
(clobber (reg:SI 65))])]
|
||||
""
|
||||
"
|
||||
{
|
||||
|
@ -10838,7 +10838,7 @@
|
|||
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
"*
|
||||
{
|
||||
|
@ -10857,7 +10857,7 @@
|
|||
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
"*
|
||||
{
|
||||
|
@ -10877,7 +10877,7 @@
|
|||
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
"*
|
||||
{
|
||||
|
@ -10898,7 +10898,7 @@
|
|||
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
"*
|
||||
{
|
||||
|
@ -10927,7 +10927,7 @@
|
|||
(use (reg:SI 11))
|
||||
(set (reg:SI 2)
|
||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||
(clobber (match_scratch:SI 2 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
|
||||
"b%T0l\;{l|lwz} 2,20(1)"
|
||||
[(set_attr "type" "jmpreg")
|
||||
|
@ -10937,7 +10937,7 @@
|
|||
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
||||
(match_operand 1 "" "g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||
(clobber (match_scratch:SI 3 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_32BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
|
@ -10952,7 +10952,7 @@
|
|||
(use (reg:DI 11))
|
||||
(set (reg:DI 2)
|
||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||
(clobber (match_scratch:SI 2 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
|
||||
"b%T0l\;ld 2,40(1)"
|
||||
[(set_attr "type" "jmpreg")
|
||||
|
@ -10962,7 +10962,7 @@
|
|||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
||||
(match_operand 1 "" "g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||
(clobber (match_scratch:SI 3 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
|
@ -10978,7 +10978,7 @@
|
|||
(use (reg:SI 11))
|
||||
(set (reg:SI 2)
|
||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
|
||||
"b%T1l\;{l|lwz} 2,20(1)"
|
||||
[(set_attr "type" "jmpreg")
|
||||
|
@ -10989,7 +10989,7 @@
|
|||
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
||||
(match_operand 2 "" "g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||
(clobber (match_scratch:SI 4 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_32BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
|
@ -11005,7 +11005,7 @@
|
|||
(use (reg:DI 11))
|
||||
(set (reg:DI 2)
|
||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
|
||||
"b%T1l\;ld 2,40(1)"
|
||||
[(set_attr "type" "jmpreg")
|
||||
|
@ -11016,7 +11016,7 @@
|
|||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
||||
(match_operand 2 "" "g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||
(clobber (match_scratch:SI 4 "=l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"TARGET_64BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
|
@ -11034,7 +11034,7 @@
|
|||
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l,c,*l"))
|
||||
(match_operand 1 "" "g,g,g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l,l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"DEFAULT_ABI == ABI_V4
|
||||
|| DEFAULT_ABI == ABI_DARWIN"
|
||||
{
|
||||
|
@ -11053,7 +11053,7 @@
|
|||
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 3 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN
|
||||
|| (DEFAULT_ABI == ABI_V4
|
||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0))"
|
||||
|
@ -11089,7 +11089,7 @@
|
|||
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l,c,*l"))
|
||||
(match_operand 2 "" "g,g,g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l,l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"DEFAULT_ABI == ABI_V4
|
||||
|| DEFAULT_ABI == ABI_DARWIN"
|
||||
{
|
||||
|
@ -11109,7 +11109,7 @@
|
|||
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(clobber (match_scratch:SI 4 "=l,l"))]
|
||||
(clobber (reg:SI 65))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN
|
||||
|| (DEFAULT_ABI == ABI_V4
|
||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0))"
|
||||
|
@ -11170,7 +11170,7 @@
|
|||
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
||||
(match_operand 1 "" ""))
|
||||
(use (match_operand 2 "" ""))
|
||||
(use (match_operand 3 "" ""))
|
||||
(use (reg:SI 65))
|
||||
(return)])]
|
||||
""
|
||||
"
|
||||
|
@ -11184,8 +11184,6 @@
|
|||
gcc_assert (GET_CODE (operands[1]) == CONST_INT);
|
||||
|
||||
operands[0] = XEXP (operands[0], 0);
|
||||
operands[3] = gen_reg_rtx (SImode);
|
||||
|
||||
}")
|
||||
|
||||
;; this and similar patterns must be marked as using LR, otherwise
|
||||
|
@ -11196,7 +11194,7 @@
|
|||
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
"*
|
||||
|
@ -11216,7 +11214,7 @@
|
|||
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
||||
(match_operand 1 "" "g,g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||
"*
|
||||
|
@ -11237,7 +11235,7 @@
|
|||
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
"*
|
||||
|
@ -11259,7 +11257,7 @@
|
|||
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
||||
(match_operand 2 "" "g,g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||
"*
|
||||
|
@ -11279,7 +11277,7 @@
|
|||
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
||||
(match_operand 1 "" "g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||
(use (match_operand:SI 3 "register_operand" "l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_32BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
|
@ -11292,7 +11290,7 @@
|
|||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
||||
(match_operand 1 "" "g"))
|
||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||
(use (match_operand:SI 3 "register_operand" "l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
|
@ -11306,7 +11304,7 @@
|
|||
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
||||
(match_operand 2 "" "g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||
(use (match_operand:SI 4 "register_operand" "l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_32BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
|
@ -11320,7 +11318,7 @@
|
|||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
||||
(match_operand 2 "" "g")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||
(use (match_operand:SI 4 "register_operand" "l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"TARGET_64BIT
|
||||
&& DEFAULT_ABI == ABI_AIX
|
||||
|
@ -11333,7 +11331,7 @@
|
|||
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 1 "" ""))
|
||||
(use (match_operand 2 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(DEFAULT_ABI == ABI_DARWIN
|
||||
|| DEFAULT_ABI == ABI_V4)
|
||||
|
@ -11364,7 +11362,7 @@
|
|||
(call (mem:SI (match_operand 1 "address_operand" ""))
|
||||
(match_operand 2 "" "")))
|
||||
(use (match_operand 3 "" ""))
|
||||
(use (match_operand 4 "" ""))
|
||||
(use (reg:SI 65))
|
||||
(return)])]
|
||||
""
|
||||
"
|
||||
|
@ -11378,8 +11376,6 @@
|
|||
gcc_assert (GET_CODE (operands[2]) == CONST_INT);
|
||||
|
||||
operands[1] = XEXP (operands[1], 0);
|
||||
operands[4] = gen_reg_rtx (SImode);
|
||||
|
||||
}")
|
||||
|
||||
(define_insn "*sibcall_value_nonlocal_sysv<mode>"
|
||||
|
@ -11387,7 +11383,7 @@
|
|||
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
||||
(match_operand 2 "" "")))
|
||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
||||
(use (reg:SI 65))
|
||||
(return)]
|
||||
"(DEFAULT_ABI == ABI_DARWIN
|
||||
|| DEFAULT_ABI == ABI_V4)
|
||||
|
@ -14381,12 +14377,12 @@
|
|||
|
||||
(define_insn "*save_fpregs_<mode>"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(clobber (match_operand:P 1 "register_operand" "=l"))
|
||||
(use (match_operand:P 2 "call_operand" "s"))
|
||||
(set (match_operand:DF 3 "memory_operand" "=m")
|
||||
(match_operand:DF 4 "gpc_reg_operand" "f"))])]
|
||||
[(clobber (reg:P 65))
|
||||
(use (match_operand:P 1 "call_operand" "s"))
|
||||
(set (match_operand:DF 2 "memory_operand" "=m")
|
||||
(match_operand:DF 3 "gpc_reg_operand" "f"))])]
|
||||
""
|
||||
"bl %z2"
|
||||
"bl %z1"
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "length" "4")])
|
||||
|
||||
|
@ -14475,12 +14471,12 @@
|
|||
(define_insn "*return_and_restore_fpregs_<mode>"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(return)
|
||||
(use (match_operand:P 1 "register_operand" "l"))
|
||||
(use (match_operand:P 2 "call_operand" "s"))
|
||||
(set (match_operand:DF 3 "gpc_reg_operand" "=f")
|
||||
(match_operand:DF 4 "memory_operand" "m"))])]
|
||||
(use (reg:P 65))
|
||||
(use (match_operand:P 1 "call_operand" "s"))
|
||||
(set (match_operand:DF 2 "gpc_reg_operand" "=f")
|
||||
(match_operand:DF 3 "memory_operand" "m"))])]
|
||||
""
|
||||
"b %z2")
|
||||
"b %z1")
|
||||
|
||||
; This is used in compiling the unwind routines.
|
||||
(define_expand "eh_return"
|
||||
|
|
Loading…
Reference in New Issue