* config/tc-mips.c (imm_expr): Expand comment.
	(set_at, macro, mips16_macro): Expect imm_expr to be O_constant
	when populated.
This commit is contained in:
Richard Sandiford 2013-08-19 19:58:47 +00:00
parent e423441da4
commit b0e6f033d5
2 changed files with 48 additions and 78 deletions

View File

@ -1,3 +1,9 @@
2013-08-19 Richard Sandiford <rdsandiford@googlemail.com>
* config/tc-mips.c (imm_expr): Expand comment.
(set_at, macro, mips16_macro): Expect imm_expr to be O_constant
when populated.
2013-08-19 Richard Sandiford <rdsandiford@googlemail.com> 2013-08-19 Richard Sandiford <rdsandiford@googlemail.com>
* config/tc-mips.c (imm2_expr): Delete. * config/tc-mips.c (imm2_expr): Delete.

View File

@ -1763,7 +1763,7 @@ mips_mark_labels (void)
static char *expr_end; static char *expr_end;
/* An expression in a macro instruction. This is set by mips_ip and /* An expression in a macro instruction. This is set by mips_ip and
mips16_ip. */ mips16_ip and when populated is always an O_constant. */
static expressionS imm_expr; static expressionS imm_expr;
@ -8067,8 +8067,7 @@ macro_build_ldst_constoffset (expressionS *ep, const char *op,
static void static void
set_at (int reg, int unsignedp) set_at (int reg, int unsignedp)
{ {
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number < 0x8000) && imm_expr.X_add_number < 0x8000)
macro_build (&imm_expr, unsignedp ? "sltiu" : "slti", "t,r,j", macro_build (&imm_expr, unsignedp ? "sltiu" : "slti", "t,r,j",
AT, reg, BFD_RELOC_LO16); AT, reg, BFD_RELOC_LO16);
@ -9083,11 +9082,11 @@ macro (struct mips_cl_insn *ip, char *str)
s2 = "dadd"; s2 = "dadd";
if (!mips_opts.micromips) if (!mips_opts.micromips)
goto do_addi; goto do_addi;
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x200
&& imm_expr.X_add_number >= -0x200
&& imm_expr.X_add_number < 0x200) && imm_expr.X_add_number < 0x200)
{ {
macro_build (NULL, s, "t,r,.", op[0], op[1], imm_expr.X_add_number); macro_build (NULL, s, "t,r,.", op[0], op[1],
(int) imm_expr.X_add_number);
break; break;
} }
goto do_addi_i; goto do_addi_i;
@ -9096,8 +9095,7 @@ macro (struct mips_cl_insn *ip, char *str)
s = "daddiu"; s = "daddiu";
s2 = "daddu"; s2 = "daddu";
do_addi: do_addi:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number < 0x8000) && imm_expr.X_add_number < 0x8000)
{ {
macro_build (&imm_expr, s, "t,r,j", op[0], op[1], BFD_RELOC_LO16); macro_build (&imm_expr, s, "t,r,j", op[0], op[1], BFD_RELOC_LO16);
@ -9125,8 +9123,7 @@ macro (struct mips_cl_insn *ip, char *str)
s = "xori"; s = "xori";
s2 = "xor"; s2 = "xor";
do_bit: do_bit:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= 0
&& imm_expr.X_add_number >= 0
&& imm_expr.X_add_number < 0x10000) && imm_expr.X_add_number < 0x10000)
{ {
if (mask != M_NOR_I) if (mask != M_NOR_I)
@ -9179,7 +9176,7 @@ macro (struct mips_cl_insn *ip, char *str)
case M_BEQL_I: case M_BEQL_I:
case M_BNE_I: case M_BNE_I:
case M_BNEL_I: case M_BNEL_I:
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
op[1] = 0; op[1] = 0;
else else
{ {
@ -9222,7 +9219,7 @@ macro (struct mips_cl_insn *ip, char *str)
likely = 1; likely = 1;
case M_BGT_I: case M_BGT_I:
/* Check for > max integer. */ /* Check for > max integer. */
if (imm_expr.X_op == O_constant && imm_expr.X_add_number >= GPR_SMAX) if (imm_expr.X_add_number >= GPR_SMAX)
{ {
do_false: do_false:
/* Result is always false. */ /* Result is always false. */
@ -9232,27 +9229,25 @@ macro (struct mips_cl_insn *ip, char *str)
macro_build_branch_rsrt (M_BNEL, &offset_expr, ZERO, ZERO); macro_build_branch_rsrt (M_BNEL, &offset_expr, ZERO, ZERO);
break; break;
} }
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
++imm_expr.X_add_number; ++imm_expr.X_add_number;
/* FALLTHROUGH */ /* FALLTHROUGH */
case M_BGE_I: case M_BGE_I:
case M_BGEL_I: case M_BGEL_I:
if (mask == M_BGEL_I) if (mask == M_BGEL_I)
likely = 1; likely = 1;
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
{ {
macro_build_branch_rs (likely ? M_BGEZL : M_BGEZ, macro_build_branch_rs (likely ? M_BGEZL : M_BGEZ,
&offset_expr, op[0]); &offset_expr, op[0]);
break; break;
} }
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 1) if (imm_expr.X_add_number == 1)
{ {
macro_build_branch_rs (likely ? M_BGTZL : M_BGTZ, macro_build_branch_rs (likely ? M_BGTZL : M_BGTZ,
&offset_expr, op[0]); &offset_expr, op[0]);
break; break;
} }
if (imm_expr.X_op == O_constant && imm_expr.X_add_number <= GPR_SMIN) if (imm_expr.X_add_number <= GPR_SMIN)
{ {
do_true: do_true:
/* result is always true */ /* result is always true */
@ -9288,20 +9283,17 @@ macro (struct mips_cl_insn *ip, char *str)
case M_BGTU_I: case M_BGTU_I:
if (op[0] == 0 if (op[0] == 0
|| (HAVE_32BIT_GPRS || (HAVE_32BIT_GPRS
&& imm_expr.X_op == O_constant
&& imm_expr.X_add_number == -1)) && imm_expr.X_add_number == -1))
goto do_false; goto do_false;
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
++imm_expr.X_add_number; ++imm_expr.X_add_number;
/* FALLTHROUGH */ /* FALLTHROUGH */
case M_BGEU_I: case M_BGEU_I:
case M_BGEUL_I: case M_BGEUL_I:
if (mask == M_BGEUL_I) if (mask == M_BGEUL_I)
likely = 1; likely = 1;
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
goto do_true; goto do_true;
else if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 1) else if (imm_expr.X_add_number == 1)
macro_build_branch_rsrt (likely ? M_BNEL : M_BNE, macro_build_branch_rsrt (likely ? M_BNEL : M_BNE,
&offset_expr, op[0], ZERO); &offset_expr, op[0], ZERO);
else else
@ -9365,19 +9357,17 @@ macro (struct mips_cl_insn *ip, char *str)
case M_BLEL_I: case M_BLEL_I:
likely = 1; likely = 1;
case M_BLE_I: case M_BLE_I:
if (imm_expr.X_op == O_constant && imm_expr.X_add_number >= GPR_SMAX) if (imm_expr.X_add_number >= GPR_SMAX)
goto do_true; goto do_true;
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
++imm_expr.X_add_number; ++imm_expr.X_add_number;
/* FALLTHROUGH */ /* FALLTHROUGH */
case M_BLT_I: case M_BLT_I:
case M_BLTL_I: case M_BLTL_I:
if (mask == M_BLTL_I) if (mask == M_BLTL_I)
likely = 1; likely = 1;
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
macro_build_branch_rs (likely ? M_BLTZL : M_BLTZ, &offset_expr, op[0]); macro_build_branch_rs (likely ? M_BLTZL : M_BLTZ, &offset_expr, op[0]);
else if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 1) else if (imm_expr.X_add_number == 1)
macro_build_branch_rs (likely ? M_BLEZL : M_BLEZ, &offset_expr, op[0]); macro_build_branch_rs (likely ? M_BLEZL : M_BLEZ, &offset_expr, op[0]);
else else
{ {
@ -9410,20 +9400,17 @@ macro (struct mips_cl_insn *ip, char *str)
case M_BLEU_I: case M_BLEU_I:
if (op[0] == 0 if (op[0] == 0
|| (HAVE_32BIT_GPRS || (HAVE_32BIT_GPRS
&& imm_expr.X_op == O_constant
&& imm_expr.X_add_number == -1)) && imm_expr.X_add_number == -1))
goto do_true; goto do_true;
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
++imm_expr.X_add_number; ++imm_expr.X_add_number;
/* FALLTHROUGH */ /* FALLTHROUGH */
case M_BLTU_I: case M_BLTU_I:
case M_BLTUL_I: case M_BLTUL_I:
if (mask == M_BLTUL_I) if (mask == M_BLTUL_I)
likely = 1; likely = 1;
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
goto do_false; goto do_false;
else if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 1) else if (imm_expr.X_add_number == 1)
macro_build_branch_rsrt (likely ? M_BEQL : M_BEQ, macro_build_branch_rsrt (likely ? M_BEQL : M_BEQ,
&offset_expr, op[0], ZERO); &offset_expr, op[0], ZERO);
else else
@ -9588,7 +9575,7 @@ macro (struct mips_cl_insn *ip, char *str)
s = "ddivu"; s = "ddivu";
s2 = "mfhi"; s2 = "mfhi";
do_divi: do_divi:
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
{ {
as_warn (_("Divide by zero.")); as_warn (_("Divide by zero."));
if (mips_trap) if (mips_trap)
@ -9597,7 +9584,7 @@ macro (struct mips_cl_insn *ip, char *str)
macro_build (NULL, "break", BRK_FMT, 7); macro_build (NULL, "break", BRK_FMT, 7);
break; break;
} }
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 1) if (imm_expr.X_add_number == 1)
{ {
if (strcmp (s2, "mflo") == 0) if (strcmp (s2, "mflo") == 0)
move_register (op[0], op[1]); move_register (op[0], op[1]);
@ -9605,9 +9592,7 @@ macro (struct mips_cl_insn *ip, char *str)
move_register (op[0], ZERO); move_register (op[0], ZERO);
break; break;
} }
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number == -1 && s[strlen (s) - 1] != 'u')
&& imm_expr.X_add_number == -1
&& s[strlen (s) - 1] != 'u')
{ {
if (strcmp (s2, "mflo") == 0) if (strcmp (s2, "mflo") == 0)
macro_build (NULL, dbl ? "dneg" : "neg", "d,w", op[0], op[1]); macro_build (NULL, dbl ? "dneg" : "neg", "d,w", op[0], op[1]);
@ -11324,7 +11309,8 @@ macro (struct mips_cl_insn *ip, char *str)
} }
else else
{ {
gas_assert (offset_expr.X_op == O_symbol gas_assert (imm_expr.X_op == O_absent
&& offset_expr.X_op == O_symbol
&& strcmp (segment_name (S_GET_SEGMENT && strcmp (segment_name (S_GET_SEGMENT
(offset_expr.X_add_symbol)), (offset_expr.X_add_symbol)),
".lit4") == 0 ".lit4") == 0
@ -11339,7 +11325,7 @@ macro (struct mips_cl_insn *ip, char *str)
wide, IMM_EXPR is the entire value. Otherwise IMM_EXPR is the high wide, IMM_EXPR is the entire value. Otherwise IMM_EXPR is the high
order 32 bits of the value and the low order 32 bits are either order 32 bits of the value and the low order 32 bits are either
zero or in OFFSET_EXPR. */ zero or in OFFSET_EXPR. */
if (imm_expr.X_op == O_constant || imm_expr.X_op == O_big) if (imm_expr.X_op == O_constant)
{ {
if (HAVE_64BIT_GPRS) if (HAVE_64BIT_GPRS)
load_register (op[0], &imm_expr, 1); load_register (op[0], &imm_expr, 1);
@ -11373,6 +11359,7 @@ macro (struct mips_cl_insn *ip, char *str)
} }
break; break;
} }
gas_assert (imm_expr.X_op == O_absent);
/* We know that sym is in the .rdata section. First we get the /* We know that sym is in the .rdata section. First we get the
upper 16 bits of the address. */ upper 16 bits of the address. */
@ -11417,7 +11404,7 @@ macro (struct mips_cl_insn *ip, char *str)
bits wide as well. Otherwise IMM_EXPR is the high order 32 bits of bits wide as well. Otherwise IMM_EXPR is the high order 32 bits of
the value and the low order 32 bits are either zero or in the value and the low order 32 bits are either zero or in
OFFSET_EXPR. */ OFFSET_EXPR. */
if (imm_expr.X_op == O_constant || imm_expr.X_op == O_big) if (imm_expr.X_op == O_constant)
{ {
used_at = 1; used_at = 1;
load_register (AT, &imm_expr, HAVE_64BIT_FPRS); load_register (AT, &imm_expr, HAVE_64BIT_FPRS);
@ -11441,7 +11428,8 @@ macro (struct mips_cl_insn *ip, char *str)
break; break;
} }
gas_assert (offset_expr.X_op == O_symbol gas_assert (imm_expr.X_op == O_absent
&& offset_expr.X_op == O_symbol
&& offset_expr.X_add_number == 0); && offset_expr.X_add_number == 0);
s = segment_name (S_GET_SEGMENT (offset_expr.X_add_symbol)); s = segment_name (S_GET_SEGMENT (offset_expr.X_add_symbol));
if (strcmp (s, ".lit8") == 0) if (strcmp (s, ".lit8") == 0)
@ -12005,8 +11993,6 @@ macro (struct mips_cl_insn *ip, char *str)
char *l; char *l;
char *rr; char *rr;
if (imm_expr.X_op != O_constant)
as_bad (_("Improper rotate count"));
rot = imm_expr.X_add_number & 0x3f; rot = imm_expr.X_add_number & 0x3f;
if (ISA_HAS_DROR (mips_opts.isa) || CPU_HAS_DROR (mips_opts.arch)) if (ISA_HAS_DROR (mips_opts.isa) || CPU_HAS_DROR (mips_opts.arch))
{ {
@ -12036,8 +12022,6 @@ macro (struct mips_cl_insn *ip, char *str)
{ {
unsigned int rot; unsigned int rot;
if (imm_expr.X_op != O_constant)
as_bad (_("Improper rotate count"));
rot = imm_expr.X_add_number & 0x1f; rot = imm_expr.X_add_number & 0x1f;
if (ISA_HAS_ROR (mips_opts.isa) || CPU_HAS_ROR (mips_opts.arch)) if (ISA_HAS_ROR (mips_opts.isa) || CPU_HAS_ROR (mips_opts.arch))
{ {
@ -12089,8 +12073,6 @@ macro (struct mips_cl_insn *ip, char *str)
char *l; char *l;
char *rr; char *rr;
if (imm_expr.X_op != O_constant)
as_bad (_("Improper rotate count"));
rot = imm_expr.X_add_number & 0x3f; rot = imm_expr.X_add_number & 0x3f;
if (ISA_HAS_DROR (mips_opts.isa) || CPU_HAS_DROR (mips_opts.arch)) if (ISA_HAS_DROR (mips_opts.isa) || CPU_HAS_DROR (mips_opts.arch))
{ {
@ -12119,8 +12101,6 @@ macro (struct mips_cl_insn *ip, char *str)
{ {
unsigned int rot; unsigned int rot;
if (imm_expr.X_op != O_constant)
as_bad (_("Improper rotate count"));
rot = imm_expr.X_add_number & 0x1f; rot = imm_expr.X_add_number & 0x1f;
if (ISA_HAS_ROR (mips_opts.isa) || CPU_HAS_ROR (mips_opts.arch)) if (ISA_HAS_ROR (mips_opts.isa) || CPU_HAS_ROR (mips_opts.arch))
{ {
@ -12152,7 +12132,7 @@ macro (struct mips_cl_insn *ip, char *str)
break; break;
case M_SEQ_I: case M_SEQ_I:
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
{ {
macro_build (&expr1, "sltiu", "t,r,j", op[0], op[1], BFD_RELOC_LO16); macro_build (&expr1, "sltiu", "t,r,j", op[0], op[1], BFD_RELOC_LO16);
break; break;
@ -12172,12 +12152,10 @@ macro (struct mips_cl_insn *ip, char *str)
(int) imm_expr.X_add_number); (int) imm_expr.X_add_number);
break; break;
} }
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= 0
&& imm_expr.X_add_number >= 0
&& imm_expr.X_add_number < 0x10000) && imm_expr.X_add_number < 0x10000)
macro_build (&imm_expr, "xori", "t,r,i", op[0], op[1], BFD_RELOC_LO16); macro_build (&imm_expr, "xori", "t,r,i", op[0], op[1], BFD_RELOC_LO16);
else if (imm_expr.X_op == O_constant else if (imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number < 0) && imm_expr.X_add_number < 0)
{ {
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
@ -12212,8 +12190,7 @@ macro (struct mips_cl_insn *ip, char *str)
case M_SGE_I: /* X >= I <==> not (X < I) */ case M_SGE_I: /* X >= I <==> not (X < I) */
case M_SGEU_I: case M_SGEU_I:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number < 0x8000) && imm_expr.X_add_number < 0x8000)
macro_build (&imm_expr, mask == M_SGE_I ? "slti" : "sltiu", "t,r,j", macro_build (&imm_expr, mask == M_SGE_I ? "slti" : "sltiu", "t,r,j",
op[0], op[1], BFD_RELOC_LO16); op[0], op[1], BFD_RELOC_LO16);
@ -12270,8 +12247,7 @@ macro (struct mips_cl_insn *ip, char *str)
break; break;
case M_SLT_I: case M_SLT_I:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number < 0x8000) && imm_expr.X_add_number < 0x8000)
{ {
macro_build (&imm_expr, "slti", "t,r,j", op[0], op[1], macro_build (&imm_expr, "slti", "t,r,j", op[0], op[1],
@ -12284,8 +12260,7 @@ macro (struct mips_cl_insn *ip, char *str)
break; break;
case M_SLTU_I: case M_SLTU_I:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number >= -0x8000
&& imm_expr.X_add_number < 0x8000) && imm_expr.X_add_number < 0x8000)
{ {
macro_build (&imm_expr, "sltiu", "t,r,j", op[0], op[1], macro_build (&imm_expr, "sltiu", "t,r,j", op[0], op[1],
@ -12310,7 +12285,7 @@ macro (struct mips_cl_insn *ip, char *str)
break; break;
case M_SNE_I: case M_SNE_I:
if (imm_expr.X_op == O_constant && imm_expr.X_add_number == 0) if (imm_expr.X_add_number == 0)
{ {
macro_build (NULL, "sltu", "d,v,t", op[0], 0, op[1]); macro_build (NULL, "sltu", "d,v,t", op[0], 0, op[1]);
break; break;
@ -12331,15 +12306,13 @@ macro (struct mips_cl_insn *ip, char *str)
(int) imm_expr.X_add_number); (int) imm_expr.X_add_number);
break; break;
} }
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number >= 0
&& imm_expr.X_add_number >= 0
&& imm_expr.X_add_number < 0x10000) && imm_expr.X_add_number < 0x10000)
{ {
macro_build (&imm_expr, "xori", "t,r,i", op[0], op[1], macro_build (&imm_expr, "xori", "t,r,i", op[0], op[1],
BFD_RELOC_LO16); BFD_RELOC_LO16);
} }
else if (imm_expr.X_op == O_constant else if (imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number < 0) && imm_expr.X_add_number < 0)
{ {
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
@ -12376,11 +12349,11 @@ macro (struct mips_cl_insn *ip, char *str)
s2 = "dsub"; s2 = "dsub";
if (!mips_opts.micromips) if (!mips_opts.micromips)
goto do_subi; goto do_subi;
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number > -0x200
&& imm_expr.X_add_number > -0x200
&& imm_expr.X_add_number <= 0x200) && imm_expr.X_add_number <= 0x200)
{ {
macro_build (NULL, s, "t,r,.", op[0], op[1], -imm_expr.X_add_number); macro_build (NULL, s, "t,r,.", op[0], op[1],
(int) -imm_expr.X_add_number);
break; break;
} }
goto do_subi_i; goto do_subi_i;
@ -12389,8 +12362,7 @@ macro (struct mips_cl_insn *ip, char *str)
s = "daddiu"; s = "daddiu";
s2 = "dsubu"; s2 = "dsubu";
do_subi: do_subi:
if (imm_expr.X_op == O_constant if (imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number > -0x8000
&& imm_expr.X_add_number <= 0x8000) && imm_expr.X_add_number <= 0x8000)
{ {
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
@ -12708,22 +12680,16 @@ mips16_macro (struct mips_cl_insn *ip)
goto do_subu; goto do_subu;
case M_SUBU_I: case M_SUBU_I:
do_subu: do_subu:
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
macro_build (&imm_expr, dbl ? "daddiu" : "addiu", "y,x,4", op[0], op[1]); macro_build (&imm_expr, dbl ? "daddiu" : "addiu", "y,x,4", op[0], op[1]);
break; break;
case M_SUBU_I_2: case M_SUBU_I_2:
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
macro_build (&imm_expr, "addiu", "x,k", op[0]); macro_build (&imm_expr, "addiu", "x,k", op[0]);
break; break;
case M_DSUBU_I_2: case M_DSUBU_I_2:
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
imm_expr.X_add_number = -imm_expr.X_add_number; imm_expr.X_add_number = -imm_expr.X_add_number;
macro_build (&imm_expr, "daddiu", "y,j", op[0]); macro_build (&imm_expr, "daddiu", "y,j", op[0]);
break; break;
@ -12829,8 +12795,6 @@ mips16_macro (struct mips_cl_insn *ip)
s3 = "x,8"; s3 = "x,8";
do_addone_branch_i: do_addone_branch_i:
if (imm_expr.X_op != O_constant)
as_bad (_("Unsupported large constant"));
++imm_expr.X_add_number; ++imm_expr.X_add_number;
do_branch_i: do_branch_i: