Lines Matching refs:guard
2 ; RUN: opt -S -guard-widening < %s | FileCheck %s
3 ; RUN: opt -S -passes=guard-widening < %s | FileCheck %s
5 declare void @llvm.experimental.guard(i1,...)
13 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
18 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
19 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
28 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
39 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
49 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
61 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
73 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
84 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
94 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0]]) [ "deopt"() ]
98 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1]]) [ "deopt"() ]
106 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
112 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
128 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
138 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
143 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
157 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
168 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
173 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
181 ; the first guard, but there is no guarantee that it will produce the
187 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0]]) [ "deopt"() ]
190 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1]]) [ "deopt"() ]
195 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
198 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
202 ; All else equal, we try to widen the earliest guard we can. This
210 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
212 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_2]]) [ "deopt"() ]
222 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
224 call void(i1, ...) @llvm.experimental.guard(i1 %cond_2) [ "deopt"() ]
229 call void(i1, ...) @llvm.experimental.guard(i1 %cond_3) [ "deopt"() ]
236 ; In this case the earliest dominating guard is in a loop, and we
244 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1:%.*]]) [ "deopt"() ]
249 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
260 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
265 call void(i1, ...) @llvm.experimental.guard(i1 %cond_2) [ "deopt"() ]
270 call void(i1, ...) @llvm.experimental.guard(i1 %cond_3) [ "deopt"() ]
284 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0:%.*]]) [ "deopt"() ]
287 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1:%.*]]) [ "deopt"() ]
295 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
300 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
311 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0:%.*]]) [ "deopt"() ]
314 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1:%.*]]) [ "deopt"() ]
322 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
326 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
330 ; With guards in loops, we're okay hoisting out the guard into the
338 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
348 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
352 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
393 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
400 call void(i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ]
432 call void(i1, ...) @llvm.experimental.guard(i1 %cond) [ "deopt"() ]
441 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[WIDE_CHK]]) [ "deopt"() ]
452 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
457 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
468 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0]]) [ "deopt"() ]
472 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_1]]) [ "deopt"() ]
480 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
486 call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
493 ; Make sure we do not widen guard by trivial true conditions into something.
497 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0:%.*]]) [ "deopt"() ]
498 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ]
503 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
504 call void(i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ]
508 ; Make sure we do not widen guard by trivial false conditions into something.
512 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 [[COND_0:%.*]]) [ "deopt"() ]
513 ; CHECK-NEXT: call void (i1, ...) @llvm.experimental.guard(i1 false) [ "deopt"() ]
518 call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
519 call void(i1, ...) @llvm.experimental.guard(i1 false) [ "deopt"() ]