Some ARM vmov similar to 'vmov.f32 s1, s2' will incorrectly have the second
register added to the symbol table by the assembler. On further investigation it was found the problem was with the my_get_expression function. This is called by parse_big_immediate. Fix this by moving the call to parse_big_immediate to the end of the if, else if, ..., else block.
This commit is contained in:
parent
bd247e9ddd
commit
90ab443e31
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=248459
@ -5164,10 +5164,6 @@ parse_neon_mov (char **str, int *which_operand)
|
||||
Case 10: VMOV.F32 <Sd>, #<imm>
|
||||
Case 11: VMOV.F64 <Dd>, #<imm> */
|
||||
inst.operands[i].immisfloat = 1;
|
||||
else if (parse_big_immediate (&ptr, i) == SUCCESS)
|
||||
/* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
|
||||
Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
|
||||
;
|
||||
else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
|
||||
&optype)) != FAIL)
|
||||
{
|
||||
@ -5207,6 +5203,10 @@ parse_neon_mov (char **str, int *which_operand)
|
||||
inst.operands[i++].present = 1;
|
||||
}
|
||||
}
|
||||
else if (parse_big_immediate (&ptr, i) == SUCCESS)
|
||||
/* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
|
||||
Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
|
||||
;
|
||||
else
|
||||
{
|
||||
first_error (_("expected <Rm> or <Dm> or <Qm> operand"));
|
||||
|
Loading…
Reference in New Issue
Block a user