[x86][inline-asm]Allow a pack of Control Debug to be properly picked
authorCoby Tayree <coby.tayree@intel.com>
Tue, 1 Aug 2017 10:51:09 +0000 (10:51 +0000)
committerCoby Tayree <coby.tayree@intel.com>
Tue, 1 Aug 2017 10:51:09 +0000 (10:51 +0000)
Allows the incorporation of legit (x86) Debug Regs within inline asm stataements

Differential Revision: https://reviews.llvm.org/D36074

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@309672 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets/X86.cpp
test/CodeGen/ms-inline-asm.c

index 17f52471efb506c39e8a5d13d6c98b6edb19ef13..c935dafd1be9aa6be6fd731abeb092081792e4e5 100644 (file)
@@ -59,6 +59,7 @@ static const char *const GCCRegNames[] = {
     "zmm26", "zmm27", "zmm28", "zmm29", "zmm30",   "zmm31", "k0",    "k1",
     "k2",    "k3",    "k4",    "k5",    "k6",      "k7",
     "cr0",   "cr2",   "cr3",   "cr4",   "cr8",
+    "dr0",   "dr1",   "dr2",   "dr3",   "dr6",     "dr7",
 };
 
 const TargetInfo::AddlRegName AddlRegNames[] = {
index a0af14d9d8d2efcd7dba752bff9696c6cc916628..60dffb02b8450830ef9d2f3a104abbee680ba47d 100644 (file)
@@ -638,6 +638,19 @@ void t44() {
   // CHECK: call void asm sideeffect inteldialect "mov cr0, eax\0A\09mov cr2, ebx\0A\09mov cr3, ecx\0A\09mov cr4, edx", "~{cr0},~{cr2},~{cr3},~{cr4},~{dirflag},~{fpsr},~{flags}"()
 }
 
+void t45() {
+  // CHECK-LABEL: define void @t45
+  __asm {
+    mov dr0, eax
+    mov dr1, ebx
+    mov dr2, ebx
+    mov dr3, ecx
+    mov dr6, edx
+    mov dr7, ecx
+  }
+  // CHECK: call void asm sideeffect inteldialect "mov dr0, eax\0A\09mov dr1, ebx\0A\09mov dr2, ebx\0A\09mov dr3, ecx\0A\09mov dr6, edx\0A\09mov dr7, ecx", "~{dr0},~{dr1},~{dr2},~{dr3},~{dr6},~{dr7},~{dirflag},~{fpsr},~{flags}"()
+}
+
 void dot_operator(){
 // CHECK-LABEL: define void @dot_operator
        __asm { mov eax, 3[ebx]A.b}