summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zuckerman <Michael.zuckerman@intel.com>2016-10-31 12:05:41 +0000
committerMichael Zuckerman <Michael.zuckerman@intel.com>2016-10-31 12:05:41 +0000
commit0d26eea60965d5c061f386567d2af26c5b386210 (patch)
treedffaf02f8766183f0bbe5a394a61a49cd2c9c282
parent6b91e405e375a27a5be3bc460395cf8c6e799a36 (diff)
downloadbcm5719-llvm-0d26eea60965d5c061f386567d2af26c5b386210.tar.gz
bcm5719-llvm-0d26eea60965d5c061f386567d2af26c5b386210.zip
[x86][inline-asm] Introducing (AVX512) k0-k7 registers for inline-asm usage
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 llvm-svn: 285563
-rw-r--r--clang/lib/Basic/Targets.cpp1
-rw-r--r--clang/test/CodeGen/avx512-inline-asm-kregisters-basics.c17
2 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index e0c1fe483f2..9355f3b71b0 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -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/clang/test/CodeGen/avx512-inline-asm-kregisters-basics.c b/clang/test/CodeGen/avx512-inline-asm-kregisters-basics.c
new file mode 100644
index 00000000000..78cb0a16ac3
--- /dev/null
+++ b/clang/test/CodeGen/avx512-inline-asm-kregisters-basics.c
@@ -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");
+}
OpenPOWER on IntegriCloud