summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cc/cc_int/insn-output.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/cc/cc_int/insn-output.c')
-rw-r--r--gnu/usr.bin/cc/cc_int/insn-output.c1320
1 files changed, 865 insertions, 455 deletions
diff --git a/gnu/usr.bin/cc/cc_int/insn-output.c b/gnu/usr.bin/cc/cc_int/insn-output.c
index b354cf4..7186712 100644
--- a/gnu/usr.bin/cc/cc_int/insn-output.c
+++ b/gnu/usr.bin/cc/cc_int/insn-output.c
@@ -79,7 +79,7 @@ output_6 (operands, insn)
if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
output_asm_insn (AS1 (fstp,%y0), operands);
- return (char *) output_fp_cc0_set (insn);
+ return output_fp_cc0_set (insn);
}
}
@@ -98,7 +98,7 @@ output_8 (operands, insn)
if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
output_asm_insn (AS1 (fstp,%y0), operands);
- return (char *) output_fp_cc0_set (insn);
+ return output_fp_cc0_set (insn);
}
}
@@ -117,7 +117,7 @@ output_10 (operands, insn)
if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
output_asm_insn (AS1 (fstp,%y0), operands);
- return (char *) output_fp_cc0_set (insn);
+ return output_fp_cc0_set (insn);
}
}
@@ -174,7 +174,7 @@ output_18 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -182,7 +182,7 @@ output_19 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -190,7 +190,7 @@ output_20 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -198,7 +198,7 @@ output_21 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -206,7 +206,7 @@ output_22 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -214,7 +214,7 @@ output_23 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -222,7 +222,7 @@ output_24 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -230,7 +230,7 @@ output_25 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -238,7 +238,7 @@ output_26 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -246,7 +246,7 @@ output_27 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -254,7 +254,7 @@ output_28 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -262,7 +262,7 @@ output_29 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -270,7 +270,7 @@ output_30 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -278,7 +278,7 @@ output_31 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -286,7 +286,7 @@ output_32 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -294,7 +294,7 @@ output_33 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_float_compare (insn, operands);
+ return output_float_compare (insn, operands);
}
static char *
@@ -414,7 +414,7 @@ output_45 (operands, insn)
}
static char *
-output_49 (operands, insn)
+output_50 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -436,12 +436,15 @@ output_49 (operands, insn)
/* Fastest way to change a 0 to a 1. */
return AS1 (inc%L0,%0);
+ if (flag_pic && SYMBOLIC_CONST (operands[1]))
+ return AS2 (lea%L0,%a1,%0);
+
return AS2 (mov%L0,%1,%0);
}
}
static char *
-output_51 (operands, insn)
+output_55 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -476,7 +479,7 @@ output_51 (operands, insn)
}
static char *
-output_52 (operands, insn)
+output_57 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -503,7 +506,15 @@ output_52 (operands, insn)
}
static char *
-output_53 (operands, insn)
+output_58 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+ return AS1 (push%W0,%1);
+}
+
+static char *
+output_59 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -515,7 +526,19 @@ output_53 (operands, insn)
}
static char *
-output_54 (operands, insn)
+output_60 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
+ return AS1 (push%W0,%1);
+}
+}
+
+static char *
+output_62 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -546,7 +569,7 @@ output_54 (operands, insn)
}
static char *
-output_55 (operands, insn)
+output_64 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -580,7 +603,7 @@ output_55 (operands, insn)
}
static char *
-output_56 (operands, insn)
+output_66 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -610,7 +633,57 @@ output_56 (operands, insn)
}
static char *
-output_57 (operands, insn)
+output_67 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ if (STACK_REG_P (operands[1]))
+ {
+ rtx xops[3];
+
+ if (! STACK_TOP_P (operands[1]))
+ abort ();
+
+ xops[0] = AT_SP (SFmode);
+ xops[1] = GEN_INT (4);
+ xops[2] = stack_pointer_rtx;
+
+ output_asm_insn (AS2 (sub%L2,%1,%2), xops);
+
+ if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
+ output_asm_insn (AS1 (fstp%S0,%0), xops);
+ else
+ output_asm_insn (AS1 (fst%S0,%0), xops);
+ RET;
+ }
+
+ else if (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != REG)
+ return AS1 (push%L1,%1);
+
+ else
+ {
+ output_asm_insn (AS2 (mov%L2,%1,%2), operands);
+ return AS1 (push%L2,%2);
+ }
+}
+}
+
+static char *
+output_68 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ output_asm_insn (AS2 (mov%L2,%1,%2), operands);
+ return AS2 (mov%L0,%2,%0);
+}
+}
+
+static char *
+output_69 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -655,19 +728,33 @@ output_57 (operands, insn)
/* Handle other kinds of reads to the 387 */
if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
- return (char *) output_move_const_single (operands);
+ return output_move_const_single (operands);
if (STACK_TOP_P (operands[0]))
return AS1 (fld%z1,%y1);
/* Handle all SFmode moves not involving the 387 */
- return (char *) singlemove_string (operands);
+ return singlemove_string (operands);
}
}
static char *
-output_58 (operands, insn)
+output_70 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ if (STACK_TOP_P (operands[0]))
+ return AS1 (fxch,%1);
+ else
+ return AS1 (fxch,%0);
+}
+}
+
+static char *
+output_72 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -691,26 +778,53 @@ output_58 (operands, insn)
RET;
}
else
- return (char *) output_move_double (operands);
+ return output_move_double (operands);
}
}
static char *
-output_59 (operands, insn)
+output_73 (operands, insn)
rtx *operands;
rtx insn;
{
{
- if (STACK_TOP_P (operands[0]))
- return AS1 (fxch,%1);
+ if (STACK_REG_P (operands[1]))
+ {
+ rtx xops[3];
+
+ xops[0] = AT_SP (SFmode);
+ xops[1] = GEN_INT (8);
+ xops[2] = stack_pointer_rtx;
+
+ output_asm_insn (AS2 (sub%L2,%1,%2), xops);
+
+ if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
+ output_asm_insn (AS1 (fstp%Q0,%0), xops);
+ else
+ output_asm_insn (AS1 (fst%Q0,%0), xops);
+
+ RET;
+ }
+
+ else if (GET_CODE (operands[1]) != MEM)
+ return output_move_double (operands);
+
else
- return AS1 (fxch,%0);
+ return output_move_pushmem (operands, insn, GET_MODE_SIZE (DFmode), 2, 4);
}
}
static char *
-output_60 (operands, insn)
+output_74 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+ return output_move_memory (operands, insn, GET_MODE_SIZE (DFmode), 2, 4);
+}
+
+static char *
+output_75 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -755,19 +869,33 @@ output_60 (operands, insn)
/* Handle other kinds of reads to the 387 */
if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
- return (char *) output_move_const_single (operands);
+ return output_move_const_single (operands);
if (STACK_TOP_P (operands[0]))
return AS1 (fld%z1,%y1);
/* Handle all DFmode moves not involving the 387 */
- return (char *) output_move_double (operands);
+ return output_move_double (operands);
}
}
static char *
-output_61 (operands, insn)
+output_76 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ if (STACK_TOP_P (operands[0]))
+ return AS1 (fxch,%1);
+ else
+ return AS1 (fxch,%0);
+}
+}
+
+static char *
+output_78 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -789,26 +917,52 @@ output_61 (operands, insn)
RET;
}
else
- return (char *) output_move_double (operands);
+ return output_move_double (operands);
}
}
static char *
-output_62 (operands, insn)
+output_79 (operands, insn)
rtx *operands;
rtx insn;
{
{
- if (STACK_TOP_P (operands[0]))
- return AS1 (fxch,%1);
+ if (STACK_REG_P (operands[1]))
+ {
+ rtx xops[3];
+
+ xops[0] = AT_SP (SFmode);
+ xops[1] = GEN_INT (12);
+ xops[2] = stack_pointer_rtx;
+
+ output_asm_insn (AS2 (sub%L2,%1,%2), xops);
+ output_asm_insn (AS1 (fstp%T0,%0), xops);
+ if (! find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
+ output_asm_insn (AS1 (fld%T0,%0), xops);
+
+ RET;
+ }
+
+ else if (GET_CODE (operands[1]) != MEM
+ || GET_CODE (operands[2]) != REG)
+ return output_move_double (operands);
+
else
- return AS1 (fxch,%0);
+ return output_move_pushmem (operands, insn, GET_MODE_SIZE (XFmode), 2, 4);
+}
}
+
+static char *
+output_80 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+ return output_move_memory (operands, insn, GET_MODE_SIZE (XFmode), 2, 4);
}
static char *
-output_63 (operands, insn)
+output_81 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -854,47 +1008,70 @@ output_63 (operands, insn)
/* Handle other kinds of reads to the 387 */
if (STACK_TOP_P (operands[0]) && GET_CODE (operands[1]) == CONST_DOUBLE)
- return (char *) output_move_const_single (operands);
+ return output_move_const_single (operands);
if (STACK_TOP_P (operands[0]))
return AS1 (fld%z1,%y1);
/* Handle all XFmode moves not involving the 387 */
- return (char *) output_move_double (operands);
+ return output_move_double (operands);
}
}
static char *
-output_64 (operands, insn)
+output_82 (operands, insn)
rtx *operands;
rtx insn;
{
{
- return (char *) output_move_double (operands);
+ if (STACK_TOP_P (operands[0]))
+ return AS1 (fxch,%1);
+ else
+ return AS1 (fxch,%0);
}
}
static char *
-output_65 (operands, insn)
+output_83 (operands, insn)
rtx *operands;
rtx insn;
{
{
- return (char *) output_move_double (operands);
+ if (GET_CODE (operands[1]) != MEM)
+ return output_move_double (operands);
+
+ else
+ return output_move_pushmem (operands, insn, GET_MODE_SIZE (DImode), 2, 4);
}
}
static char *
-output_66 (operands, insn)
+output_84 (operands, insn)
rtx *operands;
rtx insn;
{
{
- if ((TARGET_486 || REGNO (operands[0]) == 0)
+ rtx low[2], high[2], xop[6];
+
+ if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+ return output_move_double (operands);
+ else
+ return output_move_memory (operands, insn, GET_MODE_SIZE (DImode), 2, 4);
+}
+}
+
+static char *
+output_85 (operands, insn)
+ rtx *operands;
+ rtx insn;
+{
+
+{
+ if ((!TARGET_386 || REGNO (operands[0]) == 0)
&& REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
{
rtx xops[2];
@@ -913,13 +1090,13 @@ output_66 (operands, insn)
}
static char *
-output_67 (operands, insn)
+output_86 (operands, insn)
rtx *operands;
rtx insn;
{
{
- if ((TARGET_486 || REGNO (operands[0]) == 0)
+ if ((!TARGET_386 || REGNO (operands[0]) == 0)
&& REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
{
rtx xops[2];
@@ -938,13 +1115,13 @@ output_67 (operands, insn)
}
static char *
-output_68 (operands, insn)
+output_87 (operands, insn)
rtx *operands;
rtx insn;
{
{
- if ((TARGET_486 || REGNO (operands[0]) == 0)
+ if ((!TARGET_386 || REGNO (operands[0]) == 0)
&& REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1]))
{
rtx xops[2];
@@ -963,7 +1140,7 @@ output_68 (operands, insn)
}
static char *
-output_69 (operands, insn)
+output_88 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -975,7 +1152,7 @@ output_69 (operands, insn)
}
static char *
-output_70 (operands, insn)
+output_89 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1000,7 +1177,7 @@ output_70 (operands, insn)
}
static char *
-output_71 (operands, insn)
+output_90 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1023,7 +1200,7 @@ output_71 (operands, insn)
}
static char *
-output_72 (operands, insn)
+output_91 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1042,7 +1219,7 @@ output_72 (operands, insn)
}
static char *
-output_73 (operands, insn)
+output_92 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1057,7 +1234,7 @@ output_73 (operands, insn)
}
static char *
-output_74 (operands, insn)
+output_93 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1093,7 +1270,7 @@ output_74 (operands, insn)
}
static char *
-output_75 (operands, insn)
+output_94 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1129,7 +1306,7 @@ output_75 (operands, insn)
}
static char *
-output_76 (operands, insn)
+output_95 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1165,7 +1342,7 @@ output_76 (operands, insn)
}
static char *
-output_78 (operands, insn)
+output_97 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1191,7 +1368,7 @@ output_78 (operands, insn)
}
static char *
-output_79 (operands, insn)
+output_98 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1225,7 +1402,7 @@ output_79 (operands, insn)
}
static char *
-output_80 (operands, insn)
+output_99 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1259,55 +1436,55 @@ output_80 (operands, insn)
}
static char *
-output_87 (operands, insn)
+output_106 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_88 (operands, insn)
+output_107 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_89 (operands, insn)
+output_108 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_93 (operands, insn)
+output_112 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_94 (operands, insn)
+output_113 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_95 (operands, insn)
+output_114 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_fix_trunc (insn, operands);
+ return output_fix_trunc (insn, operands);
}
static char *
-output_102 (operands, insn)
+output_121 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1326,7 +1503,7 @@ output_102 (operands, insn)
}
static char *
-output_103 (operands, insn)
+output_122 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1345,7 +1522,7 @@ output_103 (operands, insn)
}
static char *
-output_104 (operands, insn)
+output_123 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1364,7 +1541,7 @@ output_104 (operands, insn)
}
static char *
-output_105 (operands, insn)
+output_124 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1383,7 +1560,7 @@ output_105 (operands, insn)
}
static char *
-output_106 (operands, insn)
+output_125 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1402,7 +1579,7 @@ output_106 (operands, insn)
}
static char *
-output_107 (operands, insn)
+output_126 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1421,31 +1598,80 @@ output_107 (operands, insn)
}
static char *
-output_108 (operands, insn)
+output_127 (operands, insn)
rtx *operands;
rtx insn;
{
{
- rtx low[3], high[3];
+ rtx low[3], high[3], xops[7], temp;
CC_STATUS_INIT;
+ if (rtx_equal_p (operands[0], operands[2]))
+ {
+ temp = operands[1];
+ operands[1] = operands[2];
+ operands[2] = temp;
+ }
+
split_di (operands, 3, low, high);
+ if (!rtx_equal_p (operands[0], operands[1]))
+ {
+ xops[0] = high[0];
+ xops[1] = low[0];
+ xops[2] = high[1];
+ xops[3] = low[1];
- if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
+ if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+ {
+ output_asm_insn (AS2 (mov%L1,%3,%1), xops);
+ output_asm_insn (AS2 (mov%L0,%2,%0), xops);
+ }
+ else
+ {
+ xops[4] = high[2];
+ xops[5] = low[2];
+ xops[6] = operands[3];
+ output_asm_insn (AS2 (mov%L6,%3,%6), xops);
+ output_asm_insn (AS2 (add%L6,%5,%6), xops);
+ output_asm_insn (AS2 (mov%L1,%6,%1), xops);
+ output_asm_insn (AS2 (mov%L6,%2,%6), xops);
+ output_asm_insn (AS2 (adc%L6,%4,%6), xops);
+ output_asm_insn (AS2 (mov%L0,%6,%0), xops);
+ RET;
+ }
+ }
+
+ if (GET_CODE (operands[3]) == REG && GET_CODE (operands[2]) != REG)
+ {
+ xops[0] = high[0];
+ xops[1] = low[0];
+ xops[2] = high[2];
+ xops[3] = low[2];
+ xops[4] = operands[3];
+
+ output_asm_insn (AS2 (mov%L4,%3,%4), xops);
+ output_asm_insn (AS2 (add%L1,%4,%1), xops);
+ output_asm_insn (AS2 (mov%L4,%2,%4), xops);
+ output_asm_insn (AS2 (adc%L0,%4,%0), xops);
+ }
+
+ else if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
{
output_asm_insn (AS2 (add%L0,%2,%0), low);
output_asm_insn (AS2 (adc%L0,%2,%0), high);
}
+
else
output_asm_insn (AS2 (add%L0,%2,%0), high);
+
RET;
}
}
static char *
-output_109 (operands, insn)
+output_128 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1456,23 +1682,20 @@ output_109 (operands, insn)
if (REG_P (operands[2]) && REGNO (operands[0]) == REGNO (operands[2]))
return AS2 (add%L0,%1,%0);
- if (! TARGET_486 || ! REG_P (operands[2]))
- {
- CC_STATUS_INIT;
+ if (operands[2] == stack_pointer_rtx)
+ {
+ rtx temp;
- if (operands[2] == stack_pointer_rtx)
- {
- rtx temp;
+ temp = operands[1];
+ operands[1] = operands[2];
+ operands[2] = temp;
+ }
- temp = operands[1];
- operands[1] = operands[2];
- operands[2] = temp;
- }
- if (operands[2] != stack_pointer_rtx)
- {
- operands[1] = SET_SRC (PATTERN (insn));
- return AS2 (lea%L0,%a1,%0);
- }
+ if (operands[2] != stack_pointer_rtx)
+ {
+ CC_STATUS_INIT;
+ operands[1] = SET_SRC (PATTERN (insn));
+ return AS2 (lea%L0,%a1,%0);
}
output_asm_insn (AS2 (mov%L0,%1,%0), operands);
@@ -1489,7 +1712,7 @@ output_109 (operands, insn)
}
static char *
-output_110 (operands, insn)
+output_129 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1525,7 +1748,7 @@ output_110 (operands, insn)
}
static char *
-output_111 (operands, insn)
+output_130 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1544,7 +1767,7 @@ output_111 (operands, insn)
}
static char *
-output_112 (operands, insn)
+output_131 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1572,23 +1795,65 @@ output_112 (operands, insn)
}
static char *
-output_116 (operands, insn)
+output_135 (operands, insn)
rtx *operands;
rtx insn;
{
{
- rtx low[3], high[3];
+ rtx low[3], high[3], xops[7];
CC_STATUS_INIT;
split_di (operands, 3, low, high);
- if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
+ if (!rtx_equal_p (operands[0], operands[1]))
+ {
+ xops[0] = high[0];
+ xops[1] = low[0];
+ xops[2] = high[1];
+ xops[3] = low[1];
+
+ if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+ {
+ output_asm_insn (AS2 (mov%L1,%3,%1), xops);
+ output_asm_insn (AS2 (mov%L0,%2,%0), xops);
+ }
+ else
+ {
+ xops[4] = high[2];
+ xops[5] = low[2];
+ xops[6] = operands[3];
+ output_asm_insn (AS2 (mov%L6,%3,%6), xops);
+ output_asm_insn (AS2 (sub%L6,%5,%6), xops);
+ output_asm_insn (AS2 (mov%L1,%6,%1), xops);
+ output_asm_insn (AS2 (mov%L6,%2,%6), xops);
+ output_asm_insn (AS2 (sbb%L6,%4,%6), xops);
+ output_asm_insn (AS2 (mov%L0,%6,%0), xops);
+ RET;
+ }
+ }
+
+ if (GET_CODE (operands[3]) == REG)
+ {
+ xops[0] = high[0];
+ xops[1] = low[0];
+ xops[2] = high[2];
+ xops[3] = low[2];
+ xops[4] = operands[3];
+
+ output_asm_insn (AS2 (mov%L4,%3,%4), xops);
+ output_asm_insn (AS2 (sub%L1,%4,%1), xops);
+ output_asm_insn (AS2 (mov%L4,%2,%4), xops);
+ output_asm_insn (AS2 (sbb%L0,%4,%0), xops);
+ }
+
+ else if (GET_CODE (low[2]) != CONST_INT || INTVAL (low[2]) != 0)
{
output_asm_insn (AS2 (sub%L0,%2,%0), low);
output_asm_insn (AS2 (sbb%L0,%2,%0), high);
}
+
else
output_asm_insn (AS2 (sub%L0,%2,%0), high);
@@ -1597,7 +1862,7 @@ output_116 (operands, insn)
}
static char *
-output_117 (operands, insn)
+output_136 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1605,7 +1870,7 @@ output_117 (operands, insn)
}
static char *
-output_118 (operands, insn)
+output_137 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1613,7 +1878,7 @@ output_118 (operands, insn)
}
static char *
-output_119 (operands, insn)
+output_138 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1621,7 +1886,7 @@ output_119 (operands, insn)
}
static char *
-output_123 (operands, insn)
+output_142 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1629,7 +1894,7 @@ output_123 (operands, insn)
}
static char *
-output_124 (operands, insn)
+output_143 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1645,7 +1910,7 @@ output_124 (operands, insn)
}
static char *
-output_125 (operands, insn)
+output_144 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1653,7 +1918,7 @@ output_125 (operands, insn)
}
static char *
-output_126 (operands, insn)
+output_145 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1669,7 +1934,7 @@ output_126 (operands, insn)
}
static char *
-output_139 (operands, insn)
+output_160 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1685,7 +1950,7 @@ output_139 (operands, insn)
}
static char *
-output_141 (operands, insn)
+output_162 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1697,7 +1962,7 @@ output_141 (operands, insn)
}
static char *
-output_142 (operands, insn)
+output_163 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1709,7 +1974,7 @@ output_142 (operands, insn)
}
static char *
-output_143 (operands, insn)
+output_164 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1721,7 +1986,7 @@ output_143 (operands, insn)
if (INTVAL (operands[2]) == 0xffff && REG_P (operands[0])
&& (! REG_P (operands[1])
|| REGNO (operands[0]) != 0 || REGNO (operands[1]) != 0)
- && (! TARGET_486 || ! rtx_equal_p (operands[0], operands[1])))
+ && (TARGET_386 || ! rtx_equal_p (operands[0], operands[1])))
{
/* ??? tege: Should forget CC_STATUS only if we clobber a
remembered operand. Fix that later. */
@@ -1737,7 +2002,7 @@ output_143 (operands, insn)
&& !(REG_P (operands[1]) && NON_QI_REG_P (operands[1]))
&& (! REG_P (operands[1])
|| REGNO (operands[0]) != 0 || REGNO (operands[1]) != 0)
- && (! TARGET_486 || ! rtx_equal_p (operands[0], operands[1])))
+ && (TARGET_386 || ! rtx_equal_p (operands[0], operands[1])))
{
/* ??? tege: Should forget CC_STATUS only if we clobber a
remembered operand. Fix that later. */
@@ -1789,7 +2054,7 @@ output_143 (operands, insn)
}
static char *
-output_144 (operands, insn)
+output_165 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1836,7 +2101,7 @@ output_144 (operands, insn)
}
static char *
-output_145 (operands, insn)
+output_166 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1844,7 +2109,7 @@ output_145 (operands, insn)
}
static char *
-output_146 (operands, insn)
+output_167 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1881,7 +2146,7 @@ output_146 (operands, insn)
}
static char *
-output_147 (operands, insn)
+output_168 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1924,7 +2189,7 @@ output_147 (operands, insn)
}
static char *
-output_148 (operands, insn)
+output_169 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1932,7 +2197,7 @@ output_148 (operands, insn)
}
static char *
-output_149 (operands, insn)
+output_170 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -1969,7 +2234,7 @@ output_149 (operands, insn)
}
static char *
-output_150 (operands, insn)
+output_171 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2012,7 +2277,7 @@ output_150 (operands, insn)
}
static char *
-output_151 (operands, insn)
+output_172 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2020,7 +2285,7 @@ output_151 (operands, insn)
}
static char *
-output_152 (operands, insn)
+output_173 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2042,7 +2307,7 @@ output_152 (operands, insn)
}
static char *
-output_182 (operands, insn)
+output_203 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2079,7 +2344,7 @@ output_182 (operands, insn)
}
static char *
-output_183 (operands, insn)
+output_204 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2114,7 +2379,7 @@ output_183 (operands, insn)
}
static char *
-output_184 (operands, insn)
+output_205 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2122,7 +2387,7 @@ output_184 (operands, insn)
{
if (REG_P (operands[0]) && REGNO (operands[0]) != REGNO (operands[1]))
{
- if (TARGET_486 && INTVAL (operands[2]) == 1)
+ if (!TARGET_386 && INTVAL (operands[2]) == 1)
{
output_asm_insn (AS2 (mov%L0,%1,%0), operands);
return AS2 (add%L0,%1,%0);
@@ -2153,7 +2418,7 @@ output_184 (operands, insn)
}
static char *
-output_185 (operands, insn)
+output_206 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2170,7 +2435,7 @@ output_185 (operands, insn)
}
static char *
-output_186 (operands, insn)
+output_207 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2187,7 +2452,7 @@ output_186 (operands, insn)
}
static char *
-output_188 (operands, insn)
+output_209 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2226,7 +2491,7 @@ output_188 (operands, insn)
}
static char *
-output_189 (operands, insn)
+output_210 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2261,7 +2526,7 @@ output_189 (operands, insn)
}
static char *
-output_190 (operands, insn)
+output_211 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2275,7 +2540,7 @@ output_190 (operands, insn)
}
static char *
-output_191 (operands, insn)
+output_212 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2289,7 +2554,7 @@ output_191 (operands, insn)
}
static char *
-output_192 (operands, insn)
+output_213 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2303,7 +2568,7 @@ output_192 (operands, insn)
}
static char *
-output_194 (operands, insn)
+output_215 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2341,7 +2606,7 @@ output_194 (operands, insn)
}
static char *
-output_195 (operands, insn)
+output_216 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2376,7 +2641,7 @@ output_195 (operands, insn)
}
static char *
-output_196 (operands, insn)
+output_217 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2390,7 +2655,7 @@ output_196 (operands, insn)
}
static char *
-output_197 (operands, insn)
+output_218 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2404,7 +2669,7 @@ output_197 (operands, insn)
}
static char *
-output_198 (operands, insn)
+output_219 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2418,7 +2683,7 @@ output_198 (operands, insn)
}
static char *
-output_199 (operands, insn)
+output_220 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2432,7 +2697,7 @@ output_199 (operands, insn)
}
static char *
-output_200 (operands, insn)
+output_221 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2446,7 +2711,7 @@ output_200 (operands, insn)
}
static char *
-output_201 (operands, insn)
+output_222 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2460,7 +2725,7 @@ output_201 (operands, insn)
}
static char *
-output_202 (operands, insn)
+output_223 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2474,7 +2739,7 @@ output_202 (operands, insn)
}
static char *
-output_203 (operands, insn)
+output_224 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2488,7 +2753,7 @@ output_203 (operands, insn)
}
static char *
-output_204 (operands, insn)
+output_225 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2502,7 +2767,7 @@ output_204 (operands, insn)
}
static char *
-output_205 (operands, insn)
+output_226 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2518,7 +2783,7 @@ output_205 (operands, insn)
}
static char *
-output_206 (operands, insn)
+output_227 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2531,7 +2796,7 @@ output_206 (operands, insn)
}
static char *
-output_207 (operands, insn)
+output_228 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2544,7 +2809,7 @@ output_207 (operands, insn)
}
static char *
-output_208 (operands, insn)
+output_229 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2556,7 +2821,7 @@ output_208 (operands, insn)
}
static char *
-output_209 (operands, insn)
+output_230 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2588,7 +2853,7 @@ output_209 (operands, insn)
}
static char *
-output_210 (operands, insn)
+output_231 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2646,7 +2911,7 @@ output_210 (operands, insn)
}
static char *
-output_212 (operands, insn)
+output_233 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2660,7 +2925,7 @@ output_212 (operands, insn)
}
static char *
-output_214 (operands, insn)
+output_235 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2675,7 +2940,7 @@ output_214 (operands, insn)
}
static char *
-output_216 (operands, insn)
+output_237 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2689,7 +2954,7 @@ output_216 (operands, insn)
}
static char *
-output_218 (operands, insn)
+output_239 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2697,7 +2962,7 @@ output_218 (operands, insn)
}
static char *
-output_220 (operands, insn)
+output_241 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2711,7 +2976,7 @@ output_220 (operands, insn)
}
static char *
-output_222 (operands, insn)
+output_243 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2719,7 +2984,7 @@ output_222 (operands, insn)
}
static char *
-output_224 (operands, insn)
+output_245 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2733,7 +2998,7 @@ output_224 (operands, insn)
}
static char *
-output_226 (operands, insn)
+output_247 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2741,7 +3006,7 @@ output_226 (operands, insn)
}
static char *
-output_228 (operands, insn)
+output_249 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2755,7 +3020,7 @@ output_228 (operands, insn)
}
static char *
-output_230 (operands, insn)
+output_251 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2763,7 +3028,7 @@ output_230 (operands, insn)
}
static char *
-output_232 (operands, insn)
+output_253 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2777,7 +3042,7 @@ output_232 (operands, insn)
}
static char *
-output_234 (operands, insn)
+output_255 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2791,7 +3056,7 @@ output_234 (operands, insn)
}
static char *
-output_236 (operands, insn)
+output_257 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2805,7 +3070,7 @@ output_236 (operands, insn)
}
static char *
-output_240 (operands, insn)
+output_261 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2819,7 +3084,7 @@ output_240 (operands, insn)
}
static char *
-output_244 (operands, insn)
+output_265 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2833,7 +3098,7 @@ output_244 (operands, insn)
}
static char *
-output_248 (operands, insn)
+output_269 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2847,7 +3112,7 @@ output_248 (operands, insn)
}
static char *
-output_251 (operands, insn)
+output_272 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2861,7 +3126,7 @@ output_251 (operands, insn)
}
static char *
-output_252 (operands, insn)
+output_273 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2875,7 +3140,7 @@ output_252 (operands, insn)
}
static char *
-output_253 (operands, insn)
+output_274 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2889,7 +3154,7 @@ output_253 (operands, insn)
}
static char *
-output_255 (operands, insn)
+output_276 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2903,7 +3168,7 @@ output_255 (operands, insn)
}
static char *
-output_257 (operands, insn)
+output_278 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2917,7 +3182,7 @@ output_257 (operands, insn)
}
static char *
-output_259 (operands, insn)
+output_280 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2931,7 +3196,7 @@ output_259 (operands, insn)
}
static char *
-output_262 (operands, insn)
+output_283 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2944,7 +3209,7 @@ output_262 (operands, insn)
}
static char *
-output_264 (operands, insn)
+output_285 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2966,7 +3231,7 @@ output_264 (operands, insn)
}
static char *
-output_265 (operands, insn)
+output_286 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2979,7 +3244,7 @@ output_265 (operands, insn)
}
static char *
-output_267 (operands, insn)
+output_288 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -2997,7 +3262,7 @@ output_267 (operands, insn)
}
static char *
-output_270 (operands, insn)
+output_291 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3015,7 +3280,7 @@ output_270 (operands, insn)
}
static char *
-output_273 (operands, insn)
+output_294 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3035,7 +3300,7 @@ output_273 (operands, insn)
}
static char *
-output_276 (operands, insn)
+output_297 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3055,60 +3320,7 @@ output_276 (operands, insn)
}
static char *
-output_279 (operands, insn)
- rtx *operands;
- rtx insn;
-{
-
-{
- rtx addr = operands[1];
-
- if (GET_CODE (operands[0]) == MEM
- && ! CONSTANT_ADDRESS_P (XEXP (operands[0], 0)))
- {
- operands[0] = XEXP (operands[0], 0);
- output_asm_insn (AS1 (call,%*%0), operands);
- }
- else
- output_asm_insn (AS1 (call,%P0), operands);
-
- operands[2] = gen_rtx (REG, SImode, 0);
- output_asm_insn (AS2 (mov%L2,%2,%1), operands);
-
- operands[2] = gen_rtx (REG, SImode, 1);
- operands[1] = adj_offsettable_operand (addr, 4);
- output_asm_insn (AS2 (mov%L2,%2,%1), operands);
-
- operands[1] = adj_offsettable_operand (addr, 8);
- return AS1 (fnsave,%1);
-}
-}
-
-static char *
-output_280 (operands, insn)
- rtx *operands;
- rtx insn;
-{
-
-{
- rtx addr = operands[1];
-
- output_asm_insn (AS1 (call,%P0), operands);
-
- operands[2] = gen_rtx (REG, SImode, 0);
- output_asm_insn (AS2 (mov%L2,%2,%1), operands);
-
- operands[2] = gen_rtx (REG, SImode, 1);
- operands[1] = adj_offsettable_operand (addr, 4);
- output_asm_insn (AS2 (mov%L2,%2,%1), operands);
-
- operands[1] = adj_offsettable_operand (addr, 8);
- return AS1 (fnsave,%1);
-}
-}
-
-static char *
-output_283 (operands, insn)
+output_301 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3120,7 +3332,7 @@ output_283 (operands, insn)
}
static char *
-output_286 (operands, insn)
+output_304 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3155,7 +3367,7 @@ output_286 (operands, insn)
}
static char *
-output_288 (operands, insn)
+output_306 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3187,7 +3399,7 @@ output_288 (operands, insn)
}
static char *
-output_289 (operands, insn)
+output_307 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3207,7 +3419,7 @@ output_289 (operands, insn)
}
static char *
-output_291 (operands, insn)
+output_309 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3246,7 +3458,7 @@ output_291 (operands, insn)
}
static char *
-output_293 (operands, insn)
+output_311 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3284,111 +3496,111 @@ output_293 (operands, insn)
}
static char *
-output_294 (operands, insn)
+output_312 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_295 (operands, insn)
+output_313 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_296 (operands, insn)
+output_314 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_297 (operands, insn)
+output_315 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_298 (operands, insn)
+output_316 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_299 (operands, insn)
+output_317 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_300 (operands, insn)
+output_318 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_301 (operands, insn)
+output_319 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_302 (operands, insn)
+output_320 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_303 (operands, insn)
+output_321 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_304 (operands, insn)
+output_322 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_305 (operands, insn)
+output_323 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_306 (operands, insn)
+output_324 (operands, insn)
rtx *operands;
rtx insn;
{
- return (char *) output_387_binary_op (insn, operands);
+ return output_387_binary_op (insn, operands);
}
static char *
-output_308 (operands, insn)
+output_326 (operands, insn)
rtx *operands;
rtx insn;
{
@@ -3454,9 +3666,28 @@ char * const insn_template[] =
0,
"push%L0 %1",
"push%L0 %1",
+ "push%L0 %1",
0,
0,
"push%W0 %1",
+ "push%W0 %1",
+ "push%W0 %1",
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
0,
0,
0,
@@ -3537,6 +3768,8 @@ char * const insn_template[] =
"imul%B0 %2",
"mul%L0 %2",
"imul%L0 %2",
+ "mul%L0 %2",
+ "imul%L0 %2",
0,
0,
0,
@@ -3685,10 +3918,7 @@ char * const insn_template[] =
0,
"call %P1",
0,
- 0,
- 0,
- 0,
- "frstor %0",
+ "",
0,
"nop",
0,
@@ -3768,29 +3998,29 @@ char *(*const insn_outfun[])() =
0,
0,
0,
- output_49,
0,
- output_51,
- output_52,
- output_53,
- output_54,
+ output_50,
+ 0,
+ 0,
+ 0,
+ 0,
output_55,
- output_56,
+ 0,
output_57,
output_58,
output_59,
output_60,
- output_61,
+ 0,
output_62,
- output_63,
+ 0,
output_64,
- output_65,
+ 0,
output_66,
output_67,
output_68,
output_69,
output_70,
- output_71,
+ 0,
output_72,
output_73,
output_74,
@@ -3800,55 +4030,72 @@ char *(*const insn_outfun[])() =
output_78,
output_79,
output_80,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
+ output_81,
+ output_82,
+ output_83,
+ output_84,
+ output_85,
+ output_86,
output_87,
output_88,
output_89,
- 0,
- 0,
- 0,
+ output_90,
+ output_91,
+ output_92,
output_93,
output_94,
output_95,
0,
+ output_97,
+ output_98,
+ output_99,
+ 0,
0,
0,
0,
0,
0,
- output_102,
- output_103,
- output_104,
- output_105,
output_106,
output_107,
output_108,
- output_109,
- output_110,
- output_111,
+ 0,
+ 0,
+ 0,
output_112,
+ output_113,
+ output_114,
0,
0,
0,
- output_116,
- output_117,
- output_118,
- output_119,
0,
0,
0,
+ output_121,
+ output_122,
output_123,
output_124,
output_125,
output_126,
+ output_127,
+ output_128,
+ output_129,
+ output_130,
+ output_131,
0,
0,
0,
+ output_135,
+ output_136,
+ output_137,
+ output_138,
+ 0,
+ 0,
+ 0,
+ output_142,
+ output_143,
+ output_144,
+ output_145,
+ 0,
0,
0,
0,
@@ -3858,23 +4105,25 @@ char *(*const insn_outfun[])() =
0,
0,
0,
- output_139,
0,
- output_141,
- output_142,
- output_143,
- output_144,
- output_145,
- output_146,
- output_147,
- output_148,
- output_149,
- output_150,
- output_151,
- output_152,
0,
0,
0,
+ output_160,
+ 0,
+ output_162,
+ output_163,
+ output_164,
+ output_165,
+ output_166,
+ output_167,
+ output_168,
+ output_169,
+ output_170,
+ output_171,
+ output_172,
+ output_173,
+ 0,
0,
0,
0,
@@ -3901,133 +4150,132 @@ char *(*const insn_outfun[])() =
0,
0,
0,
- output_182,
- output_183,
- output_184,
- output_185,
- output_186,
0,
- output_188,
- output_189,
- output_190,
- output_191,
- output_192,
0,
- output_194,
- output_195,
- output_196,
- output_197,
- output_198,
- output_199,
- output_200,
- output_201,
- output_202,
output_203,
output_204,
output_205,
output_206,
output_207,
- output_208,
+ 0,
output_209,
output_210,
- 0,
+ output_211,
output_212,
+ output_213,
0,
- output_214,
- 0,
+ output_215,
output_216,
- 0,
+ output_217,
output_218,
- 0,
+ output_219,
output_220,
- 0,
+ output_221,
output_222,
- 0,
+ output_223,
output_224,
- 0,
+ output_225,
output_226,
- 0,
+ output_227,
output_228,
- 0,
+ output_229,
output_230,
+ output_231,
0,
- output_232,
- 0,
- output_234,
- 0,
- output_236,
- 0,
+ output_233,
0,
+ output_235,
0,
- output_240,
+ output_237,
0,
+ output_239,
0,
+ output_241,
0,
- output_244,
+ output_243,
0,
+ output_245,
0,
+ output_247,
0,
- output_248,
- 0,
+ output_249,
0,
output_251,
- output_252,
+ 0,
output_253,
0,
output_255,
0,
output_257,
0,
- output_259,
0,
0,
- output_262,
+ output_261,
+ 0,
+ 0,
0,
- output_264,
output_265,
0,
- output_267,
0,
0,
- output_270,
+ output_269,
0,
0,
+ output_272,
output_273,
- 0,
+ output_274,
0,
output_276,
0,
+ output_278,
0,
- output_279,
output_280,
0,
0,
output_283,
0,
- 0,
+ output_285,
output_286,
0,
output_288,
- output_289,
+ 0,
0,
output_291,
0,
- output_293,
+ 0,
output_294,
- output_295,
- output_296,
+ 0,
+ 0,
output_297,
- output_298,
- output_299,
- output_300,
+ 0,
+ 0,
+ 0,
output_301,
- output_302,
- output_303,
+ 0,
+ 0,
output_304,
- output_305,
- output_306,
0,
- output_308,
+ output_306,
+ output_307,
+ 0,
+ output_309,
+ 0,
+ output_311,
+ output_312,
+ output_313,
+ output_314,
+ output_315,
+ output_316,
+ output_317,
+ output_318,
+ output_319,
+ output_320,
+ output_321,
+ output_322,
+ output_323,
+ output_324,
+ 0,
+ output_326,
};
rtx (*const insn_gen_function[]) () =
@@ -4080,22 +4328,41 @@ rtx (*const insn_gen_function[]) () =
0,
0,
0,
+ 0,
gen_movsi,
0,
0,
+ 0,
+ 0,
gen_movhi,
+ 0,
gen_movstricthi,
0,
+ 0,
+ 0,
+ 0,
gen_movqi,
+ 0,
gen_movstrictqi,
0,
gen_movsf,
- 0,
- gen_swapdf,
+ gen_movsf_push_nomove,
+ gen_movsf_push,
+ gen_movsf_mem,
+ gen_movsf_normal,
+ gen_swapsf,
gen_movdf,
- 0,
- gen_swapxf,
+ gen_movdf_push_nomove,
+ gen_movdf_push,
+ gen_movdf_mem,
+ gen_movdf_normal,
+ gen_swapdf,
gen_movxf,
+ gen_movxf_push_nomove,
+ gen_movxf_push,
+ gen_movxf_mem,
+ gen_movxf_normal,
+ gen_swapxf,
0,
gen_movdi,
gen_zero_extendhisi2,
@@ -4144,7 +4411,7 @@ rtx (*const insn_gen_function[]) () =
gen_addsi3,
gen_addhi3,
gen_addqi3,
- 0,
+ gen_movsi_lea,
gen_addxf3,
gen_adddf3,
gen_addsf3,
@@ -4163,6 +4430,8 @@ rtx (*const insn_gen_function[]) () =
gen_mulqihi3,
gen_umulsidi3,
gen_mulsidi3,
+ gen_umulsi3_highpart,
+ gen_smulsi3_highpart,
gen_mulxf3,
gen_muldf3,
gen_mulsf3,
@@ -4311,10 +4580,7 @@ rtx (*const insn_gen_function[]) () =
0,
0,
gen_untyped_call,
- 0,
- 0,
- gen_untyped_return,
- gen_update_return,
+ gen_blockage,
gen_return,
gen_nop,
gen_movstrsi,
@@ -4391,25 +4657,44 @@ char *insn_name[] =
"cmpsf_ccfpeq+1",
"cmpsf_ccfpeq+2",
"cmpsf_ccfpeq+3",
+ "movsi-3",
"movsi-2",
"movsi-1",
"movsi",
"movsi+1",
+ "movsi+2",
+ "movhi-2",
"movhi-1",
"movhi",
+ "movhi+1",
"movstricthi",
"movstricthi+1",
+ "movstricthi+2",
+ "movqi-2",
+ "movqi-1",
"movqi",
+ "movqi+1",
"movstrictqi",
"movstrictqi+1",
"movsf",
- "movsf+1",
- "swapdf",
+ "movsf_push_nomove",
+ "movsf_push",
+ "movsf_mem",
+ "movsf_normal",
+ "swapsf",
"movdf",
- "movdf+1",
- "swapxf",
+ "movdf_push_nomove",
+ "movdf_push",
+ "movdf_mem",
+ "movdf_normal",
+ "swapdf",
"movxf",
- "movxf+1",
+ "movxf_push_nomove",
+ "movxf_push",
+ "movxf_mem",
+ "movxf_normal",
+ "swapxf",
+ "swapxf+1",
"movdi",
"zero_extendhisi2",
"zero_extendqihi2",
@@ -4457,7 +4742,7 @@ char *insn_name[] =
"addsi3",
"addhi3",
"addqi3",
- "addqi3+1",
+ "movsi_lea",
"addxf3",
"adddf3",
"addsf3",
@@ -4476,6 +4761,8 @@ char *insn_name[] =
"mulqihi3",
"umulsidi3",
"mulsidi3",
+ "umulsi3_highpart",
+ "smulsi3_highpart",
"mulxf3",
"muldf3",
"mulsf3",
@@ -4624,10 +4911,7 @@ char *insn_name[] =
"call_value+1",
"untyped_call-1",
"untyped_call",
- "untyped_call+1",
- "untyped_return-1",
- "untyped_return",
- "update_return",
+ "blockage",
"return",
"nop",
"movstrsi",
@@ -4726,6 +5010,25 @@ const int insn_n_operands[] =
2,
2,
2,
+ 3,
+ 3,
+ 2,
+ 2,
+ 2,
+ 2,
+ 4,
+ 4,
+ 2,
+ 2,
+ 2,
+ 2,
+ 4,
+ 4,
+ 2,
+ 2,
+ 4,
+ 4,
+ 2,
2,
2,
2,
@@ -4767,7 +5070,7 @@ const int insn_n_operands[] =
2,
2,
2,
- 3,
+ 4,
3,
3,
3,
@@ -4775,6 +5078,7 @@ const int insn_n_operands[] =
3,
3,
3,
+ 4,
3,
3,
3,
@@ -4789,7 +5093,8 @@ const int insn_n_operands[] =
3,
3,
3,
- 3,
+ 4,
+ 4,
3,
3,
3,
@@ -4938,10 +5243,7 @@ const int insn_n_operands[] =
3,
3,
3,
- 3,
- 3,
- 2,
- 1,
+ 0,
0,
0,
5,
@@ -5031,15 +5333,34 @@ const int insn_n_dups[] =
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
2,
0,
0,
+ 0,
+ 0,
+ 0,
2,
0,
0,
0,
0,
0,
+ 2,
+ 0,
+ 0,
+ 0,
+ 0,
0,
0,
0,
@@ -5111,6 +5432,8 @@ const int insn_n_dups[] =
0,
0,
0,
+ 0,
+ 0,
2,
2,
2,
@@ -5254,9 +5577,6 @@ const int insn_n_dups[] =
0,
0,
0,
- 0,
- 0,
- 0,
2,
2,
3,
@@ -5333,24 +5653,43 @@ char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =
{ "%qm", "qi", },
{ "=<", "g", },
{ "=<", "ri", },
+ { "=<", "ri", },
{ "", "", },
{ "=g,r", "ri,m", },
{ "=<", "g", },
+ { "=<", "ri", },
+ { "=<", "ri", },
+ { "", "", },
{ "=g,r", "ri,m", },
+ { "", "", },
{ "+g,r", "ri,m", },
+ { "=<", "n", },
{ "=<", "q", },
+ { "=<", "q", },
+ { "", "", },
{ "=q,*r,qm", "*g,q,qn", },
+ { "", "", },
{ "+qm,q", "*qn,m", },
+ { "", "", },
{ "=<,<", "gF,f", },
+ { "=<,<,<,<", "rF,f,m,m", "=X,X,r,X", },
+ { "=m", "m", "=&r", },
{ "=*rfm,*rf,f,!*rm", "*rf,*rfm,fG,fF", },
- { "=<,<", "gF,f", },
{ "f", "f", },
- { "=*rfm,*rf,f,!*rm", "*rf,*rfm,fG,fF", },
+ { "", "", },
{ "=<,<", "gF,f", },
+ { "=<,<,<,<,<", "rF,f,o,o,o", "=X,X,&r,&r,X", "=X,X,&r,X,X", },
+ { "=o,o", "o,o", "=&r,&r", "=&r,X", },
+ { "=f,fm,!*rf,!*rm", "fmG,f,*rfm,*rfF", },
{ "f", "f", },
+ { "", "", },
+ { "=<,<", "gF,f", },
+ { "=<,<,<,<,<", "rF,f,o,o,o", "=X,X,&r,&r,X", "=X,X,&r,X,X", },
+ { "=o,o", "o,o", "=&r,&r", "=&r,X", },
{ "=f,fm,!*rf,!*rm", "fmG,f,*rfm,*rfF", },
- { "=<", "roiF", },
- { "=r,rm", "m,riF", },
+ { "f", "f", },
+ { "=<,<,<,<", "riF,o,o,o", "=X,&r,&r,X", "=X,&r,X,X", },
+ { "=o,o,r,rm", "o,o,m,riF", "=&r,&r,X,X", "=&r,X,X,X", },
{ "=r", "rm", },
{ "=r", "qm", },
{ "=r", "qm", },
@@ -5393,7 +5732,7 @@ char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =
{ "=f", "rm", },
{ "=f,f", "m,!*r", },
{ "=f", "rm", },
- { "=&r,ro", "%0,0", "o,riF", },
+ { "=&r,ro,o,&r,ro,o,&r,o,o,o", "%0,0,0,o,riF,o,or,riF,riF,o", "o,riF,o,0,0,0,oriF,riF,o,o", "=X,X,&r,X,X,&r,X,X,&r,&r", },
{ "=?r,rm,r", "%r,0,0", "ri,ri,rm", },
{ "=rm,r", "%0,0", "ri,rm", },
{ "=qm,q", "%0,0", "qn,qmn", },
@@ -5401,7 +5740,7 @@ char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =
{ "", "", "", },
{ "", "", "", },
{ "", "", "", },
- { "=&r,ro", "0,0", "o,riF", },
+ { "=&r,ro,&r,o,o", "0,0,roiF,riF,o", "o,riF,roiF,riF,o", "=X,X,X,X,&r", },
{ "=rm,r", "0,0", "ri,rm", },
{ "=rm,r", "0,0", "ri,rm", },
{ "=qm,q", "0,0", "qn,qmn", },
@@ -5416,6 +5755,8 @@ char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =
{ "=a", "%0", "qm", },
{ "=A", "%0", "rm", },
{ "=A", "%0", "rm", },
+ { "=d", "%a", "rm", "=a", },
+ { "=d", "%a", "rm", "=a", },
{ "", "", "", },
{ "", "", "", },
{ "", "", "", },
@@ -5564,10 +5905,7 @@ char *const insn_operand_constraint[][MAX_RECOG_OPERANDS] =
{ "=rf", "m", "g", },
{ "=rf", "", "g", },
{ "", "", "", },
- { "m", "o", "", },
- { "", "o", "", },
- { "", "", },
- { "m", },
+ { 0 },
{ 0 },
{ 0 },
{ "", "", "", "", "", },
@@ -5648,22 +5986,41 @@ const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =
{ SImode, SImode, },
{ SImode, SImode, },
{ SImode, SImode, },
+ { SImode, SImode, },
+ { HImode, HImode, },
{ HImode, HImode, },
{ HImode, HImode, },
{ HImode, HImode, },
+ { HImode, HImode, },
+ { HImode, HImode, },
+ { HImode, HImode, },
+ { QImode, QImode, },
+ { QImode, QImode, },
{ QImode, QImode, },
{ QImode, QImode, },
{ QImode, QImode, },
+ { QImode, QImode, },
+ { QImode, QImode, },
+ { SFmode, SFmode, },
{ SFmode, SFmode, },
+ { SFmode, SFmode, SImode, },
+ { SFmode, SFmode, SImode, },
{ SFmode, SFmode, },
+ { SFmode, SFmode, },
+ { DFmode, DFmode, },
{ DFmode, DFmode, },
+ { DFmode, DFmode, SImode, SImode, },
+ { DFmode, DFmode, SImode, SImode, },
{ DFmode, DFmode, },
{ DFmode, DFmode, },
{ XFmode, XFmode, },
{ XFmode, XFmode, },
+ { XFmode, XFmode, SImode, SImode, },
+ { XFmode, XFmode, SImode, SImode, },
{ XFmode, XFmode, },
- { DImode, DImode, },
- { DImode, DImode, },
+ { XFmode, XFmode, },
+ { DImode, DImode, SImode, SImode, },
+ { DImode, DImode, SImode, SImode, },
{ SImode, HImode, },
{ HImode, QImode, },
{ SImode, QImode, },
@@ -5706,7 +6063,7 @@ const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =
{ DFmode, SImode, },
{ XFmode, SImode, },
{ SFmode, SImode, },
- { DImode, DImode, DImode, },
+ { DImode, DImode, DImode, SImode, },
{ SImode, SImode, SImode, },
{ HImode, HImode, HImode, },
{ QImode, QImode, QImode, },
@@ -5714,7 +6071,7 @@ const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =
{ XFmode, XFmode, XFmode, },
{ DFmode, DFmode, DFmode, },
{ SFmode, SFmode, SFmode, },
- { DImode, DImode, DImode, },
+ { DImode, DImode, DImode, SImode, },
{ SImode, SImode, SImode, },
{ HImode, HImode, HImode, },
{ QImode, QImode, QImode, },
@@ -5729,6 +6086,8 @@ const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =
{ HImode, QImode, QImode, },
{ DImode, SImode, SImode, },
{ DImode, SImode, SImode, },
+ { SImode, SImode, SImode, SImode, },
+ { SImode, SImode, SImode, SImode, },
{ XFmode, XFmode, XFmode, },
{ DFmode, DFmode, DFmode, },
{ SFmode, SFmode, SFmode, },
@@ -5876,11 +6235,8 @@ const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS] =
{ VOIDmode, QImode, SImode, },
{ VOIDmode, QImode, SImode, },
{ VOIDmode, SImode, SImode, },
- { QImode, BLKmode, VOIDmode, },
- { QImode, DImode, VOIDmode, },
- { SImode, DImode, VOIDmode, },
- { BLKmode, VOIDmode, },
- { SImode, },
+ { VOIDmode, VOIDmode, VOIDmode, },
+ { VOIDmode },
{ VOIDmode },
{ VOIDmode },
{ BLKmode, BLKmode, SImode, SImode, SImode, },
@@ -5963,20 +6319,39 @@ const char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =
{ 0, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, },
+ { 0, 0, },
+ { 0, 0, },
+ { 0, 0, },
{ 1, 0, },
+ { 1, 0, },
+ { 0, 0, },
+ { 0, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, },
+ { 1, 0, },
{ 1, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, 0, },
+ { 0, 0, 0, },
+ { 0, 0, },
{ 0, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, 0, 0, },
+ { 0, 0, 0, 0, },
+ { 0, 0, },
{ 0, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, 0, 0, },
+ { 0, 0, 0, 0, },
{ 0, 0, },
{ 0, 0, },
+ { 0, 0, 0, 0, },
+ { 0, 0, 0, 0, },
{ 0, 0, },
{ 0, 0, },
{ 0, 0, },
@@ -6019,7 +6394,7 @@ const char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =
{ 0, 0, },
{ 0, 0, },
{ 0, 0, },
- { 0, 0, 0, },
+ { 0, 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
@@ -6027,6 +6402,7 @@ const char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
+ { 0, 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
@@ -6041,7 +6417,8 @@ const char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
- { 0, 0, 0, },
+ { 0, 0, 0, 0, },
+ { 0, 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
@@ -6190,10 +6567,7 @@ const char insn_operand_strict_low[][MAX_RECOG_OPERANDS] =
{ 0, 0, 0, },
{ 0, 0, 0, },
{ 0, 0, 0, },
- { 0, 0, 0, },
- { 0, 0, 0, },
- { 0, 0, },
- { 0, },
+ { 0 },
{ 0 },
{ 0 },
{ 0, 0, 0, 0, 0, },
@@ -6228,12 +6602,12 @@ extern int scratch_operand ();
extern int general_operand ();
extern int VOIDmode_compare_op ();
extern int push_operand ();
+extern int nonmemory_operand ();
+extern int immediate_operand ();
extern int memory_operand ();
extern int address_operand ();
-extern int nonmemory_operand ();
extern int const_int_operand ();
extern int indirect_operand ();
-extern int immediate_operand ();
extern int call_insn_operand ();
extern int symbolic_operand ();
extern int binary_387_op ();
@@ -6287,25 +6661,44 @@ int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =
{ general_operand, general_operand, },
{ general_operand, general_operand, },
{ push_operand, general_operand, },
+ { push_operand, nonmemory_operand, },
{ push_operand, general_operand, },
{ general_operand, general_operand, },
{ general_operand, general_operand, },
{ push_operand, general_operand, },
+ { push_operand, nonmemory_operand, },
+ { push_operand, general_operand, },
+ { general_operand, general_operand, },
+ { general_operand, general_operand, },
+ { general_operand, general_operand, },
+ { general_operand, general_operand, },
+ { push_operand, immediate_operand, },
+ { push_operand, nonimmediate_operand, },
+ { push_operand, register_operand, },
{ general_operand, general_operand, },
{ general_operand, general_operand, },
- { push_operand, general_operand, },
{ general_operand, general_operand, },
{ general_operand, general_operand, },
- { push_operand, general_operand, },
{ general_operand, general_operand, },
{ push_operand, general_operand, },
+ { push_operand, general_operand, scratch_operand, },
+ { memory_operand, memory_operand, scratch_operand, },
+ { general_operand, general_operand, },
{ register_operand, register_operand, },
{ general_operand, general_operand, },
{ push_operand, general_operand, },
+ { push_operand, general_operand, scratch_operand, scratch_operand, },
+ { memory_operand, memory_operand, scratch_operand, scratch_operand, },
+ { general_operand, general_operand, },
{ register_operand, register_operand, },
{ general_operand, general_operand, },
{ push_operand, general_operand, },
+ { push_operand, general_operand, scratch_operand, scratch_operand, },
+ { memory_operand, memory_operand, scratch_operand, scratch_operand, },
{ general_operand, general_operand, },
+ { register_operand, register_operand, },
+ { push_operand, general_operand, scratch_operand, scratch_operand, },
+ { general_operand, general_operand, scratch_operand, scratch_operand, },
{ general_operand, nonimmediate_operand, },
{ general_operand, nonimmediate_operand, },
{ general_operand, nonimmediate_operand, },
@@ -6348,7 +6741,7 @@ int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =
{ register_operand, nonimmediate_operand, },
{ register_operand, general_operand, },
{ register_operand, nonimmediate_operand, },
- { general_operand, general_operand, general_operand, },
+ { general_operand, general_operand, general_operand, scratch_operand, },
{ general_operand, general_operand, general_operand, },
{ general_operand, general_operand, general_operand, },
{ general_operand, general_operand, general_operand, },
@@ -6356,7 +6749,7 @@ int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
- { general_operand, general_operand, general_operand, },
+ { general_operand, general_operand, general_operand, scratch_operand, },
{ general_operand, general_operand, general_operand, },
{ general_operand, general_operand, general_operand, },
{ general_operand, general_operand, general_operand, },
@@ -6371,6 +6764,8 @@ int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =
{ general_operand, nonimmediate_operand, nonimmediate_operand, },
{ register_operand, register_operand, nonimmediate_operand, },
{ register_operand, register_operand, nonimmediate_operand, },
+ { register_operand, register_operand, nonimmediate_operand, scratch_operand, },
+ { register_operand, register_operand, nonimmediate_operand, scratch_operand, },
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
{ register_operand, nonimmediate_operand, nonimmediate_operand, },
@@ -6518,11 +6913,8 @@ int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS])() =
{ 0, indirect_operand, general_operand, },
{ 0, call_insn_operand, general_operand, },
{ 0, symbolic_operand, general_operand, },
- { indirect_operand, memory_operand, 0, },
- { call_insn_operand, memory_operand, 0, },
- { symbolic_operand, memory_operand, 0, },
- { memory_operand, 0, },
- { memory_operand, },
+ { 0, 0, 0, },
+ { 0 },
{ 0 },
{ 0 },
{ memory_operand, memory_operand, const_int_operand, const_int_operand, scratch_operand, },
@@ -6601,24 +6993,43 @@ const int insn_n_alternatives[] =
1,
1,
1,
+ 1,
0,
2,
1,
+ 1,
+ 1,
+ 0,
2,
+ 0,
2,
1,
+ 1,
+ 1,
+ 0,
3,
+ 0,
2,
+ 0,
2,
4,
- 2,
1,
4,
- 2,
1,
+ 0,
+ 2,
+ 5,
+ 2,
4,
1,
+ 0,
+ 2,
+ 5,
2,
+ 4,
+ 1,
+ 4,
+ 4,
1,
1,
1,
@@ -6661,7 +7072,7 @@ const int insn_n_alternatives[] =
1,
2,
1,
- 2,
+ 10,
3,
2,
2,
@@ -6669,7 +7080,7 @@ const int insn_n_alternatives[] =
0,
0,
0,
- 2,
+ 5,
2,
2,
2,
@@ -6684,6 +7095,8 @@ const int insn_n_alternatives[] =
1,
1,
1,
+ 1,
+ 1,
0,
0,
0,
@@ -6832,10 +7245,7 @@ const int insn_n_alternatives[] =
1,
1,
0,
- 1,
- 1,
0,
- 1,
0,
0,
0,
OpenPOWER on IntegriCloud