* config/tc-metag.c: Make SWAP instruction less permissive with its operands.
* gas/metag/metacore21-invalid.s: Add invalid SWAP testcases * gas/metag/metacore21-invalid.l: Add expected output for invalid SWAP testcases
This commit is contained in:
parent
92ff23a1bf
commit
f9b2d5449a
|
@ -1,3 +1,8 @@
|
|||
2013-01-30 Markos Chandras <markos.chandras@imgtec.com>
|
||||
|
||||
* config/tc-metag.c: Make SWAP instruction less permissive with
|
||||
its operands.
|
||||
|
||||
2013-01-29 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/tc-rl78.c (rl78_cons_fix_new): Handle user-specified
|
||||
|
|
|
@ -2026,11 +2026,37 @@ parse_swap (const char *line, metag_insn *insn,
|
|||
if (l == NULL)
|
||||
return NULL;
|
||||
|
||||
insn->bits = (template->meta_opcode |
|
||||
(regs[1]->no << 19) |
|
||||
(regs[0]->no << 14) |
|
||||
(regs[1]->unit << 10) |
|
||||
(regs[0]->unit << 5));
|
||||
/* PC.r | CT.r | TR.r | TT.r are treated as if they are a single unit. */
|
||||
switch (regs[0]->unit)
|
||||
{
|
||||
case UNIT_PC:
|
||||
case UNIT_CT:
|
||||
case UNIT_TR:
|
||||
case UNIT_TT:
|
||||
if (regs[1]->unit == UNIT_PC
|
||||
|| regs[1]->unit == UNIT_CT
|
||||
|| regs[1]->unit == UNIT_TR
|
||||
|| regs[1]->unit == UNIT_TT)
|
||||
{
|
||||
as_bad (_("PC, CT, TR and TT are treated as if they are a single unit but operands must be in different units"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
default:
|
||||
/* Registers must be in different units. */
|
||||
if (regs[0]->unit == regs[1]->unit)
|
||||
{
|
||||
as_bad (_("source and destination register must be in different units"));
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
insn->bits = (template->meta_opcode
|
||||
| (regs[1]->no << 19)
|
||||
| (regs[0]->no << 14)
|
||||
| (regs[1]->unit << 10)
|
||||
| (regs[0]->unit << 5));
|
||||
|
||||
insn->len = 4;
|
||||
return l;
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2013-01-30 Markos Chandras <markos.chandras@imgtec.com>
|
||||
|
||||
* gas/metag/metacore21-invalid.s: Add invalid SWAP testcases.
|
||||
* gas/metag/metacore21-invalid.l: Add expected output for invalid
|
||||
SWAP testcases.
|
||||
|
||||
2013-01-28 Alexis Deruelle <alexis.deruelle@gmail.com>
|
||||
|
||||
PR gas/15069
|
||||
|
|
|
@ -15,3 +15,9 @@
|
|||
.*:8: Error: .*
|
||||
.*:8: Error: .*
|
||||
.*:8: Error: .*
|
||||
.*:9: Error: .*
|
||||
.*:9: Error: .*
|
||||
.*:10: Error: .*
|
||||
.*:10: Error: .*
|
||||
.*:11: Error: .*
|
||||
.*:11: Error: .*
|
||||
|
|
|
@ -6,3 +6,6 @@ _start:
|
|||
SETD [A0.0+A0.1],A0.2
|
||||
ASL D0.0,D1.0,D0.0
|
||||
GETD D0.0,[D0.0--D0.0]
|
||||
SWAP PC,PCX
|
||||
SWAP CT.0,PCX
|
||||
SWAP D0.1,D0.2
|
||||
|
|
Loading…
Reference in New Issue