diff options
| author | Yi Kong <Yi.Kong@arm.com> | 2014-08-13 23:20:15 +0000 |
|---|---|---|
| committer | Yi Kong <Yi.Kong@arm.com> | 2014-08-13 23:20:15 +0000 |
| commit | 45a09319bf5c01281a7d45ef02b1bfc5573079b5 (patch) | |
| tree | 23816d640b19eb8258690b3cb1167ef32decaa95 /clang/test | |
| parent | b47683223fb52e39ff59019c385f7a59a668a01c (diff) | |
| download | bcm5719-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.c | 29 | ||||
| -rw-r--r-- | clang/test/Sema/arm_acle.c | 7 |
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}} +} |

