Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: test/NaCl/PNaClABI/intrinsics.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/NaCl/PNaClABI/instructions.ll ('k') | test/NaCl/PNaClABI/linkagetypes.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ; RUN: not pnacl-abicheck < %s | FileCheck %s
2 ; RUN: not pnacl-abicheck -pnaclabi-allow-debug-metadata < %s | \
3 ; RUN: FileCheck %s --check-prefix=DBG
4
5 ; Test that only white-listed intrinsics are allowed.
6
7 ; ===================================
8 ; Always allowed intrinsics.
9
10 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src,
11 i32 %len, i32 %align, i1 %isvolatile)
12 declare void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src,
13 i32 %len, i32 %align, i1 %isvolatile)
14 declare void @llvm.memset.p0i8.i32(i8* %dest, i8 %val,
15 i32 %len, i32 %align, i1 %isvolatile)
16
17 declare i8* @llvm.nacl.read.tp()
18
19 declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
20 declare i16 @llvm.nacl.atomic.load.i16(i16*, i32)
21 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32)
22 declare i64 @llvm.nacl.atomic.load.i64(i64*, i32)
23 declare void @llvm.nacl.atomic.store.i8(i8, i8*, i32)
24 declare void @llvm.nacl.atomic.store.i16(i16, i16*, i32)
25 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32)
26 declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
27 declare i8 @llvm.nacl.atomic.rmw.i8(i32, i8*, i8, i32)
28 declare i16 @llvm.nacl.atomic.rmw.i16(i32, i16*, i16, i32)
29 declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
30 declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
31 declare i8 @llvm.nacl.atomic.cmpxchg.i8(i8*, i8, i8, i32, i32)
32 declare i16 @llvm.nacl.atomic.cmpxchg.i16(i16*, i16, i16, i32, i32)
33 declare i32 @llvm.nacl.atomic.cmpxchg.i32(i32*, i32, i32, i32, i32)
34 declare i64 @llvm.nacl.atomic.cmpxchg.i64(i64*, i64, i64, i32, i32)
35 declare void @llvm.nacl.atomic.fence(i32)
36 declare void @llvm.nacl.atomic.fence.all()
37 declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
38
39 declare i16 @llvm.bswap.i16(i16)
40 declare i32 @llvm.bswap.i32(i32)
41 declare i64 @llvm.bswap.i64(i64)
42
43 declare i32 @llvm.cttz.i32(i32, i1)
44 declare i64 @llvm.cttz.i64(i64, i1)
45
46 declare i32 @llvm.ctlz.i32(i32, i1)
47 declare i64 @llvm.ctlz.i64(i64, i1)
48
49 declare i32 @llvm.ctpop.i32(i32)
50 declare i64 @llvm.ctpop.i64(i64)
51
52 declare void @llvm.trap()
53
54 declare float @llvm.fabs.f32(float)
55 declare double @llvm.fabs.f64(double)
56 declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
57
58 declare float @llvm.sqrt.f32(float)
59 declare double @llvm.sqrt.f64(double)
60
61 declare i8* @llvm.stacksave()
62 declare void @llvm.stackrestore(i8*)
63
64 declare void @llvm.nacl.longjmp(i8*, i32)
65 declare i32 @llvm.nacl.setjmp(i8*)
66
67 ; CHECK-NOT: disallowed
68
69 ; ===================================
70 ; Always disallowed intrinsics.
71
72 ; CHECK: Function llvm.adjust.trampoline is a disallowed LLVM intrinsic
73 ; DBG: Function llvm.adjust.trampoline is a disallowed LLVM intrinsic
74 declare i8* @llvm.adjust.trampoline(i8*)
75
76 ; CHECK: Function llvm.init.trampoline is a disallowed LLVM intrinsic
77 ; DBG: Function llvm.init.trampoline is a disallowed LLVM intrinsic
78 declare void @llvm.init.trampoline(i8*, i8*, i8*)
79
80 ; CHECK: Function llvm.x86.aesni.aeskeygenassist is a disallowed LLVM intrinsic
81 ; DBG: Function llvm.x86.aesni.aeskeygenassist is a disallowed LLVM intrinsic
82 declare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8)
83
84 ; CHECK: Function llvm.va_copy is a disallowed LLVM intrinsic
85 ; DBG: Function llvm.va_copy is a disallowed LLVM intrinsic
86 declare void @llvm.va_copy(i8*, i8*)
87
88 ; CHECK: Function llvm.bswap.i1 is a disallowed LLVM intrinsic
89 declare i1 @llvm.bswap.i1(i1)
90
91 ; CHECK: Function llvm.bswap.i8 is a disallowed LLVM intrinsic
92 declare i8 @llvm.bswap.i8(i8)
93
94 ; CHECK: Function llvm.ctlz.i16 is a disallowed LLVM intrinsic
95 declare i16 @llvm.ctlz.i16(i16, i1)
96
97 ; CHECK: Function llvm.cttz.i16 is a disallowed LLVM intrinsic
98 declare i16 @llvm.cttz.i16(i16, i1)
99
100 ; CHECK: Function llvm.ctpop.i16 is a disallowed LLVM intrinsic
101 declare i16 @llvm.ctpop.i16(i16)
102
103 ; CHECK: Function llvm.lifetime.start is a disallowed LLVM intrinsic
104 declare void @llvm.lifetime.start(i64, i8* nocapture)
105
106 ; CHECK: Function llvm.lifetime.end is a disallowed LLVM intrinsic
107 declare void @llvm.lifetime.end(i64, i8* nocapture)
108
109 ; CHECK: Function llvm.frameaddress is a disallowed LLVM intrinsic
110 declare i8* @llvm.frameaddress(i32 %level)
111
112 ; CHECK: Function llvm.returnaddress is a disallowed LLVM intrinsic
113 declare i8* @llvm.returnaddress(i32 %level)
114
115 ; CHECK: Function llvm.fabs.f16 is a disallowed LLVM intrinsic
116 declare half @llvm.fabs.f16(half)
117
118 ; CHECK: Function llvm.fabs.v2f16 is a disallowed LLVM intrinsic
119 declare <2 x half> @llvm.fabs.v2f16(<2 x half>)
120 ; CHECK: Function llvm.fabs.v4f16 is a disallowed LLVM intrinsic
121 declare <4 x half> @llvm.fabs.v4f16(<4 x half>)
122 ; CHECK: Function llvm.fabs.v8f16 is a disallowed LLVM intrinsic
123 declare <8 x half> @llvm.fabs.v8f16(<8 x half>)
124
125 ; CHECK: Function llvm.fabs.v2f32 is a disallowed LLVM intrinsic
126 declare <2 x float> @llvm.fabs.v2f32(<2 x float>)
127 ; CHECK: Function llvm.fabs.v8f32 is a disallowed LLVM intrinsic
128 declare <8 x float> @llvm.fabs.v8f32(<8 x float>)
129
130 ; CHECK: Function llvm.fabs.v2f64 is a disallowed LLVM intrinsic
131 declare <2 x double> @llvm.fabs.v2f64(<2 x double>)
132 ; CHECK: Function llvm.fabs.v4f64 is a disallowed LLVM intrinsic
133 declare <4 x double> @llvm.fabs.v4f64(<4 x double>)
134 ; CHECK: Function llvm.fabs.v8f64 is a disallowed LLVM intrinsic
135 declare <8 x double> @llvm.fabs.v8f64(<8 x double>)
136
137 ; CHECK: Function llvm.sqrt.fp128 is a disallowed LLVM intrinsic
138 declare fp128 @llvm.sqrt.fp128(fp128)
139
140 ; The variants with 64-bit %len arguments are disallowed.
141 ; CHECK: Function llvm.memcpy.p0i8.p0i8.i64 is a disallowed LLVM intrinsic
142 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src,
143 i64 %len, i32 %align, i1 %isvolatile)
144 ; CHECK: Function llvm.memmove.p0i8.p0i8.i64 is a disallowed LLVM intrinsic
145 declare void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src,
146 i64 %len, i32 %align, i1 %isvolatile)
147 ; CHECK: Function llvm.memset.p0i8.i64 is a disallowed LLVM intrinsic
148 declare void @llvm.memset.p0i8.i64(i8* %dest, i8 %val,
149 i64 %len, i32 %align, i1 %isvolatile)
150
151 ; Test that the ABI checker checks the full function name.
152 ; CHECK: Function llvm.memset.foo is a disallowed LLVM intrinsic
153 declare void @llvm.memset.foo(i8* %dest, i8 %val,
154 i64 %len, i32 %align, i1 %isvolatile)
155
156 ; A debuginfo version is required.
157 !llvm.module.flags = !{!0}
158 !0 = metadata !{i32 1, metadata !"Debug Info Version", i32 2}
159
160 ; ===================================
161 ; Debug info intrinsics, which are disallowed by default.
162
163 ; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic
164 ; DBG-NOT: Function llvm.dbg.value is a disallowed LLVM intrinsic
165 declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
166 ; CHECK: Function llvm.dbg.declare is a disallowed LLVM intrinsic
167 ; DBG-NOT: Function llvm.dbg.declare is a disallowed LLVM intrinsic
168 declare void @llvm.dbg.declare(metadata, metadata, metadata)
OLDNEW
« no previous file with comments | « test/NaCl/PNaClABI/instructions.ll ('k') | test/NaCl/PNaClABI/linkagetypes.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698