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:
David Edelsohn 2007-03-25 02:41:54 +00:00 committed by David Edelsohn
parent 3303be154c
commit e65a3857a5
5 changed files with 143 additions and 105 deletions

View File

@ -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.

View File

@ -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"

View File

@ -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"
"* "*

View File

@ -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));

View File

@ -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"