From: H.J. Lu Date: Fri, 12 Oct 2007 22:26:55 +0000 (+0000) Subject: 2007-10-12 H.J. Lu X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=9fcfb3d73eefbae03f2df3a0aac8367256eb7853;p=deliverable%2Fbinutils-gdb.git 2007-10-12 H.J. Lu * config/tc-i386.c (process_operands): Simplify implicit xmm0 handling. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 6bffb5c9e4..82a5d364c3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2007-10-12 H.J. Lu + + * config/tc-i386.c (process_operands): Simplify implicit xmm0 + handling. + 2007-10-12 H.J. Lu * config/tc-i386.c (process_operands): Check the firstxmm0 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 89629805dd..0c430eab74 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4232,6 +4232,8 @@ process_operands (void) if (i.tm.opcode_modifier.firstxmm0) { + unsigned int j; + /* The first operand is implicit and must be xmm0. */ assert (i.reg_operands && UINTS_EQUAL (i.types[0], regxmm)); if (i.op[0].regs->reg_num != 0) @@ -4244,17 +4246,19 @@ process_operands (void) i.tm.name, register_prefix); return 0; } - i.op[0] = i.op[1]; - i.op[1] = i.op[2]; - i.types[0] = i.types[1]; - i.types[1] = i.types[2]; + + for (j = 1; j < i.operands; j++) + { + i.op[j - 1] = i.op[j]; + i.types[j - 1] = i.types[j]; + + /* We need to adjust fields in i.tm since they are used by + build_modrm_byte. */ + i.tm.operand_types [j - 1] = i.tm.operand_types [j]; + } + i.operands--; i.reg_operands--; - - /* We need to adjust fields in i.tm since they are used by - build_modrm_byte. */ - i.tm.operand_types [0] = i.tm.operand_types [1]; - i.tm.operand_types [1] = i.tm.operand_types [2]; i.tm.operands--; } else if (i.tm.opcode_modifier.regkludge)