Lines Matching +full:- +full:- +full:token
1 ; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
3 ; CHECK: Entry or anchor intrinsic cannot have a convergencectrl token operand.
4 ; CHECK-NEXT: %t04_tok2 = call token
5 ; CHECK: Loop intrinsic must have a convergencectrl token operand.
6 ; CHECK-NEXT: %t04_tok3 = call token
8 %t04_tok1 = call token @llvm.experimental.convergence.anchor()
9 …%t04_tok2 = call token @llvm.experimental.convergence.anchor() [ "convergencectrl"(token %t04_tok1…
10 %t04_tok3 = call token @llvm.experimental.convergence.loop()
15 ; CHECK-NEXT: %t04_tok1 = call token @produce_token()
16 ; CHECK-NEXT: call void @f() [ "convergencectrl"(token %t04_tok1) ]
18 %t04_tok1 = call token @produce_token()
19 call void @f() [ "convergencectrl"(token %t04_tok1) ]
23 ; CHECK: Convergence control token can only be used in a convergent call.
24 ; CHECK-NEXT call void @g(){{.*}}%t05_tok1
26 %t05_tok1 = call token @llvm.experimental.convergence.anchor()
27 call void @g() [ "convergencectrl"(token %t05_tok1) ]
31 ; CHECK: The 'convergencectrl' bundle requires exactly one token use.
32 ; CHECK-NEXT: call void @g()
34 %t06_tok1 = call token @llvm.experimental.convergence.anchor()
35 %t06_tok2 = call token @llvm.experimental.convergence.anchor()
36 call void @g() [ "convergencectrl"(token %t06_tok2, token %t06_tok1) ]
41 ; CHECK-NEXT: call void @g()
43 %t07_tok1 = call token @llvm.experimental.convergence.anchor()
44 %t07_tok2 = call token @llvm.experimental.convergence.anchor()
45 call void @g() [ "convergencectrl"(token %t07_tok2), "convergencectrl"(token %t07_tok1) ]
50 ; CHECK-NEXT call void @f()
53 %t10_tok1 = call token @llvm.experimental.convergence.anchor()
54 call void @f() [ "convergencectrl"(token %t10_tok1) ]
61 ; CHECK: %t20_tok1 = call token @llvm.experimental.convergence.anchor()
63 ; CHECK: call void @f() [ "convergencectrl"(token %t20_tok1) ]
68 %t20_tok1 = call token @llvm.experimental.convergence.anchor()
69 call void @f() [ "convergencectrl"(token %t20_tok1) ]
73 ; CHECK: Convergence region is not well-nested.
76 %t30_tok1 = call token @llvm.experimental.convergence.anchor()
77 %t30_tok2 = call token @llvm.experimental.convergence.anchor()
78 call void @f() [ "convergencectrl"(token %t30_tok1) ]
79 call void @f() [ "convergencectrl"(token %t30_tok2) ]
83 ; CHECK: Convergence region is not well-nested.
87 %t40_tok1 = call token @llvm.experimental.convergence.anchor()
88 %t40_tok2 = call token @llvm.experimental.convergence.anchor()
92 call void @f() [ "convergencectrl"(token %t40_tok1) ]
96 call void @f() [ "convergencectrl"(token %t40_tok2) ]
100 …HECK: Convergence token used by an instruction other than llvm.experimental.convergence.loop in a …
101 ; CHECK: token %t50_tok1
104 %t50_tok1 = call token @llvm.experimental.convergence.anchor()
108 call void @f() [ "convergencectrl"(token %t50_tok1) ]
117 %t60_tok1 = call token @llvm.experimental.convergence.entry()
124 %t60_tok2 = call token @llvm.experimental.convergence.entry()
129 ; CHECK-NEXT: %h1
130 ; CHECK-SAME: %t60_tok3
133 %t60_tok3 = call token @llvm.experimental.convergence.entry()
138 %h2 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t60_tok3) ]
142 %h1 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t60_tok3) ]
153 %t60_tok4 = call token @llvm.experimental.convergence.entry()
157 ; CHECK: Two static convergence token uses in a cycle that does not contain either token's definiti…
158 ; CHECK: token %t70_tok1
159 ; CHECK: token %t70_tok2
162 %t70_tok1 = call token @llvm.experimental.convergence.anchor()
163 %t70_tok2 = call token @llvm.experimental.convergence.anchor()
167 %h2 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t70_tok2) ]
168 %h1 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t70_tok1) ]
172 ; CHECK: Two static convergence token uses in a cycle that does not contain either token's definiti…
173 ; CHECK: token %h0
174 ; CHECK: token %h0
177 %t70_tok3 = call token @llvm.experimental.convergence.anchor()
181 %h0 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t70_tok3) ]
185 %h1 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %h0) ]
186 %h2 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %h0) ]
191 ; CHECK: %h3 = call token
195 %t70_tok4 = call token @llvm.experimental.convergence.anchor()
202 %h3 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %t70_tok4) ]
207 ; CHECK: %h4 = call token
211 %a = call token @llvm.experimental.convergence.anchor()
215 %b = call token @llvm.experimental.convergence.anchor()
219 %h4 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %a) ]
223 call void @f() [ "convergencectrl"(token %b) ]
227 call void @f() [ "convergencectrl"(token %h4) ]
231 call void @f() [ "convergencectrl"(token %a) ]
237 ; CHECK: %h5 = call token
241 %a = call token @llvm.experimental.convergence.anchor()
245 %h5 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %a) ]
249 %c = call token @llvm.experimental.convergence.anchor()
253 call void @f() [ "convergencectrl"(token %h5) ]
257 call void @f() [ "convergencectrl"(token %c) ]
261 call void @f() [ "convergencectrl"(token %a) ]
265 declare token @produce_token()
270 declare token @llvm.experimental.convergence.entry()
271 declare token @llvm.experimental.convergence.anchor()
272 declare token @llvm.experimental.convergence.loop()