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>
|
2007-03-24 Paul Brook <paul@codesourcery.com>
|
||||||
|
|
||||||
* config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
|
* config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
|
||||||
|
|
|
@ -312,7 +312,7 @@
|
||||||
(define_insn "*restore_world"
|
(define_insn "*restore_world"
|
||||||
[(match_parallel 0 "restore_world_operation"
|
[(match_parallel 0 "restore_world_operation"
|
||||||
[(return)
|
[(return)
|
||||||
(use (match_operand:SI 1 "register_operand" "l"))
|
(use (reg:SI 65))
|
||||||
(use (match_operand:SI 2 "call_operand" "s"))
|
(use (match_operand:SI 2 "call_operand" "s"))
|
||||||
(clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])]
|
(clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])]
|
||||||
"TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
|
"TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
|
||||||
|
|
|
@ -245,28 +245,28 @@ Boston, MA 02110-1301, USA. */
|
||||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||||
{
|
{
|
||||||
if (TARGET_32BIT)
|
if (TARGET_32BIT)
|
||||||
emit_insn (gen_load_macho_picbase_si (operands[0], operands[1]));
|
emit_insn (gen_load_macho_picbase_si (operands[1]));
|
||||||
else
|
else
|
||||||
emit_insn (gen_load_macho_picbase_di (operands[0], operands[1]));
|
emit_insn (gen_load_macho_picbase_di (operands[1]));
|
||||||
|
|
||||||
DONE;
|
DONE;
|
||||||
})
|
})
|
||||||
|
|
||||||
(define_insn "load_macho_picbase_si"
|
(define_insn "load_macho_picbase_si"
|
||||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
[(set (reg:SI 65)
|
||||||
(unspec:SI [(match_operand:SI 1 "immediate_operand" "s")
|
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")
|
||||||
(pc)] UNSPEC_LD_MPIC))]
|
(pc)] UNSPEC_LD_MPIC))]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||||
"bcl 20,31,%1\\n%1:"
|
"bcl 20,31,%0\\n%0:"
|
||||||
[(set_attr "type" "branch")
|
[(set_attr "type" "branch")
|
||||||
(set_attr "length" "4")])
|
(set_attr "length" "4")])
|
||||||
|
|
||||||
(define_insn "load_macho_picbase_di"
|
(define_insn "load_macho_picbase_di"
|
||||||
[(set (match_operand:DI 0 "register_operand" "=l")
|
[(set (reg:DI 65)
|
||||||
(unspec:DI [(match_operand:DI 1 "immediate_operand" "s")
|
(unspec:DI [(match_operand:DI 0 "immediate_operand" "s")
|
||||||
(pc)] UNSPEC_LD_MPIC))]
|
(pc)] UNSPEC_LD_MPIC))]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic && TARGET_64BIT"
|
"(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 "type" "branch")
|
||||||
(set_attr "length" "4")])
|
(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"))
|
[(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l,c,*l"))
|
||||||
(match_operand 1 "" "g,g,g,g"))
|
(match_operand 1 "" "g,g,g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
|
(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"
|
"DEFAULT_ABI == ABI_DARWIN && TARGET_64BIT"
|
||||||
{
|
{
|
||||||
return "b%T0l";
|
return "b%T0l";
|
||||||
|
@ -324,7 +324,7 @@ Boston, MA 02110-1301, USA. */
|
||||||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
|
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(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_DARWIN)
|
||||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
&& (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"))
|
(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l,c,*l"))
|
||||||
(match_operand 2 "" "g,g,g,g")))
|
(match_operand 2 "" "g,g,g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
|
(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"
|
"DEFAULT_ABI == ABI_DARWIN"
|
||||||
{
|
{
|
||||||
return "b%T1l";
|
return "b%T1l";
|
||||||
|
@ -355,7 +355,7 @@ Boston, MA 02110-1301, USA. */
|
||||||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
|
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(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_DARWIN)
|
||||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
&& (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"))
|
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 1 "" ""))
|
(match_operand 1 "" ""))
|
||||||
(use (match_operand 2 "immediate_operand" "O,n"))
|
(use (match_operand 2 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN)
|
"(DEFAULT_ABI == ABI_DARWIN)
|
||||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
&& (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"))
|
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 2 "" "")))
|
(match_operand 2 "" "")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN)
|
"(DEFAULT_ABI == ABI_DARWIN)
|
||||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
&& (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
|
[(call (mem:SI (match_operand:DI 0 "call_operand" "s,c")) ; 64
|
||||||
(match_operand 1 "" ""))
|
(match_operand 1 "" ""))
|
||||||
(use (match_operand 2 "" ""))
|
(use (match_operand 2 "" ""))
|
||||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
|
"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"))
|
(call (mem:SI (match_operand:DI 1 "call_operand" "s,c"))
|
||||||
(match_operand 2 "" "")))
|
(match_operand 2 "" "")))
|
||||||
(use (match_operand:SI 3 "" ""))
|
(use (match_operand:SI 3 "" ""))
|
||||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
|
"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);
|
rs6000_emit_move (got, gsym, Pmode);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rtx tempLR, tmp3, mem;
|
rtx tmp3, mem;
|
||||||
rtx first, last;
|
rtx first, last;
|
||||||
|
|
||||||
tempLR = gen_reg_rtx (Pmode);
|
|
||||||
tmp1 = gen_reg_rtx (Pmode);
|
tmp1 = gen_reg_rtx (Pmode);
|
||||||
tmp2 = gen_reg_rtx (Pmode);
|
tmp2 = gen_reg_rtx (Pmode);
|
||||||
tmp3 = gen_reg_rtx (Pmode);
|
tmp3 = gen_reg_rtx (Pmode);
|
||||||
mem = gen_const_mem (Pmode, tmp1);
|
mem = gen_const_mem (Pmode, tmp1);
|
||||||
|
|
||||||
first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym));
|
first = emit_insn (gen_load_toc_v4_PIC_1b (gsym));
|
||||||
emit_move_insn (tmp1, tempLR);
|
emit_move_insn (tmp1,
|
||||||
|
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||||
emit_move_insn (tmp2, mem);
|
emit_move_insn (tmp2, mem);
|
||||||
emit_insn (gen_addsi3 (tmp3, tmp1, tmp2));
|
emit_insn (gen_addsi3 (tmp3, tmp1, tmp2));
|
||||||
last = emit_move_insn (got, tmp3);
|
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)
|
if (TARGET_ELF && TARGET_SECURE_PLT && DEFAULT_ABI != ABI_AIX && flag_pic)
|
||||||
{
|
{
|
||||||
char buf[30];
|
char buf[30];
|
||||||
rtx lab, tmp1, tmp2, got, tempLR;
|
rtx lab, tmp1, tmp2, got;
|
||||||
|
|
||||||
ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
|
ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
|
||||||
lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
|
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);
|
tmp1 = gen_reg_rtx (Pmode);
|
||||||
tmp2 = gen_reg_rtx (Pmode);
|
tmp2 = gen_reg_rtx (Pmode);
|
||||||
}
|
}
|
||||||
tempLR = (fromprolog
|
insn = emit_insn (gen_load_toc_v4_PIC_1 (lab));
|
||||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
|
||||||
: gen_reg_rtx (Pmode));
|
|
||||||
insn = emit_insn (gen_load_toc_v4_PIC_1 (tempLR, lab));
|
|
||||||
if (fromprolog)
|
if (fromprolog)
|
||||||
rs6000_maybe_dead (insn);
|
rs6000_maybe_dead (insn);
|
||||||
insn = emit_move_insn (tmp1, tempLR);
|
insn = emit_move_insn (tmp1,
|
||||||
|
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||||
if (fromprolog)
|
if (fromprolog)
|
||||||
rs6000_maybe_dead (insn);
|
rs6000_maybe_dead (insn);
|
||||||
insn = emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, got, lab));
|
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)
|
else if (TARGET_ELF && DEFAULT_ABI == ABI_V4 && flag_pic == 1)
|
||||||
{
|
{
|
||||||
rtx tempLR = (fromprolog
|
insn = emit_insn (gen_load_toc_v4_pic_si ());
|
||||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
|
||||||
: gen_reg_rtx (Pmode));
|
|
||||||
|
|
||||||
insn = emit_insn (gen_load_toc_v4_pic_si (tempLR));
|
|
||||||
if (fromprolog)
|
if (fromprolog)
|
||||||
rs6000_maybe_dead (insn);
|
rs6000_maybe_dead (insn);
|
||||||
insn = emit_move_insn (dest, tempLR);
|
insn = emit_move_insn (dest,
|
||||||
|
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||||
if (fromprolog)
|
if (fromprolog)
|
||||||
rs6000_maybe_dead (insn);
|
rs6000_maybe_dead (insn);
|
||||||
}
|
}
|
||||||
else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2)
|
else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2)
|
||||||
{
|
{
|
||||||
char buf[30];
|
char buf[30];
|
||||||
rtx tempLR = (fromprolog
|
|
||||||
? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
|
|
||||||
: gen_reg_rtx (Pmode));
|
|
||||||
rtx temp0 = (fromprolog
|
rtx temp0 = (fromprolog
|
||||||
? gen_rtx_REG (Pmode, 0)
|
? gen_rtx_REG (Pmode, 0)
|
||||||
: gen_reg_rtx (Pmode));
|
: gen_reg_rtx (Pmode));
|
||||||
|
@ -14051,9 +14043,10 @@ rs6000_emit_load_toc_table (int fromprolog)
|
||||||
ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
|
ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
|
||||||
symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
|
symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
|
||||||
|
|
||||||
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR,
|
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (symF)));
|
||||||
symF)));
|
rs6000_maybe_dead (emit_move_insn (dest,
|
||||||
rs6000_maybe_dead (emit_move_insn (dest, tempLR));
|
gen_rtx_REG (Pmode,
|
||||||
|
LINK_REGISTER_REGNUM)));
|
||||||
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
|
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
|
||||||
symL,
|
symL,
|
||||||
symF)));
|
symF)));
|
||||||
|
@ -14063,8 +14056,9 @@ rs6000_emit_load_toc_table (int fromprolog)
|
||||||
rtx tocsym;
|
rtx tocsym;
|
||||||
|
|
||||||
tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
|
tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
|
||||||
emit_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym));
|
emit_insn (gen_load_toc_v4_PIC_1b (tocsym));
|
||||||
emit_move_insn (dest, tempLR);
|
emit_move_insn (dest,
|
||||||
|
gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
|
||||||
emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest));
|
emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest));
|
||||||
}
|
}
|
||||||
insn = emit_insn (gen_addsi3 (dest, temp0, dest));
|
insn = emit_insn (gen_addsi3 (dest, temp0, dest));
|
||||||
|
|
|
@ -2713,7 +2713,7 @@
|
||||||
(lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 3))
|
(lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 3))
|
||||||
(sign_extend:DI (reg:SI 4)))
|
(sign_extend:DI (reg:SI 4)))
|
||||||
(const_int 32))))
|
(const_int 32))))
|
||||||
(clobber (match_scratch:SI 0 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __mulh"
|
"bla __mulh"
|
||||||
[(set_attr "type" "imul")])
|
[(set_attr "type" "imul")])
|
||||||
|
@ -2722,7 +2722,7 @@
|
||||||
[(set (reg:DI 3)
|
[(set (reg:DI 3)
|
||||||
(mult:DI (sign_extend:DI (reg:SI 3))
|
(mult:DI (sign_extend:DI (reg:SI 3))
|
||||||
(sign_extend:DI (reg:SI 4))))
|
(sign_extend:DI (reg:SI 4))))
|
||||||
(clobber (match_scratch:SI 0 "=l"))
|
(clobber (reg:SI 65))
|
||||||
(clobber (reg:SI 0))]
|
(clobber (reg:SI 0))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __mull"
|
"bla __mull"
|
||||||
|
@ -2733,7 +2733,7 @@
|
||||||
(div:SI (reg:SI 3) (reg:SI 4)))
|
(div:SI (reg:SI 3) (reg:SI 4)))
|
||||||
(set (reg:SI 4)
|
(set (reg:SI 4)
|
||||||
(mod:SI (reg:SI 3) (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))]
|
(clobber (reg:SI 0))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __divss"
|
"bla __divss"
|
||||||
|
@ -2744,9 +2744,9 @@
|
||||||
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
||||||
(set (reg:SI 4)
|
(set (reg:SI 4)
|
||||||
(umod:SI (reg:SI 3) (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 (reg:SI 0))
|
||||||
(clobber (match_scratch:CC 1 "=x"))
|
(clobber (match_scratch:CC 0 "=x"))
|
||||||
(clobber (reg:CC 69))]
|
(clobber (reg:CC 69))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __divus"
|
"bla __divus"
|
||||||
|
@ -2755,7 +2755,7 @@
|
||||||
(define_insn "quoss_call"
|
(define_insn "quoss_call"
|
||||||
[(set (reg:SI 3)
|
[(set (reg:SI 3)
|
||||||
(div:SI (reg:SI 3) (reg:SI 4)))
|
(div:SI (reg:SI 3) (reg:SI 4)))
|
||||||
(clobber (match_scratch:SI 0 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __quoss"
|
"bla __quoss"
|
||||||
[(set_attr "type" "idiv")])
|
[(set_attr "type" "idiv")])
|
||||||
|
@ -2763,9 +2763,9 @@
|
||||||
(define_insn "quous_call"
|
(define_insn "quous_call"
|
||||||
[(set (reg:SI 3)
|
[(set (reg:SI 3)
|
||||||
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
(udiv:SI (reg:SI 3) (reg:SI 4)))
|
||||||
(clobber (match_scratch:SI 0 "=l"))
|
(clobber (reg:SI 65))
|
||||||
(clobber (reg:SI 0))
|
(clobber (reg:SI 0))
|
||||||
(clobber (match_scratch:CC 1 "=x"))
|
(clobber (match_scratch:CC 0 "=x"))
|
||||||
(clobber (reg:CC 69))]
|
(clobber (reg:CC 69))]
|
||||||
"! TARGET_POWER && ! TARGET_POWERPC"
|
"! TARGET_POWER && ! TARGET_POWERPC"
|
||||||
"bla __quous"
|
"bla __quous"
|
||||||
|
@ -10482,7 +10482,7 @@
|
||||||
[(set_attr "type" "load")])
|
[(set_attr "type" "load")])
|
||||||
|
|
||||||
(define_insn "load_toc_v4_pic_si"
|
(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))]
|
(unspec:SI [(const_int 0)] UNSPEC_TOC))]
|
||||||
"DEFAULT_ABI == ABI_V4 && flag_pic == 1 && TARGET_32BIT"
|
"DEFAULT_ABI == ABI_V4 && flag_pic == 1 && TARGET_32BIT"
|
||||||
"bl _GLOBAL_OFFSET_TABLE_@local-4"
|
"bl _GLOBAL_OFFSET_TABLE_@local-4"
|
||||||
|
@ -10490,21 +10490,21 @@
|
||||||
(set_attr "length" "4")])
|
(set_attr "length" "4")])
|
||||||
|
|
||||||
(define_insn "load_toc_v4_PIC_1"
|
(define_insn "load_toc_v4_PIC_1"
|
||||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
[(set (reg:SI 65)
|
||||||
(match_operand:SI 1 "immediate_operand" "s"))
|
(match_operand:SI 0 "immediate_operand" "s"))
|
||||||
(use (unspec [(match_dup 1)] UNSPEC_TOC))]
|
(use (unspec [(match_dup 0)] UNSPEC_TOC))]
|
||||||
"TARGET_ELF && DEFAULT_ABI != ABI_AIX
|
"TARGET_ELF && DEFAULT_ABI != ABI_AIX
|
||||||
&& (flag_pic == 2 || (flag_pic && TARGET_SECURE_PLT))"
|
&& (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 "type" "branch")
|
||||||
(set_attr "length" "4")])
|
(set_attr "length" "4")])
|
||||||
|
|
||||||
(define_insn "load_toc_v4_PIC_1b"
|
(define_insn "load_toc_v4_PIC_1b"
|
||||||
[(set (match_operand:SI 0 "register_operand" "=l")
|
[(set (reg:SI 65)
|
||||||
(unspec:SI [(match_operand:SI 1 "immediate_operand" "s")]
|
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")]
|
||||||
UNSPEC_TOCPTR))]
|
UNSPEC_TOCPTR))]
|
||||||
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
|
"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 "type" "branch")
|
||||||
(set_attr "length" "8")])
|
(set_attr "length" "8")])
|
||||||
|
|
||||||
|
@ -10610,7 +10610,7 @@
|
||||||
(use (reg:SI 11))
|
(use (reg:SI 11))
|
||||||
(set (reg:SI 2)
|
(set (reg:SI 2)
|
||||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||||
(clobber (scratch:SI))])]
|
(clobber (reg:SI 65))])]
|
||||||
"TARGET_32BIT"
|
"TARGET_32BIT"
|
||||||
"
|
"
|
||||||
{ operands[2] = gen_reg_rtx (SImode); }")
|
{ operands[2] = gen_reg_rtx (SImode); }")
|
||||||
|
@ -10632,7 +10632,7 @@
|
||||||
(use (reg:DI 11))
|
(use (reg:DI 11))
|
||||||
(set (reg:DI 2)
|
(set (reg:DI 2)
|
||||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||||
(clobber (scratch:SI))])]
|
(clobber (reg:SI 65))])]
|
||||||
"TARGET_64BIT"
|
"TARGET_64BIT"
|
||||||
"
|
"
|
||||||
{ operands[2] = gen_reg_rtx (DImode); }")
|
{ operands[2] = gen_reg_rtx (DImode); }")
|
||||||
|
@ -10655,7 +10655,7 @@
|
||||||
(use (reg:SI 11))
|
(use (reg:SI 11))
|
||||||
(set (reg:SI 2)
|
(set (reg:SI 2)
|
||||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
||||||
(clobber (scratch:SI))])]
|
(clobber (reg:SI 65))])]
|
||||||
"TARGET_32BIT"
|
"TARGET_32BIT"
|
||||||
"
|
"
|
||||||
{ operands[3] = gen_reg_rtx (SImode); }")
|
{ operands[3] = gen_reg_rtx (SImode); }")
|
||||||
|
@ -10678,7 +10678,7 @@
|
||||||
(use (reg:DI 11))
|
(use (reg:DI 11))
|
||||||
(set (reg:DI 2)
|
(set (reg:DI 2)
|
||||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
||||||
(clobber (scratch:SI))])]
|
(clobber (reg:SI 65))])]
|
||||||
"TARGET_64BIT"
|
"TARGET_64BIT"
|
||||||
"
|
"
|
||||||
{ operands[3] = gen_reg_rtx (DImode); }")
|
{ operands[3] = gen_reg_rtx (DImode); }")
|
||||||
|
@ -10688,7 +10688,7 @@
|
||||||
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
||||||
(match_operand 1 "" ""))
|
(match_operand 1 "" ""))
|
||||||
(use (match_operand 2 "" ""))
|
(use (match_operand 2 "" ""))
|
||||||
(clobber (scratch:SI))])]
|
(clobber (reg:SI 65))])]
|
||||||
""
|
""
|
||||||
"
|
"
|
||||||
{
|
{
|
||||||
|
@ -10758,7 +10758,7 @@
|
||||||
(call (mem:SI (match_operand 1 "address_operand" ""))
|
(call (mem:SI (match_operand 1 "address_operand" ""))
|
||||||
(match_operand 2 "" "")))
|
(match_operand 2 "" "")))
|
||||||
(use (match_operand 3 "" ""))
|
(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"))
|
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(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"
|
"(INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
{
|
{
|
||||||
|
@ -10857,7 +10857,7 @@
|
||||||
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(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"
|
"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"))
|
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(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"
|
"(INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
{
|
{
|
||||||
|
@ -10898,7 +10898,7 @@
|
||||||
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(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"
|
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
{
|
{
|
||||||
|
@ -10927,7 +10927,7 @@
|
||||||
(use (reg:SI 11))
|
(use (reg:SI 11))
|
||||||
(set (reg:SI 2)
|
(set (reg:SI 2)
|
||||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
(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"
|
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
|
||||||
"b%T0l\;{l|lwz} 2,20(1)"
|
"b%T0l\;{l|lwz} 2,20(1)"
|
||||||
[(set_attr "type" "jmpreg")
|
[(set_attr "type" "jmpreg")
|
||||||
|
@ -10937,7 +10937,7 @@
|
||||||
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
||||||
(match_operand 1 "" "g"))
|
(match_operand 1 "" "g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||||
(clobber (match_scratch:SI 3 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"TARGET_32BIT
|
"TARGET_32BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||||
|
@ -10952,7 +10952,7 @@
|
||||||
(use (reg:DI 11))
|
(use (reg:DI 11))
|
||||||
(set (reg:DI 2)
|
(set (reg:DI 2)
|
||||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
(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"
|
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
|
||||||
"b%T0l\;ld 2,40(1)"
|
"b%T0l\;ld 2,40(1)"
|
||||||
[(set_attr "type" "jmpreg")
|
[(set_attr "type" "jmpreg")
|
||||||
|
@ -10962,7 +10962,7 @@
|
||||||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
||||||
(match_operand 1 "" "g"))
|
(match_operand 1 "" "g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||||
(clobber (match_scratch:SI 3 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"TARGET_64BIT
|
"TARGET_64BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||||
|
@ -10978,7 +10978,7 @@
|
||||||
(use (reg:SI 11))
|
(use (reg:SI 11))
|
||||||
(set (reg:SI 2)
|
(set (reg:SI 2)
|
||||||
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
|
(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"
|
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
|
||||||
"b%T1l\;{l|lwz} 2,20(1)"
|
"b%T1l\;{l|lwz} 2,20(1)"
|
||||||
[(set_attr "type" "jmpreg")
|
[(set_attr "type" "jmpreg")
|
||||||
|
@ -10989,7 +10989,7 @@
|
||||||
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
||||||
(match_operand 2 "" "g")))
|
(match_operand 2 "" "g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||||
(clobber (match_scratch:SI 4 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"TARGET_32BIT
|
"TARGET_32BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
|
@ -11005,7 +11005,7 @@
|
||||||
(use (reg:DI 11))
|
(use (reg:DI 11))
|
||||||
(set (reg:DI 2)
|
(set (reg:DI 2)
|
||||||
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
|
(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"
|
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
|
||||||
"b%T1l\;ld 2,40(1)"
|
"b%T1l\;ld 2,40(1)"
|
||||||
[(set_attr "type" "jmpreg")
|
[(set_attr "type" "jmpreg")
|
||||||
|
@ -11016,7 +11016,7 @@
|
||||||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
||||||
(match_operand 2 "" "g")))
|
(match_operand 2 "" "g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||||
(clobber (match_scratch:SI 4 "=l"))]
|
(clobber (reg:SI 65))]
|
||||||
"TARGET_64BIT
|
"TARGET_64BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
|
@ -11034,7 +11034,7 @@
|
||||||
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l,c,*l"))
|
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l,c,*l"))
|
||||||
(match_operand 1 "" "g,g,g,g"))
|
(match_operand 1 "" "g,g,g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
|
(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_V4
|
||||||
|| DEFAULT_ABI == ABI_DARWIN"
|
|| DEFAULT_ABI == ABI_DARWIN"
|
||||||
{
|
{
|
||||||
|
@ -11053,7 +11053,7 @@
|
||||||
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(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_DARWIN
|
||||||
|| (DEFAULT_ABI == ABI_V4
|
|| (DEFAULT_ABI == ABI_V4
|
||||||
&& (INTVAL (operands[2]) & CALL_LONG) == 0))"
|
&& (INTVAL (operands[2]) & CALL_LONG) == 0))"
|
||||||
|
@ -11089,7 +11089,7 @@
|
||||||
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l,c,*l"))
|
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l,c,*l"))
|
||||||
(match_operand 2 "" "g,g,g,g")))
|
(match_operand 2 "" "g,g,g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
|
(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_V4
|
||||||
|| DEFAULT_ABI == ABI_DARWIN"
|
|| DEFAULT_ABI == ABI_DARWIN"
|
||||||
{
|
{
|
||||||
|
@ -11109,7 +11109,7 @@
|
||||||
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(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_DARWIN
|
||||||
|| (DEFAULT_ABI == ABI_V4
|
|| (DEFAULT_ABI == ABI_V4
|
||||||
&& (INTVAL (operands[3]) & CALL_LONG) == 0))"
|
&& (INTVAL (operands[3]) & CALL_LONG) == 0))"
|
||||||
|
@ -11170,7 +11170,7 @@
|
||||||
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
|
||||||
(match_operand 1 "" ""))
|
(match_operand 1 "" ""))
|
||||||
(use (match_operand 2 "" ""))
|
(use (match_operand 2 "" ""))
|
||||||
(use (match_operand 3 "" ""))
|
(use (reg:SI 65))
|
||||||
(return)])]
|
(return)])]
|
||||||
""
|
""
|
||||||
"
|
"
|
||||||
|
@ -11184,8 +11184,6 @@
|
||||||
gcc_assert (GET_CODE (operands[1]) == CONST_INT);
|
gcc_assert (GET_CODE (operands[1]) == CONST_INT);
|
||||||
|
|
||||||
operands[0] = XEXP (operands[0], 0);
|
operands[0] = XEXP (operands[0], 0);
|
||||||
operands[3] = gen_reg_rtx (SImode);
|
|
||||||
|
|
||||||
}")
|
}")
|
||||||
|
|
||||||
;; this and similar patterns must be marked as using LR, otherwise
|
;; 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"))
|
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(INTVAL (operands[2]) & CALL_LONG) == 0"
|
"(INTVAL (operands[2]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
|
@ -11216,7 +11214,7 @@
|
||||||
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 1 "" "g,g"))
|
(match_operand 1 "" "g,g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
(use (match_operand:SI 2 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
|
"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"))
|
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(INTVAL (operands[3]) & CALL_LONG) == 0"
|
"(INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
|
@ -11259,7 +11257,7 @@
|
||||||
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
|
||||||
(match_operand 2 "" "g,g")))
|
(match_operand 2 "" "g,g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
|
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
|
||||||
"*
|
"*
|
||||||
|
@ -11279,7 +11277,7 @@
|
||||||
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
|
||||||
(match_operand 1 "" "g"))
|
(match_operand 1 "" "g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_32BIT
|
"TARGET_32BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
|
@ -11292,7 +11290,7 @@
|
||||||
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
|
||||||
(match_operand 1 "" "g"))
|
(match_operand 1 "" "g"))
|
||||||
(use (match_operand:SI 2 "immediate_operand" "O"))
|
(use (match_operand:SI 2 "immediate_operand" "O"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT
|
"TARGET_64BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
|
@ -11306,7 +11304,7 @@
|
||||||
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
|
||||||
(match_operand 2 "" "g")))
|
(match_operand 2 "" "g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_32BIT
|
"TARGET_32BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
|
@ -11320,7 +11318,7 @@
|
||||||
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
|
||||||
(match_operand 2 "" "g")))
|
(match_operand 2 "" "g")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O"))
|
(use (match_operand:SI 3 "immediate_operand" "O"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"TARGET_64BIT
|
"TARGET_64BIT
|
||||||
&& DEFAULT_ABI == ABI_AIX
|
&& DEFAULT_ABI == ABI_AIX
|
||||||
|
@ -11333,7 +11331,7 @@
|
||||||
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 1 "" ""))
|
(match_operand 1 "" ""))
|
||||||
(use (match_operand 2 "immediate_operand" "O,n"))
|
(use (match_operand 2 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 3 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN
|
"(DEFAULT_ABI == ABI_DARWIN
|
||||||
|| DEFAULT_ABI == ABI_V4)
|
|| DEFAULT_ABI == ABI_V4)
|
||||||
|
@ -11364,7 +11362,7 @@
|
||||||
(call (mem:SI (match_operand 1 "address_operand" ""))
|
(call (mem:SI (match_operand 1 "address_operand" ""))
|
||||||
(match_operand 2 "" "")))
|
(match_operand 2 "" "")))
|
||||||
(use (match_operand 3 "" ""))
|
(use (match_operand 3 "" ""))
|
||||||
(use (match_operand 4 "" ""))
|
(use (reg:SI 65))
|
||||||
(return)])]
|
(return)])]
|
||||||
""
|
""
|
||||||
"
|
"
|
||||||
|
@ -11378,8 +11376,6 @@
|
||||||
gcc_assert (GET_CODE (operands[2]) == CONST_INT);
|
gcc_assert (GET_CODE (operands[2]) == CONST_INT);
|
||||||
|
|
||||||
operands[1] = XEXP (operands[1], 0);
|
operands[1] = XEXP (operands[1], 0);
|
||||||
operands[4] = gen_reg_rtx (SImode);
|
|
||||||
|
|
||||||
}")
|
}")
|
||||||
|
|
||||||
(define_insn "*sibcall_value_nonlocal_sysv<mode>"
|
(define_insn "*sibcall_value_nonlocal_sysv<mode>"
|
||||||
|
@ -11387,7 +11383,7 @@
|
||||||
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
|
||||||
(match_operand 2 "" "")))
|
(match_operand 2 "" "")))
|
||||||
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
(use (match_operand:SI 3 "immediate_operand" "O,n"))
|
||||||
(use (match_operand:SI 4 "register_operand" "l,l"))
|
(use (reg:SI 65))
|
||||||
(return)]
|
(return)]
|
||||||
"(DEFAULT_ABI == ABI_DARWIN
|
"(DEFAULT_ABI == ABI_DARWIN
|
||||||
|| DEFAULT_ABI == ABI_V4)
|
|| DEFAULT_ABI == ABI_V4)
|
||||||
|
@ -14381,12 +14377,12 @@
|
||||||
|
|
||||||
(define_insn "*save_fpregs_<mode>"
|
(define_insn "*save_fpregs_<mode>"
|
||||||
[(match_parallel 0 "any_parallel_operand"
|
[(match_parallel 0 "any_parallel_operand"
|
||||||
[(clobber (match_operand:P 1 "register_operand" "=l"))
|
[(clobber (reg:P 65))
|
||||||
(use (match_operand:P 2 "call_operand" "s"))
|
(use (match_operand:P 1 "call_operand" "s"))
|
||||||
(set (match_operand:DF 3 "memory_operand" "=m")
|
(set (match_operand:DF 2 "memory_operand" "=m")
|
||||||
(match_operand:DF 4 "gpc_reg_operand" "f"))])]
|
(match_operand:DF 3 "gpc_reg_operand" "f"))])]
|
||||||
""
|
""
|
||||||
"bl %z2"
|
"bl %z1"
|
||||||
[(set_attr "type" "branch")
|
[(set_attr "type" "branch")
|
||||||
(set_attr "length" "4")])
|
(set_attr "length" "4")])
|
||||||
|
|
||||||
|
@ -14475,12 +14471,12 @@
|
||||||
(define_insn "*return_and_restore_fpregs_<mode>"
|
(define_insn "*return_and_restore_fpregs_<mode>"
|
||||||
[(match_parallel 0 "any_parallel_operand"
|
[(match_parallel 0 "any_parallel_operand"
|
||||||
[(return)
|
[(return)
|
||||||
(use (match_operand:P 1 "register_operand" "l"))
|
(use (reg:P 65))
|
||||||
(use (match_operand:P 2 "call_operand" "s"))
|
(use (match_operand:P 1 "call_operand" "s"))
|
||||||
(set (match_operand:DF 3 "gpc_reg_operand" "=f")
|
(set (match_operand:DF 2 "gpc_reg_operand" "=f")
|
||||||
(match_operand:DF 4 "memory_operand" "m"))])]
|
(match_operand:DF 3 "memory_operand" "m"))])]
|
||||||
""
|
""
|
||||||
"b %z2")
|
"b %z1")
|
||||||
|
|
||||||
; This is used in compiling the unwind routines.
|
; This is used in compiling the unwind routines.
|
||||||
(define_expand "eh_return"
|
(define_expand "eh_return"
|
||||||
|
|
Loading…
Reference in New Issue