]> granicus.if.org Git - clang/commitdiff
[x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage
authorMichael Zuckerman <Michael.zuckerman@intel.com>
Mon, 31 Oct 2016 12:05:41 +0000 (12:05 +0000)
committerMichael Zuckerman <Michael.zuckerman@intel.com>
Mon, 31 Oct 2016 12:05:41 +0000 (12:05 +0000)
 Commit on behalf of mharoush

 After LGTM and check all:
 This patch enables usage of k registers in inline assembly syntax.
 Adding triple

 Reviewer: 1. rnk
           2. delena

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

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

lib/Basic/Targets.cpp
test/CodeGen/avx512-inline-asm-kregisters-basics.c [new file with mode: 0644]

index e0c1fe483f232ffb1d9be05e7555b9635ba52a5f..9355f3b71b07f03c7b35253c2d8587f7eae437f6 100644 (file)
@@ -2397,6 +2397,7 @@ static const char* const GCCRegNames[] = {
   "zmm8", "zmm9", "zmm10", "zmm11", "zmm12", "zmm13", "zmm14", "zmm15",
   "zmm16", "zmm17", "zmm18", "zmm19", "zmm20", "zmm21", "zmm22", "zmm23",
   "zmm24", "zmm25", "zmm26", "zmm27", "zmm28", "zmm29", "zmm30", "zmm31",
+  "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7",
 };
 
 const TargetInfo::AddlRegName AddlRegNames[] = {
diff --git a/test/CodeGen/avx512-inline-asm-kregisters-basics.c b/test/CodeGen/avx512-inline-asm-kregisters-basics.c
new file mode 100644 (file)
index 0000000..78cb0a1
--- /dev/null
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-cpu skylake-avx512 -O0  -S -o - -Wall -Werror | FileCheck %s
+// This test checks basic inline assembly recognition of k0-k7 registers for avx512.
+
+void test_basic_inline_asm_with_k_regs() {
+    //CHECK: ## InlineAsm Start
+    //CHECK: kandw %k1, %k2, %k3
+    //CHECK: ## InlineAsm End
+    asm("kandw %k1, %k2, %k3\t");
+    //CHECK: ## InlineAsm Start
+    //CHECK: kandw %k4, %k5, %k6
+    //CHECK: ## InlineAsm End
+    asm("kandw %k4, %k5, %k6\t");
+    //CHECK: ## InlineAsm Start
+    //CHECK: kandw %k7, %k0, %k1
+    //CHECK: ## InlineAsm End
+    asm("kandw %k7, %k0, %k1\t");
+}