2007-09-04 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 4 Sep 2007 14:44:35 +0000 (14:44 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 4 Sep 2007 14:44:35 +0000 (14:44 +0000)
* config/tc-i386.c (process_operands): Remove segment override
check on SVME instructions.
(i386_index_check): Remove memory operand check on  SVME
instructions.

gas/ChangeLog
gas/config/tc-i386.c

index 6fb28930eda16286d515ee96144ec87684225702..1df3e4d63fcc275aac6e7ccb4c9faee90fab767c 100644 (file)
@@ -1,3 +1,10 @@
+2007-09-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/tc-i386.c (process_operands): Remove segment override
+       check on SVME instructions.
+       (i386_index_check): Remove memory operand check on  SVME
+       instructions.
+
 2007-09-04  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-spu.c (struct spu_insn): Delete "flag".  Add "reloc".
index 0f6396ff036f4c860ba67852f063e028f3d96abb..9a39d4309b8bdb22ff287a943a9c2642276612b9 100644 (file)
@@ -3477,9 +3477,9 @@ process_operands (void)
       default_seg = &ds;
     }
 
-  if ((i.tm.base_opcode == 0x8d /* lea */
-       || (i.tm.cpu_flags & CpuSVME))
-      && i.seg[0] && !quiet_warnings)
+  if (i.tm.base_opcode == 0x8d /* lea */
+      && i.seg[0]
+      && !quiet_warnings)
     as_warn (_("segment override on `%s' is ineffectual"), i.tm.name);
 
   /* If a segment was explicitly specified, and the specified segment
@@ -4962,30 +4962,7 @@ i386_index_check (const char *operand_string)
  tryprefix:
 #endif
   ok = 1;
-  if ((current_templates->start->cpu_flags & CpuSVME)
-      && current_templates->end[-1].operand_types[0] == AnyMem)
-    {
-      /* Memory operands of SVME insns are special in that they only allow
-        rAX as their memory address and ignore any segment override.  */
-      unsigned RegXX;
-
-      /* SKINIT is even more restrictive: it always requires EAX.  */
-      if (strcmp (current_templates->start->name, "skinit") == 0)
-       RegXX = Reg32;
-      else if (flag_code == CODE_64BIT)
-       RegXX = i.prefix[ADDR_PREFIX] == 0 ? Reg64 : Reg32;
-      else
-       RegXX = ((flag_code == CODE_16BIT) ^ (i.prefix[ADDR_PREFIX] != 0)
-                ? Reg16
-                : Reg32);
-      if (!i.base_reg
-         || !(i.base_reg->reg_type & Acc)
-         || !(i.base_reg->reg_type & RegXX)
-         || i.index_reg
-         || (i.types[0] & Disp))
-       ok = 0;
-    }
-  else if (flag_code == CODE_64BIT)
+  if (flag_code == CODE_64BIT)
     {
       unsigned RegXX = (i.prefix[ADDR_PREFIX] == 0 ? Reg64 : Reg32);