* aarch64-opc.c (set_syntax_error): New function.
(operand_general_constraint_met_p): Replace set_other_error
with set_syntax_error.
gas/testsuite/
* gas/aarch64/diagnostic.s: Add tests of ldp/stp.
* gas/aarch64/diagnostic.l: Update.
+2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * gas/aarch64/diagnostic.s: Add tests of ldp/stp.
+ * gas/aarch64/diagnostic.l: Update.
+
2013-11-05 Will Newton <will.newton@linaro.org>
* gas/aarch64/advsimd-mov-bad.d: New file.
[^:]*:89: Error: shift amount expected to be 0 at operand 2 -- `movi v1.8b,97,lsl#8'
[^:]*:90: Error: unknown or missing system register name at operand 1 -- `msr dummy,x1'
[^:]*:91: Error: invalid floating-point constant at operand 2 -- `fmov s0,0x42000000'
+[^:]*:92: Error: immediate value should be a multiple of 8 at operand 3 -- `ldp x0,x1,\[x2,#4\]'
+[^:]*:93: Error: immediate value should be a multiple of 8 at operand 3 -- `ldp x0,x1,\[x2,#4\]!'
+[^:]*:94: Error: immediate value should be a multiple of 8 at operand 3 -- `ldp x0,x1,\[x2\],#4'
+[^:]*:95: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2,#3\]'
+[^:]*:96: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2,#2\]!'
+[^:]*:97: Error: immediate value should be a multiple of 4 at operand 3 -- `stp w0,w1,\[x2\],#1'
movi v1.8b, 97, lsl #8
msr dummy, x1
fmov s0, 0x42000000
+ ldp x0, x1, [x2, #4]
+ ldp x0, x1, [x2, #4]!
+ ldp x0, x1, [x2], #4
+ stp w0, w1, [x2, #3]
+ stp w0, w1, [x2, #2]!
+ stp w0, w1, [x2], #1
+2013-11-05 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * aarch64-opc.c (set_syntax_error): New function.
+ (operand_general_constraint_met_p): Replace set_other_error
+ with set_syntax_error.
+
2013-10-30 Andreas Arnez <arnez@linux.vnet.ibm.com>
* s390-dis.c (init_disasm): Default to full 'zarch' opcode
mismatch_detail->error = error;
}
+static inline void
+set_syntax_error (aarch64_operand_error *mismatch_detail, int idx,
+ const char* error)
+{
+ if (mismatch_detail == NULL)
+ return;
+ set_error (mismatch_detail, AARCH64_OPDE_SYNTAX_ERROR, idx, error);
+}
+
static inline void
set_out_of_range_error (aarch64_operand_error *mismatch_detail,
int idx, int lower_bound, int upper_bound,
case ldst_unpriv:
if (opnd->addr.writeback == 1)
{
- set_other_error (mismatch_detail, idx,
- _("unexpected address writeback"));
+ set_syntax_error (mismatch_detail, idx,
+ _("unexpected address writeback"));
return 0;
}
break;
case asisdlsop:
if (opnd->addr.writeback == 0)
{
- set_other_error (mismatch_detail, idx,
- _("address writeback expected"));
+ set_syntax_error (mismatch_detail, idx,
+ _("address writeback expected"));
return 0;
}
break;