| Index: test/NaCl/PNaClABI/intrinsics.ll
|
| diff --git a/test/NaCl/PNaClABI/intrinsics.ll b/test/NaCl/PNaClABI/intrinsics.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..83c0c69bb5c436ac15f3a13418956ef3331e5446
|
| --- /dev/null
|
| +++ b/test/NaCl/PNaClABI/intrinsics.ll
|
| @@ -0,0 +1,62 @@
|
| +; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 < %s | FileCheck %s
|
| +; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 \
|
| +; RUN: -pnaclabi-allow-debug-metadata < %s | FileCheck %s --check-prefix=DBG
|
| +; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=1 < %s | \
|
| +; RUN: FileCheck %s --check-prefix=DEV
|
| +
|
| +; Test that only white-listed intrinsics are allowed.
|
| +
|
| +; ===================================
|
| +; Some disallowed "Dev" intrinsics.
|
| +; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic
|
| +; DBG-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic
|
| +; DEV-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic
|
| +declare void @llvm.dbg.value(metadata, i64, metadata)
|
| +
|
| +; CHECK: Function llvm.frameaddress is a disallowed LLVM intrinsic
|
| +; DEV-NOT: Function llvm.frameaddress is a disallowed LLVM intrinsic
|
| +declare i8* @llvm.frameaddress(i32 %level)
|
| +
|
| +; CHECK: Function llvm.returnaddress is a disallowed LLVM intrinsic
|
| +; DEV-NOT: Function llvm.returnaddress is a disallowed LLVM intrinsic
|
| +declare i8* @llvm.returnaddress(i32 %level)
|
| +
|
| +; ===================================
|
| +; Always allowed intrinsics.
|
| +; CHECK-NOT: Function llvm.lifetime.start is a disallowed LLVM intrinsic
|
| +; DBG-NOT: Function llvm.lifetime.start is a disallowed LLVM intrinsic
|
| +; DEV-NOT: Function llvm.lifetime.start is a disallowed LLVM intrinsic
|
| +declare void @llvm.lifetime.start(i64, i8* nocapture)
|
| +
|
| +; CHECK-NOT: Function llvm.lifetime.start is a disallowed LLVM intrinsic
|
| +declare void @llvm.lifetime.end(i64, i8* nocapture)
|
| +; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i32 is a disallowed LLVM intrinsic
|
| +declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src,
|
| + i32 %len, i32 %align, i1 %isvolatile)
|
| +; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i64 is a disallowed LLVM intrinsic
|
| +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src,
|
| + i64 %len, i32 %align, i1 %isvolatile)
|
| +; CHECK-NOT: Function llvm.nacl.read.tp is a disallowed LLVM intrinsic
|
| +declare i8* @llvm.nacl.read.tp()
|
| +
|
| +; ===================================
|
| +; Always disallowed intrinsics.
|
| +; CHECK: Function llvm.adjust.trampoline is a disallowed LLVM intrinsic
|
| +; DBG: Function llvm.adjust.trampoline is a disallowed LLVM intrinsic
|
| +; DEV: Function llvm.adjust.trampoline is a disallowed LLVM intrinsic
|
| +declare i8* @llvm.adjust.trampoline(i8*)
|
| +
|
| +; CHECK: Function llvm.init.trampoline is a disallowed LLVM intrinsic
|
| +; DBG: Function llvm.init.trampoline is a disallowed LLVM intrinsic
|
| +; DEV: Function llvm.init.trampoline is a disallowed LLVM intrinsic
|
| +declare void @llvm.init.trampoline(i8*, i8*, i8*)
|
| +
|
| +; CHECK: Function llvm.x86.aesni.aeskeygenassist is a disallowed LLVM intrinsic
|
| +; DBG: Function llvm.x86.aesni.aeskeygenassist is a disallowed LLVM intrinsic
|
| +; DEV: Function llvm.x86.aesni.aeskeygenassist is a disallowed LLVM intrinsic
|
| +declare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8)
|
| +
|
| +; CHECK: Function llvm.va_copy is a disallowed LLVM intrinsic
|
| +; DBG: Function llvm.va_copy is a disallowed LLVM intrinsic
|
| +; DEV: Function llvm.va_copy is a disallowed LLVM intrinsic
|
| +declare void @llvm.va_copy(i8*, i8*)
|
|
|