mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
x86: Use unsigned int to iterate through vector operands
Use unsigned int to iterate through multi-length vector operands to avoid sign-extension. * config/tc-i386.c (build_vex_prefix): Use unsigned int to iterate through multi-length vector operands. (build_evex_prefix): Likewise.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2018-07-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (build_vex_prefix): Use unsigned int to
|
||||||
|
iterate through multi-length vector operands.
|
||||||
|
(build_evex_prefix): Likewise.
|
||||||
|
|
||||||
2018-07-24 Jan Beulich <jbeulich@suse.com>
|
2018-07-24 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* config/tc-i386.c (check_VecOperands): Handle EVEXLIG when
|
* config/tc-i386.c (check_VecOperands): Handle EVEXLIG when
|
||||||
|
@ -3362,12 +3362,12 @@ build_vex_prefix (const insn_template *t)
|
|||||||
vector_length = 1;
|
vector_length = 1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int op;
|
unsigned int op;
|
||||||
|
|
||||||
/* Determine vector length from the last multi-length vector
|
/* Determine vector length from the last multi-length vector
|
||||||
operand. */
|
operand. */
|
||||||
vector_length = 0;
|
vector_length = 0;
|
||||||
for (op = t->operands - 1; op >= 0; op--)
|
for (op = t->operands; op--;)
|
||||||
if (t->operand_types[op].bitfield.xmmword
|
if (t->operand_types[op].bitfield.xmmword
|
||||||
&& t->operand_types[op].bitfield.ymmword
|
&& t->operand_types[op].bitfield.ymmword
|
||||||
&& i.types[op].bitfield.ymmword)
|
&& i.types[op].bitfield.ymmword)
|
||||||
@ -3612,12 +3612,12 @@ build_evex_prefix (void)
|
|||||||
if (!i.tm.opcode_modifier.evex
|
if (!i.tm.opcode_modifier.evex
|
||||||
|| i.tm.opcode_modifier.evex == EVEXDYN)
|
|| i.tm.opcode_modifier.evex == EVEXDYN)
|
||||||
{
|
{
|
||||||
int op;
|
unsigned int op;
|
||||||
|
|
||||||
/* Determine vector length from the last multi-length vector
|
/* Determine vector length from the last multi-length vector
|
||||||
operand. */
|
operand. */
|
||||||
vec_length = 0;
|
vec_length = 0;
|
||||||
for (op = i.operands - 1; op >= 0; op--)
|
for (op = i.operands; op--;)
|
||||||
if (i.tm.operand_types[op].bitfield.xmmword
|
if (i.tm.operand_types[op].bitfield.xmmword
|
||||||
+ i.tm.operand_types[op].bitfield.ymmword
|
+ i.tm.operand_types[op].bitfield.ymmword
|
||||||
+ i.tm.operand_types[op].bitfield.zmmword > 1)
|
+ i.tm.operand_types[op].bitfield.zmmword > 1)
|
||||||
@ -3658,7 +3658,7 @@ build_evex_prefix (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (op < 0)
|
if (op >= MAX_OPERANDS)
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user