OLD | NEW |
1 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 < %s | FileCheck %s | 1 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 < %s | FileCheck %s |
2 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 \ | 2 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=0 \ |
3 ; RUN: -pnaclabi-allow-debug-metadata < %s | FileCheck %s --check-prefix=DBG | 3 ; RUN: -pnaclabi-allow-debug-metadata < %s | FileCheck %s --check-prefix=DBG |
4 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=1 < %s | \ | 4 ; RUN: pnacl-abicheck -pnaclabi-allow-dev-intrinsics=1 < %s | \ |
5 ; RUN: FileCheck %s --check-prefix=DEV | 5 ; RUN: FileCheck %s --check-prefix=DEV |
6 | 6 |
7 ; Test that only white-listed intrinsics are allowed. | 7 ; Test that only white-listed intrinsics are allowed. |
8 | 8 |
9 ; =================================== | 9 ; =================================== |
10 ; Some disallowed "Dev" intrinsics. | 10 ; Some disallowed "Dev" intrinsics. |
11 ; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic | 11 ; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic |
12 ; DBG-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic | 12 ; DBG-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic |
13 ; DEV-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic | 13 ; DEV-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic |
14 declare void @llvm.dbg.value(metadata, i64, metadata) | 14 declare void @llvm.dbg.value(metadata, i64, metadata) |
15 | 15 |
16 ; =================================== | 16 ; =================================== |
17 ; Always allowed intrinsics. | 17 ; Always allowed intrinsics. |
18 | 18 |
19 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, | 19 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, |
20 i32 %len, i32 %align, i1 %isvolatile) | 20 i32 %len, i32 %align, i1 %isvolatile) |
21 declare void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src, | 21 declare void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src, |
22 i32 %len, i32 %align, i1 %isvolatile) | 22 i32 %len, i32 %align, i1 %isvolatile) |
23 declare void @llvm.memset.p0i8.i32(i8* %dest, i8 %val, | 23 declare void @llvm.memset.p0i8.i32(i8* %dest, i8 %val, |
24 i32 %len, i32 %align, i1 %isvolatile) | 24 i32 %len, i32 %align, i1 %isvolatile) |
25 | 25 |
26 declare i8* @llvm.nacl.read.tp() | 26 declare i8* @llvm.nacl.read.tp() |
27 | 27 |
| 28 declare i8 @llvm.nacl.atomic.load.i8(i8*, i32) |
| 29 declare i16 @llvm.nacl.atomic.load.i16(i16*, i32) |
| 30 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) |
| 31 declare i64 @llvm.nacl.atomic.load.i64(i64*, i32) |
| 32 declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32) |
| 33 declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32) |
| 34 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) |
| 35 declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32) |
| 36 declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32) |
| 37 declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32) |
| 38 declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32) |
| 39 declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32) |
| 40 declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32) |
| 41 declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32) |
| 42 declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32) |
| 43 declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32) |
| 44 declare void @llvm.nacl.atomic.fence(i32) |
| 45 |
28 declare i16 @llvm.bswap.i16(i16) | 46 declare i16 @llvm.bswap.i16(i16) |
29 declare i32 @llvm.bswap.i32(i32) | 47 declare i32 @llvm.bswap.i32(i32) |
30 declare i64 @llvm.bswap.i64(i64) | 48 declare i64 @llvm.bswap.i64(i64) |
31 | 49 |
32 declare i32 @llvm.cttz.i32(i32, i1) | 50 declare i32 @llvm.cttz.i32(i32, i1) |
33 declare i64 @llvm.cttz.i64(i64, i1) | 51 declare i64 @llvm.cttz.i64(i64, i1) |
34 | 52 |
35 declare i32 @llvm.ctlz.i32(i32, i1) | 53 declare i32 @llvm.ctlz.i32(i32, i1) |
36 declare i64 @llvm.ctlz.i64(i64, i1) | 54 declare i64 @llvm.ctlz.i64(i64, i1) |
37 | 55 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 declare void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src, | 130 declare void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src, |
113 i64 %len, i32 %align, i1 %isvolatile) | 131 i64 %len, i32 %align, i1 %isvolatile) |
114 ; CHECK: Function llvm.memset.p0i8.i64 is a disallowed LLVM intrinsic | 132 ; CHECK: Function llvm.memset.p0i8.i64 is a disallowed LLVM intrinsic |
115 declare void @llvm.memset.p0i8.i64(i8* %dest, i8 %val, | 133 declare void @llvm.memset.p0i8.i64(i8* %dest, i8 %val, |
116 i64 %len, i32 %align, i1 %isvolatile) | 134 i64 %len, i32 %align, i1 %isvolatile) |
117 | 135 |
118 ; Test that the ABI checker checks the full function name. | 136 ; Test that the ABI checker checks the full function name. |
119 ; CHECK: Function llvm.memset.foo is a disallowed LLVM intrinsic | 137 ; CHECK: Function llvm.memset.foo is a disallowed LLVM intrinsic |
120 declare void @llvm.memset.foo(i8* %dest, i8 %val, | 138 declare void @llvm.memset.foo(i8* %dest, i8 %val, |
121 i64 %len, i32 %align, i1 %isvolatile) | 139 i64 %len, i32 %align, i1 %isvolatile) |
OLD | NEW |