summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorYi Kong <Yi.Kong@arm.com>2014-08-13 23:20:15 +0000
committerYi Kong <Yi.Kong@arm.com>2014-08-13 23:20:15 +0000
commit45a09319bf5c01281a7d45ef02b1bfc5573079b5 (patch)
tree23816d640b19eb8258690b3cb1167ef32decaa95 /clang/test
parentb47683223fb52e39ff59019c385f7a59a668a01c (diff)
downloadbcm5719-llvm-45a09319bf5c01281a7d45ef02b1bfc5573079b5.tar.gz
bcm5719-llvm-45a09319bf5c01281a7d45ef02b1bfc5573079b5.zip
ARM: Add mappings for ACLE prefetch intrinsics
Implement __pld, __pldx, __pli and __plix builtin intrinsics as specified in ARM ACLE 2.0. llvm-svn: 215599
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/arm_acle.c29
-rw-r--r--clang/test/Sema/arm_acle.c7
2 files changed, 36 insertions, 0 deletions
diff --git a/clang/test/CodeGen/arm_acle.c b/clang/test/CodeGen/arm_acle.c
index 8550c58b367..8a23df836e4 100644
--- a/clang/test/CodeGen/arm_acle.c
+++ b/clang/test/CodeGen/arm_acle.c
@@ -62,6 +62,35 @@ void test_sevl(void) {
__sevl();
}
+/* 8.6 Memory prefetch intrinsics */
+/* 8.6.1 Data prefetch */
+// ARM-LABEL: test_pld
+// ARM: call void @llvm.prefetch(i8* null, i32 0, i32 3, i32 1)
+void test_pld() {
+ __pld(0);
+}
+
+// ARM-LABEL: test_pldx
+// AArch32: call void @llvm.prefetch(i8* null, i32 1, i32 3, i32 1)
+// AArch64: call void @llvm.prefetch(i8* null, i32 1, i32 1, i32 1)
+void test_pldx() {
+ __pldx(1, 2, 0, 0);
+}
+
+/* 8.6.2 Instruction prefetch */
+// ARM-LABEL: test_pli
+// ARM: call void @llvm.prefetch(i8* null, i32 0, i32 3, i32 0)
+void test_pli() {
+ __pli(0);
+}
+
+// ARM-LABEL: test_plix
+// AArch32: call void @llvm.prefetch(i8* null, i32 0, i32 3, i32 0)
+// AArch64: call void @llvm.prefetch(i8* null, i32 0, i32 1, i32 0)
+void test_plix() {
+ __plix(2, 0, 0);
+}
+
/* 8.7 NOP */
// ARM-LABEL: test_nop
// AArch32: call void @llvm.arm.hint(i32 0)
diff --git a/clang/test/Sema/arm_acle.c b/clang/test/Sema/arm_acle.c
index 866626fc38c..2d1d68a8869 100644
--- a/clang/test/Sema/arm_acle.c
+++ b/clang/test/Sema/arm_acle.c
@@ -30,3 +30,10 @@ int32_t test_ssat_const_diag(int32_t t, const int32_t v) {
int32_t test_usat_const_diag(int32_t t, const int32_t v) {
return __usat(t, v); // expected-error-re {{argument to {{.*}} must be a constant integer}}
}
+
+/*
+ * Prefetch intrinsics
+ */
+void test_pldx_const_diag(int32_t i) {
+ __pldx(i, 0, 0, 0); // expected-error-re {{argument to {{.*}} must be a constant integer}}
+}
OpenPOWER on IntegriCloud