diff options
author | Coby Tayree <coby.tayree@intel.com> | 2017-07-30 10:19:10 +0000 |
---|---|---|
committer | Coby Tayree <coby.tayree@intel.com> | 2017-07-30 10:19:10 +0000 |
commit | 5ac75b5744e8feba92f1b7cd187b9c20f850c198 (patch) | |
tree | aaa5e799a9f3f2d3091efa7abe16783850298750 | |
parent | ebac0b9c62a26fcfc91f448f1ab36db6215feb57 (diff) | |
download | bcm5719-llvm-5ac75b5744e8feba92f1b7cd187b9c20f850c198.tar.gz bcm5719-llvm-5ac75b5744e8feba92f1b7cd187b9c20f850c198.zip |
[x86][inline-asm]Allow a pack of Control Regs to be properly picked
Allows the incorporation of legit (x86) Control Regs within inline asm stataements
Differential Revision: https://reviews.llvm.org/D35903
llvm-svn: 309508
-rw-r--r-- | clang/lib/Basic/Targets/X86.cpp | 1 | ||||
-rw-r--r-- | clang/test/CodeGen/ms-inline-asm.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index a3417d8f90f..17f52471efb 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -58,6 +58,7 @@ static const char *const GCCRegNames[] = { "zmm18", "zmm19", "zmm20", "zmm21", "zmm22", "zmm23", "zmm24", "zmm25", "zmm26", "zmm27", "zmm28", "zmm29", "zmm30", "zmm31", "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7", + "cr0", "cr2", "cr3", "cr4", "cr8", }; const TargetInfo::AddlRegName AddlRegNames[] = { diff --git a/clang/test/CodeGen/ms-inline-asm.c b/clang/test/CodeGen/ms-inline-asm.c index d26a660c9b0..ca4f8154064 100644 --- a/clang/test/CodeGen/ms-inline-asm.c +++ b/clang/test/CodeGen/ms-inline-asm.c @@ -627,6 +627,17 @@ void t43() { // CHECK: call void asm sideeffect inteldialect "mov eax, $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}}) } +void t44() { + // CHECK-LABEL: define void @t44 + __asm { + mov cr0, eax + mov cr2, ebx + mov cr3, ecx + mov cr4, edx + } + // 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 dot_operator(){ // CHECK-LABEL: define void @dot_operator __asm { mov eax, 3[ebx]A.b} |