<div dir="ltr">Craig, I suspect there are other similar issues in this file, like the xsave xrstor instruction definitions. How do we normally deal with this kind of thing?</div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Sep 4, 2014 at 9:58 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:reid@kleckner.net" target="_blank">reid@kleckner.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: rnk<br>
Date: Thu Sep  4 11:58:25 2014<br>
New Revision: 217173<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=217173&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=217173&view=rev</a><br>
Log:<br>
X86: cpuid and xgetbv write to 32-bit registers, not 64-bit<br>
<br>
This fixes an issue where MS inline assembly containing xgetbv wouldn't<br>
be marked as clobbering EAX:EDX. Test for that forthcoming on the Clang<br>
side.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/X86/X86InstrSystem.td<br>
<br>
Modified: llvm/trunk/lib/Target/X86/X86InstrSystem.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSystem.td?rev=217173&r1=217172&r2=217173&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSystem.td?rev=217173&r1=217172&r2=217173&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/X86/X86InstrSystem.td (original)<br>
+++ llvm/trunk/lib/Target/X86/X86InstrSystem.td Thu Sep  4 11:58:25 2014<br>
@@ -462,11 +462,7 @@ def LMSW16m : I<0x01, MRM6m, (outs), (in<br>
                 "lmsw{w}\t$src", [], IIC_LMSW_REG>, TB;<br>
<br>
 let Defs = [EAX, EBX, ECX, EDX], Uses = [EAX, ECX] in<br>
-  def CPUID32 : I<0xA2, RawFrm, (outs), (ins), "cpuid", [], IIC_CPUID>, TB,<br>
-  Requires<[Not64BitMode]>;<br>
-let Defs = [RAX, RBX, RCX, RDX], Uses = [RAX, RCX] in<br>
-  def CPUID64 : I<0xA2, RawFrm, (outs), (ins), "cpuid", [], IIC_CPUID>, TB,<br>
-  Requires<[In64BitMode]>;<br>
+  def CPUID : I<0xA2, RawFrm, (outs), (ins), "cpuid", [], IIC_CPUID>, TB;<br>
 } // SchedRW<br>
<br>
 //===----------------------------------------------------------------------===//<br>
@@ -479,10 +475,10 @@ def WBINVD : I<0x09, RawFrm, (outs), (in<br>
 //===----------------------------------------------------------------------===//<br>
 // XSAVE instructions<br>
 let SchedRW = [WriteSystem] in {<br>
-let Defs = [RDX, RAX], Uses = [RCX] in<br>
+let Defs = [EDX, EAX], Uses = [ECX] in<br>
   def XGETBV : I<0x01, MRM_D0, (outs), (ins), "xgetbv", []>, TB;<br>
<br>
-let Uses = [RDX, RAX, RCX] in<br>
+let Uses = [EDX, EAX, ECX] in<br>
   def XSETBV : I<0x01, MRM_D1, (outs), (ins), "xsetbv", []>, TB;<br>
<br>
 let Uses = [RDX, RAX] in {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>