Lines Matching refs:GUARD
5 …er-bitwidth=32 -force-hardware-loop-guard=true -S %s -o - | FileCheck %s --check-prefix=CHECK-GUARD
65 ; CHECK-GUARD-LABEL: @while_lt(
66 ; CHECK-GUARD-NEXT: entry:
67 ; CHECK-GUARD-NEXT: [[CMP4:%.*]] = icmp ult i32 [[I:%.*]], [[N:%.*]]
68 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = sub i32 [[N]], [[I]]
69 ; CHECK-GUARD-NEXT: br i1 [[CMP4]], label [[WHILE_BODY_PREHEADER:%.*]], label [[WHILE_END:%.*]]
70 ; CHECK-GUARD: while.body.preheader:
71 ; CHECK-GUARD-NEXT: call void @llvm.set.loop.iterations.i32(i32 [[TMP0]])
72 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
73 ; CHECK-GUARD: while.body:
74 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[INC:%.*]], [[WHILE_BODY]] ], [ [[I]], [[WHIL…
75 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
76 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
77 ; CHECK-GUARD-NEXT: [[INC]] = add nuw i32 [[I_ADDR_05]], 1
78 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
79 ; CHECK-GUARD-NEXT: br i1 [[TMP1]], label [[WHILE_BODY]], label [[WHILE_END]]
80 ; CHECK-GUARD: while.end:
81 ; CHECK-GUARD-NEXT: ret void
195 ; CHECK-GUARD-LABEL: @while_gt(
196 ; CHECK-GUARD-NEXT: entry:
197 ; CHECK-GUARD-NEXT: [[CMP4:%.*]] = icmp sgt i32 [[I:%.*]], [[N:%.*]]
198 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = sub i32 [[I]], [[N]]
199 ; CHECK-GUARD-NEXT: br i1 [[CMP4]], label [[WHILE_BODY_PREHEADER:%.*]], label [[WHILE_END:%.*]]
200 ; CHECK-GUARD: while.body.preheader:
201 ; CHECK-GUARD-NEXT: call void @llvm.set.loop.iterations.i32(i32 [[TMP0]])
202 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
203 ; CHECK-GUARD: while.body:
204 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[DEC:%.*]], [[WHILE_BODY]] ], [ [[I]], [[WHIL…
205 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
206 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
207 ; CHECK-GUARD-NEXT: [[DEC]] = add nsw i32 [[I_ADDR_05]], -1
208 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
209 ; CHECK-GUARD-NEXT: br i1 [[TMP1]], label [[WHILE_BODY]], label [[WHILE_END]]
210 ; CHECK-GUARD: while.end:
211 ; CHECK-GUARD-NEXT: ret void
328 ; CHECK-GUARD-LABEL: @while_gte(
329 ; CHECK-GUARD-NEXT: entry:
330 ; CHECK-GUARD-NEXT: [[CMP4:%.*]] = icmp slt i32 [[I:%.*]], [[N:%.*]]
331 ; CHECK-GUARD-NEXT: br i1 [[CMP4]], label [[WHILE_END:%.*]], label [[WHILE_BODY_PREHEADER:%.*]]
332 ; CHECK-GUARD: while.body.preheader:
333 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = add i32 [[I]], 1
334 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = sub i32 [[TMP0]], [[N]]
335 ; CHECK-GUARD-NEXT: call void @llvm.set.loop.iterations.i32(i32 [[TMP1]])
336 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
337 ; CHECK-GUARD: while.body:
338 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[DEC:%.*]], [[WHILE_BODY]] ], [ [[I]], [[WHIL…
339 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
340 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
341 ; CHECK-GUARD-NEXT: [[DEC]] = add nsw i32 [[I_ADDR_05]], -1
342 ; CHECK-GUARD-NEXT: [[TMP2:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
343 ; CHECK-GUARD-NEXT: br i1 [[TMP2]], label [[WHILE_BODY]], label [[WHILE_END]]
344 ; CHECK-GUARD: while.end:
345 ; CHECK-GUARD-NEXT: ret void
458 ; CHECK-GUARD-LABEL: @while_ne(
459 ; CHECK-GUARD-NEXT: entry:
460 ; CHECK-GUARD-NEXT: [[CMP:%.*]] = icmp ne i32 [[N:%.*]], 0
461 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = call i1 @llvm.test.set.loop.iterations.i32(i32 [[N]])
462 ; CHECK-GUARD-NEXT: br i1 [[TMP0]], label [[WHILE_BODY_PREHEADER:%.*]], label [[WHILE_END:%.*]]
463 ; CHECK-GUARD: while.body.preheader:
464 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
465 ; CHECK-GUARD: while.body:
466 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[INC:%.*]], [[WHILE_BODY]] ], [ 0, [[WHILE_BO…
467 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
468 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
469 ; CHECK-GUARD-NEXT: [[INC]] = add nuw i32 [[I_ADDR_05]], 1
470 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
471 ; CHECK-GUARD-NEXT: br i1 [[TMP1]], label [[WHILE_BODY]], label [[WHILE_END]]
472 ; CHECK-GUARD: while.end:
473 ; CHECK-GUARD-NEXT: ret void
582 ; CHECK-GUARD-LABEL: @while_eq(
583 ; CHECK-GUARD-NEXT: entry:
584 ; CHECK-GUARD-NEXT: [[CMP:%.*]] = icmp eq i32 [[N:%.*]], 0
585 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = call i1 @llvm.test.set.loop.iterations.i32(i32 [[N]])
586 ; CHECK-GUARD-NEXT: br i1 [[TMP0]], label [[WHILE_BODY_PREHEADER:%.*]], label [[WHILE_END:%.*]]
587 ; CHECK-GUARD: while.body.preheader:
588 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
589 ; CHECK-GUARD: while.body:
590 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[INC:%.*]], [[WHILE_BODY]] ], [ 0, [[WHILE_BO…
591 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
592 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
593 ; CHECK-GUARD-NEXT: [[INC]] = add nuw i32 [[I_ADDR_05]], 1
594 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
595 ; CHECK-GUARD-NEXT: br i1 [[TMP1]], label [[WHILE_BODY]], label [[WHILE_END]]
596 ; CHECK-GUARD: while.end:
597 ; CHECK-GUARD-NEXT: ret void
712 ; CHECK-GUARD-LABEL: @while_preheader_eq(
713 ; CHECK-GUARD-NEXT: entry:
714 ; CHECK-GUARD-NEXT: br label [[PREHEADER:%.*]]
715 ; CHECK-GUARD: preheader:
716 ; CHECK-GUARD-NEXT: [[CMP:%.*]] = icmp eq i32 [[N:%.*]], 0
717 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = call i1 @llvm.test.set.loop.iterations.i32(i32 [[N]])
718 ; CHECK-GUARD-NEXT: br i1 [[TMP0]], label [[WHILE_BODY_PREHEADER:%.*]], label [[WHILE_END:%.*]]
719 ; CHECK-GUARD: while.body.preheader:
720 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY:%.*]]
721 ; CHECK-GUARD: while.body:
722 ; CHECK-GUARD-NEXT: [[I_ADDR_05:%.*]] = phi i32 [ [[INC:%.*]], [[WHILE_BODY]] ], [ 0, [[WHILE_BO…
723 ; CHECK-GUARD-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[I_ADDR_…
724 ; CHECK-GUARD-NEXT: store i32 [[I_ADDR_05]], i32* [[ARRAYIDX]], align 4
725 ; CHECK-GUARD-NEXT: [[INC]] = add nuw i32 [[I_ADDR_05]], 1
726 ; CHECK-GUARD-NEXT: [[TMP1:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
727 ; CHECK-GUARD-NEXT: br i1 [[TMP1]], label [[WHILE_BODY]], label [[WHILE_END]]
728 ; CHECK-GUARD: while.end:
729 ; CHECK-GUARD-NEXT: ret void
869 ; CHECK-GUARD-LABEL: @nested(
870 ; CHECK-GUARD-NEXT: entry:
871 ; CHECK-GUARD-NEXT: [[CMP20:%.*]] = icmp eq i32 [[N:%.*]], 0
872 ; CHECK-GUARD-NEXT: br i1 [[CMP20]], label [[WHILE_END7:%.*]], label [[WHILE_COND1_PREHEADER_US:…
873 ; CHECK-GUARD: while.cond1.preheader.us:
874 ; CHECK-GUARD-NEXT: [[I_021_US:%.*]] = phi i32 [ [[INC6_US:%.*]], [[WHILE_COND1_WHILE_END_CRIT_E…
875 ; CHECK-GUARD-NEXT: [[MUL_US:%.*]] = mul i32 [[I_021_US]], [[N]]
876 ; CHECK-GUARD-NEXT: call void @llvm.set.loop.iterations.i32(i32 [[N]])
877 ; CHECK-GUARD-NEXT: br label [[WHILE_BODY3_US:%.*]]
878 ; CHECK-GUARD: while.body3.us:
879 ; CHECK-GUARD-NEXT: [[J_019_US:%.*]] = phi i32 [ 0, [[WHILE_COND1_PREHEADER_US]] ], [ [[INC_US:%…
880 ; CHECK-GUARD-NEXT: [[ADD_US:%.*]] = add i32 [[J_019_US]], [[MUL_US]]
881 ; CHECK-GUARD-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i32, i32* [[A:%.*]], i32 [[ADD_…
882 ; CHECK-GUARD-NEXT: store i32 [[ADD_US]], i32* [[ARRAYIDX_US]], align 4
883 ; CHECK-GUARD-NEXT: [[INC_US]] = add nuw i32 [[J_019_US]], 1
884 ; CHECK-GUARD-NEXT: [[TMP0:%.*]] = call i1 @llvm.loop.decrement.i32(i32 1)
885 ; CHECK-GUARD-NEXT: br i1 [[TMP0]], label [[WHILE_BODY3_US]], label [[WHILE_COND1_WHILE_END_CRIT…
886 ; CHECK-GUARD: while.cond1.while.end_crit_edge.us:
887 ; CHECK-GUARD-NEXT: [[INC6_US]] = add nuw i32 [[I_021_US]], 1
888 ; CHECK-GUARD-NEXT: [[EXITCOND23:%.*]] = icmp eq i32 [[INC6_US]], [[N]]
889 ; CHECK-GUARD-NEXT: br i1 [[EXITCOND23]], label [[WHILE_END7]], label [[WHILE_COND1_PREHEADER_US…
890 ; CHECK-GUARD: while.end7:
891 ; CHECK-GUARD-NEXT: ret void