@@ -10,31 +10,31 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
10
10
define void @test (ptr nocapture %asd , ptr nocapture %aud ,
11
11
; CHECK-LABEL: @test(
12
12
; CHECK-NEXT: entry:
13
- ; CHECK-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
14
- ; CHECK-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[AUD:%.*]], i64 512
15
- ; CHECK-NEXT: [[UGLYGEP2 :%.*]] = getelementptr i8, ptr [[ASR:%.*]], i64 512
16
- ; CHECK-NEXT: [[UGLYGEP3 :%.*]] = getelementptr i8, ptr [[AUR:%.*]], i64 512
17
- ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
18
- ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP ]]
13
+ ; CHECK-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
14
+ ; CHECK-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[AUD:%.*]], i64 512
15
+ ; CHECK-NEXT: [[SCEVGEP2 :%.*]] = getelementptr i8, ptr [[ASR:%.*]], i64 512
16
+ ; CHECK-NEXT: [[SCEVGEP3 :%.*]] = getelementptr i8, ptr [[AUR:%.*]], i64 512
17
+ ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
18
+ ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP ]]
19
19
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
20
- ; CHECK-NEXT: [[BOUND04:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP2 ]]
21
- ; CHECK-NEXT: [[BOUND15:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP ]]
20
+ ; CHECK-NEXT: [[BOUND04:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP2 ]]
21
+ ; CHECK-NEXT: [[BOUND15:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP ]]
22
22
; CHECK-NEXT: [[FOUND_CONFLICT6:%.*]] = and i1 [[BOUND04]], [[BOUND15]]
23
23
; CHECK-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[FOUND_CONFLICT]], [[FOUND_CONFLICT6]]
24
- ; CHECK-NEXT: [[BOUND07:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP3 ]]
25
- ; CHECK-NEXT: [[BOUND18:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP ]]
24
+ ; CHECK-NEXT: [[BOUND07:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP3 ]]
25
+ ; CHECK-NEXT: [[BOUND18:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP ]]
26
26
; CHECK-NEXT: [[FOUND_CONFLICT9:%.*]] = and i1 [[BOUND07]], [[BOUND18]]
27
27
; CHECK-NEXT: [[CONFLICT_RDX10:%.*]] = or i1 [[CONFLICT_RDX]], [[FOUND_CONFLICT9]]
28
- ; CHECK-NEXT: [[BOUND011:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP2 ]]
29
- ; CHECK-NEXT: [[BOUND112:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP1 ]]
28
+ ; CHECK-NEXT: [[BOUND011:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP2 ]]
29
+ ; CHECK-NEXT: [[BOUND112:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP1 ]]
30
30
; CHECK-NEXT: [[FOUND_CONFLICT13:%.*]] = and i1 [[BOUND011]], [[BOUND112]]
31
31
; CHECK-NEXT: [[CONFLICT_RDX14:%.*]] = or i1 [[CONFLICT_RDX10]], [[FOUND_CONFLICT13]]
32
- ; CHECK-NEXT: [[BOUND015:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP3 ]]
33
- ; CHECK-NEXT: [[BOUND116:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP1 ]]
32
+ ; CHECK-NEXT: [[BOUND015:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP3 ]]
33
+ ; CHECK-NEXT: [[BOUND116:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP1 ]]
34
34
; CHECK-NEXT: [[FOUND_CONFLICT17:%.*]] = and i1 [[BOUND015]], [[BOUND116]]
35
35
; CHECK-NEXT: [[CONFLICT_RDX18:%.*]] = or i1 [[CONFLICT_RDX14]], [[FOUND_CONFLICT17]]
36
- ; CHECK-NEXT: [[BOUND019:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP3 ]]
37
- ; CHECK-NEXT: [[BOUND120:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP2 ]]
36
+ ; CHECK-NEXT: [[BOUND019:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP3 ]]
37
+ ; CHECK-NEXT: [[BOUND120:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP2 ]]
38
38
; CHECK-NEXT: [[FOUND_CONFLICT21:%.*]] = and i1 [[BOUND019]], [[BOUND120]]
39
39
; CHECK-NEXT: [[CONFLICT_RDX22:%.*]] = or i1 [[CONFLICT_RDX18]], [[FOUND_CONFLICT21]]
40
40
; CHECK-NEXT: br i1 [[CONFLICT_RDX22]], label [[SCALAR_PH:%.*]], label [[VECTOR_BODY:%.*]]
@@ -171,31 +171,31 @@ define void @test(ptr nocapture %asd, ptr nocapture %aud,
171
171
; UNROLL-NO-VF-NEXT: entry:
172
172
; UNROLL-NO-VF-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
173
173
; UNROLL-NO-VF: vector.memcheck:
174
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
175
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[AUD:%.*]], i64 512
176
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP2 :%.*]] = getelementptr i8, ptr [[ASR:%.*]], i64 512
177
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP3 :%.*]] = getelementptr i8, ptr [[AUR:%.*]], i64 512
178
- ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
179
- ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP ]]
174
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
175
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[AUD:%.*]], i64 512
176
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP2 :%.*]] = getelementptr i8, ptr [[ASR:%.*]], i64 512
177
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP3 :%.*]] = getelementptr i8, ptr [[AUR:%.*]], i64 512
178
+ ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
179
+ ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP ]]
180
180
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
181
- ; UNROLL-NO-VF-NEXT: [[BOUND04:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP2 ]]
182
- ; UNROLL-NO-VF-NEXT: [[BOUND15:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP ]]
181
+ ; UNROLL-NO-VF-NEXT: [[BOUND04:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP2 ]]
182
+ ; UNROLL-NO-VF-NEXT: [[BOUND15:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP ]]
183
183
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT6:%.*]] = and i1 [[BOUND04]], [[BOUND15]]
184
184
; UNROLL-NO-VF-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[FOUND_CONFLICT]], [[FOUND_CONFLICT6]]
185
- ; UNROLL-NO-VF-NEXT: [[BOUND07:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP3 ]]
186
- ; UNROLL-NO-VF-NEXT: [[BOUND18:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP ]]
185
+ ; UNROLL-NO-VF-NEXT: [[BOUND07:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP3 ]]
186
+ ; UNROLL-NO-VF-NEXT: [[BOUND18:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP ]]
187
187
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT9:%.*]] = and i1 [[BOUND07]], [[BOUND18]]
188
188
; UNROLL-NO-VF-NEXT: [[CONFLICT_RDX10:%.*]] = or i1 [[CONFLICT_RDX]], [[FOUND_CONFLICT9]]
189
- ; UNROLL-NO-VF-NEXT: [[BOUND011:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP2 ]]
190
- ; UNROLL-NO-VF-NEXT: [[BOUND112:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP1 ]]
189
+ ; UNROLL-NO-VF-NEXT: [[BOUND011:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP2 ]]
190
+ ; UNROLL-NO-VF-NEXT: [[BOUND112:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP1 ]]
191
191
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT13:%.*]] = and i1 [[BOUND011]], [[BOUND112]]
192
192
; UNROLL-NO-VF-NEXT: [[CONFLICT_RDX14:%.*]] = or i1 [[CONFLICT_RDX10]], [[FOUND_CONFLICT13]]
193
- ; UNROLL-NO-VF-NEXT: [[BOUND015:%.*]] = icmp ult ptr [[AUD]], [[UGLYGEP3 ]]
194
- ; UNROLL-NO-VF-NEXT: [[BOUND116:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP1 ]]
193
+ ; UNROLL-NO-VF-NEXT: [[BOUND015:%.*]] = icmp ult ptr [[AUD]], [[SCEVGEP3 ]]
194
+ ; UNROLL-NO-VF-NEXT: [[BOUND116:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP1 ]]
195
195
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT17:%.*]] = and i1 [[BOUND015]], [[BOUND116]]
196
196
; UNROLL-NO-VF-NEXT: [[CONFLICT_RDX18:%.*]] = or i1 [[CONFLICT_RDX14]], [[FOUND_CONFLICT17]]
197
- ; UNROLL-NO-VF-NEXT: [[BOUND019:%.*]] = icmp ult ptr [[ASR]], [[UGLYGEP3 ]]
198
- ; UNROLL-NO-VF-NEXT: [[BOUND120:%.*]] = icmp ult ptr [[AUR]], [[UGLYGEP2 ]]
197
+ ; UNROLL-NO-VF-NEXT: [[BOUND019:%.*]] = icmp ult ptr [[ASR]], [[SCEVGEP3 ]]
198
+ ; UNROLL-NO-VF-NEXT: [[BOUND120:%.*]] = icmp ult ptr [[AUR]], [[SCEVGEP2 ]]
199
199
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT21:%.*]] = and i1 [[BOUND019]], [[BOUND120]]
200
200
; UNROLL-NO-VF-NEXT: [[CONFLICT_RDX22:%.*]] = or i1 [[CONFLICT_RDX18]], [[FOUND_CONFLICT21]]
201
201
; UNROLL-NO-VF-NEXT: br i1 [[CONFLICT_RDX22]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
@@ -367,10 +367,10 @@ if.end: ; preds = %if.then, %for.body
367
367
define void @test_scalar2scalar (ptr nocapture %asd , ptr nocapture %bsd ) {
368
368
; CHECK-LABEL: @test_scalar2scalar(
369
369
; CHECK-NEXT: entry:
370
- ; CHECK-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
371
- ; CHECK-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
372
- ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
373
- ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[UGLYGEP ]]
370
+ ; CHECK-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
371
+ ; CHECK-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
372
+ ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
373
+ ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[SCEVGEP ]]
374
374
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
375
375
; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH:%.*]], label [[VECTOR_BODY:%.*]]
376
376
; CHECK: vector.body:
@@ -449,10 +449,10 @@ define void @test_scalar2scalar(ptr nocapture %asd, ptr nocapture %bsd) {
449
449
; UNROLL-NO-VF-NEXT: entry:
450
450
; UNROLL-NO-VF-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
451
451
; UNROLL-NO-VF: vector.memcheck:
452
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
453
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
454
- ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
455
- ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[UGLYGEP ]]
452
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
453
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
454
+ ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
455
+ ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[SCEVGEP ]]
456
456
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
457
457
; UNROLL-NO-VF-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
458
458
; UNROLL-NO-VF: vector.ph:
@@ -559,10 +559,10 @@ if.end: ; preds = %if.then, %for.body
559
559
define void @pr30172 (ptr nocapture %asd , ptr nocapture %bsd ) !dbg !5 {;
560
560
; CHECK-LABEL: @pr30172(
561
561
; CHECK-NEXT: entry:
562
- ; CHECK-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
563
- ; CHECK-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
564
- ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
565
- ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[UGLYGEP ]]
562
+ ; CHECK-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
563
+ ; CHECK-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
564
+ ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
565
+ ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[SCEVGEP ]]
566
566
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
567
567
; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH:%.*]], label [[VECTOR_BODY:%.*]]
568
568
; CHECK: vector.body:
@@ -648,10 +648,10 @@ define void @pr30172(ptr nocapture %asd, ptr nocapture %bsd) !dbg !5 {;
648
648
; UNROLL-NO-VF-NEXT: entry:
649
649
; UNROLL-NO-VF-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
650
650
; UNROLL-NO-VF: vector.memcheck:
651
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
652
- ; UNROLL-NO-VF-NEXT: [[UGLYGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
653
- ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[UGLYGEP1 ]]
654
- ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[UGLYGEP ]]
651
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP :%.*]] = getelementptr i8, ptr [[ASD:%.*]], i64 512
652
+ ; UNROLL-NO-VF-NEXT: [[SCEVGEP1 :%.*]] = getelementptr i8, ptr [[BSD:%.*]], i64 512
653
+ ; UNROLL-NO-VF-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[ASD]], [[SCEVGEP1 ]]
654
+ ; UNROLL-NO-VF-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[BSD]], [[SCEVGEP ]]
655
655
; UNROLL-NO-VF-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
656
656
; UNROLL-NO-VF-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
657
657
; UNROLL-NO-VF: vector.ph:
0 commit comments