svn commit: r318135 - head/contrib/binutils/gas/config
Michal Meloun
mmel at FreeBSD.org
Wed May 10 05:07:42 UTC 2017
Author: mmel
Date: Wed May 10 05:07:41 2017
New Revision: 318135
URL: https://svnweb.freebsd.org/changeset/base/318135
Log:
Fix parsing of 'vmov Q<n>.F32,Q<n>.F32' instruction.
parse_qfloat_immediate() accidentaly parses register with size
qualifier as immediate constant (It takes '<n>.' substring as
valid floating point constant).
Due to this, slightly reorder cases in parse_neon_mov() and move parsing of
vmov with immediate constant to last place.
MFC after: 2 weeks
Modified:
head/contrib/binutils/gas/config/tc-arm.c
Modified: head/contrib/binutils/gas/config/tc-arm.c
==============================================================================
--- head/contrib/binutils/gas/config/tc-arm.c Wed May 10 05:05:21 2017 (r318134)
+++ head/contrib/binutils/gas/config/tc-arm.c Wed May 10 05:07:41 2017 (r318135)
@@ -5211,12 +5211,6 @@ parse_neon_mov (char **str, int *which_o
inst.operands[i].present = 1;
}
}
- else if (parse_qfloat_immediate (&ptr, &inst.operands[i].imm) == SUCCESS)
- /* Case 2: VMOV<c><q>.<dt> <Qd>, #<float-imm>
- Case 3: VMOV<c><q>.<dt> <Dd>, #<float-imm>
- Case 10: VMOV.F32 <Sd>, #<imm>
- Case 11: VMOV.F64 <Dd>, #<imm> */
- inst.operands[i].immisfloat = 1;
else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
&optype)) != FAIL)
{
@@ -5253,9 +5247,15 @@ parse_neon_mov (char **str, int *which_o
inst.operands[i].reg = val;
inst.operands[i].isreg = 1;
- inst.operands[i++].present = 1;
+ inst.operands[i].present = 1;
}
}
+ else if (parse_qfloat_immediate (&ptr, &inst.operands[i].imm) == SUCCESS)
+ /* Case 2: VMOV<c><q>.<dt> <Qd>, #<float-imm>
+ Case 3: VMOV<c><q>.<dt> <Dd>, #<float-imm>
+ 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> */
@@ -5337,7 +5337,7 @@ parse_neon_mov (char **str, int *which_o
inst.operands[i].isvec = 1;
inst.operands[i].issingle = 1;
inst.operands[i].vectype = optype;
- inst.operands[i++].present = 1;
+ inst.operands[i].present = 1;
}
}
else
More information about the svn-src-head
mailing list