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 ; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i32 is a disallowed LLVM intrinsic | 19 ; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i32 is a disallowed LLVM intrinsic |
20 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, | 20 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, |
21 i32 %len, i32 %align, i1 %isvolatile) | 21 i32 %len, i32 %align, i1 %isvolatile) |
22 ; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i64 is a disallowed LLVM intrinsic | 22 ; CHECK-NOT: Function llvm.memcpy.p0i8.p0i8.i64 is a disallowed LLVM intrinsic |
23 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src, | 23 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src, |
24 i64 %len, i32 %align, i1 %isvolatile) | 24 i64 %len, i32 %align, i1 %isvolatile) |
25 ; CHECK-NOT: Function llvm.nacl.read.tp is a disallowed LLVM intrinsic | 25 ; CHECK-NOT: Function llvm.nacl.read.tp is a disallowed LLVM intrinsic |
26 declare i8* @llvm.nacl.read.tp() | 26 declare i8* @llvm.nacl.read.tp() |
27 | 27 |
28 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.load.i8 is a disallowed LLVM intrinsic | |
Mark Seaborn
2013/07/02 19:16:02
These just become a single "CHECK-NOT: disallowed"
| |
29 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.load.i16 is a disallowed LLVM intrinsic | |
30 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.load.i32 is a disallowed LLVM intrinsic | |
31 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.load.i64 is a disallowed LLVM intrinsic | |
32 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.store.i8 is a disallowed LLVM intrinsic | |
33 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.store.i16 is a disallowe d LLVM intrinsic | |
34 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.store.i32 is a disallowe d LLVM intrinsic | |
35 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.store.i64 is a disallowe d LLVM intrinsic | |
36 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.rmw.i8 is a disallowed L LVM intrinsic | |
37 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.rmw.i16 is a disallowed LLVM intrinsic | |
38 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.rmw.i32 is a disallowed LLVM intrinsic | |
39 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.rmw.i64 is a disallowed LLVM intrinsic | |
40 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.cmpxchg.i8 is a disallow ed LLVM intrinsic | |
41 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.cmpxchg.i16 is a disallo wed LLVM intrinsic | |
42 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.cmpxchg.i32 is a disallo wed LLVM intrinsic | |
43 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.cmpxchg.i64 is a disallo wed LLVM intrinsic | |
44 ; CHECK-NOT: Function llvm.nacl.atomic.llvm.nacl.atomic.fence is a disallowed LL VM intrinsic | |
45 declare i8 @llvm.nacl.atomic.load.i8(i8*, i32) | |
46 declare i16 @llvm.nacl.atomic.load.i16(i16*, i32) | |
47 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) | |
48 declare i64 @llvm.nacl.atomic.load.i64(i64*, i32) | |
Mark Seaborn
2013/07/02 19:16:02
I still disagree with allowing 64-bit atomics. Th
JF
2013/07/02 23:14:54
Without shared memory there is no issue, even on M
Mark Seaborn
2013/07/02 23:34:10
That's not the case, because the Javascript interf
JF
2013/07/02 23:50:57
I suggest you read the updated PNaClLangRef, it sh
| |
49 declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32) | |
50 declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32) | |
51 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) | |
52 declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32) | |
53 declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32) | |
54 declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32) | |
55 declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32) | |
56 declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32) | |
57 declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32) | |
58 declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32) | |
59 declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32) | |
60 declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32) | |
61 declare void @llvm.nacl.atomic.fence(i32) | |
62 | |
28 ; CHECK-NOT: Function llvm.bswap.i16 is a disallowed LLVM intrinsic | 63 ; CHECK-NOT: Function llvm.bswap.i16 is a disallowed LLVM intrinsic |
29 declare i16 @llvm.bswap.i16(i16) | 64 declare i16 @llvm.bswap.i16(i16) |
30 | 65 |
31 ; CHECK-NOT: Function llvm.bswap.i32 is a disallowed LLVM intrinsic | 66 ; CHECK-NOT: Function llvm.bswap.i32 is a disallowed LLVM intrinsic |
32 declare i32 @llvm.bswap.i32(i32) | 67 declare i32 @llvm.bswap.i32(i32) |
33 | 68 |
34 ; CHECK-NOT: Function llvm.bswap.i64 is a disallowed LLVM intrinsic | 69 ; CHECK-NOT: Function llvm.bswap.i64 is a disallowed LLVM intrinsic |
35 declare i64 @llvm.bswap.i64(i64) | 70 declare i64 @llvm.bswap.i64(i64) |
36 | 71 |
37 ; CHECK-NOT: Function llvm.cttz.i32 is a disallowed LLVM intrinsic | 72 ; CHECK-NOT: Function llvm.cttz.i32 is a disallowed LLVM intrinsic |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
97 declare void @llvm.lifetime.start(i64, i8* nocapture) | 132 declare void @llvm.lifetime.start(i64, i8* nocapture) |
98 | 133 |
99 ; CHECK: Function llvm.lifetime.end is a disallowed LLVM intrinsic | 134 ; CHECK: Function llvm.lifetime.end is a disallowed LLVM intrinsic |
100 declare void @llvm.lifetime.end(i64, i8* nocapture) | 135 declare void @llvm.lifetime.end(i64, i8* nocapture) |
101 | 136 |
102 ; CHECK: Function llvm.frameaddress is a disallowed LLVM intrinsic | 137 ; CHECK: Function llvm.frameaddress is a disallowed LLVM intrinsic |
103 declare i8* @llvm.frameaddress(i32 %level) | 138 declare i8* @llvm.frameaddress(i32 %level) |
104 | 139 |
105 ; CHECK: Function llvm.returnaddress is a disallowed LLVM intrinsic | 140 ; CHECK: Function llvm.returnaddress is a disallowed LLVM intrinsic |
106 declare i8* @llvm.returnaddress(i32 %level) | 141 declare i8* @llvm.returnaddress(i32 %level) |
OLD | NEW |