summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYi Kong <Yi.Kong@arm.com>2014-08-26 12:48:11 +0000
committerYi Kong <Yi.Kong@arm.com>2014-08-26 12:48:11 +0000
commit6891746cd87a8d8340c1e2b2dc9411ca67cf9231 (patch)
treeaf6647bee85a7beb822a1d0c4aabf1c13ebf8d7e
parent1d268af09441681ea688fe3ae42f535fb9d89575 (diff)
downloadbcm5719-llvm-6891746cd87a8d8340c1e2b2dc9411ca67cf9231.tar.gz
bcm5719-llvm-6891746cd87a8d8340c1e2b2dc9411ca67cf9231.zip
arm_acle: Add mappings for dbg intrinsic
This completes all ACLE hint intrinsics. llvm-svn: 216453
-rw-r--r--clang/lib/Headers/arm_acle.h4
-rw-r--r--clang/test/CodeGen/arm_acle.c8
-rw-r--r--clang/test/Sema/arm_acle.c9
3 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index cc7171b6aeb..f7c71a6465d 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -66,6 +66,10 @@ static __inline__ void __attribute__((always_inline, nodebug)) __yield(void) {
}
#endif
+#if __ARM_32BIT_STATE
+#define __dbg(t) __builtin_arm_dbg(t)
+#endif
+
/* 8.5 Swap */
static __inline__ uint32_t __attribute__((always_inline, nodebug))
__swp(uint32_t x, volatile uint32_t *p) {
diff --git a/clang/test/CodeGen/arm_acle.c b/clang/test/CodeGen/arm_acle.c
index 01f8de649dd..0f226b516dd 100644
--- a/clang/test/CodeGen/arm_acle.c
+++ b/clang/test/CodeGen/arm_acle.c
@@ -62,6 +62,14 @@ void test_sevl(void) {
__sevl();
}
+#if __ARM_32BIT_STATE
+// AArch32-LABEL: test_dbg
+// AArch32: call void @llvm.arm.dbg(i32 0)
+void test_dbg(void) {
+ __dbg(0);
+}
+#endif
+
/* 8.5 Swap */
// ARM-LABEL: test_swp
// AArch32: call i32 @llvm.arm.ldrex
diff --git a/clang/test/Sema/arm_acle.c b/clang/test/Sema/arm_acle.c
index 2d1d68a8869..ec0d55854ee 100644
--- a/clang/test/Sema/arm_acle.c
+++ b/clang/test/Sema/arm_acle.c
@@ -37,3 +37,12 @@ int32_t test_usat_const_diag(int32_t t, const int32_t v) {
void test_pldx_const_diag(int32_t i) {
__pldx(i, 0, 0, 0); // expected-error-re {{argument to {{.*}} must be a constant integer}}
}
+
+/*
+ * DBG intrinsic
+ * First argument for DBG intrinsic must be compile-time constant,
+ * otherwise an error should be raised.
+ */
+void test_dbg_const_diag(unsigned int t) {
+ __dbg(t); // expected-error-re {{argument to {{.*}} must be a constant integer}}
+}
OpenPOWER on IntegriCloud