@@ -11,8 +11,8 @@ define void @deref_assumption_in_header_constant_trip_count(ptr noalias %a, ptr
11
11
; CHECK: [[VECTOR_PH]]:
12
12
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
13
13
; CHECK: [[VECTOR_BODY]]:
14
- ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.* ]] ]
15
- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2 ]] ]
14
+ ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY ]] ]
15
+ ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY ]] ]
16
16
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
17
17
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], <2 x i64> [[VEC_IND]]
18
18
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
@@ -23,25 +23,8 @@ define void @deref_assumption_in_header_constant_trip_count(ptr noalias %a, ptr
23
23
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
24
24
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP7]], align 4
25
25
; CHECK-NEXT: [[TMP9:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD]], zeroinitializer
26
- ; CHECK-NEXT: [[TMP10:%.*]] = xor <2 x i1> [[TMP9]], splat (i1 true)
27
- ; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP10]], i32 0
28
- ; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
29
- ; CHECK: [[PRED_LOAD_IF]]:
30
- ; CHECK-NEXT: [[TMP21:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
31
- ; CHECK-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
32
- ; CHECK-NEXT: [[TMP11:%.*]] = insertelement <2 x i32> poison, i32 [[TMP22]], i32 0
33
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
34
- ; CHECK: [[PRED_LOAD_CONTINUE]]:
35
- ; CHECK-NEXT: [[TMP12:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP11]], %[[PRED_LOAD_IF]] ]
36
- ; CHECK-NEXT: [[TMP13:%.*]] = extractelement <2 x i1> [[TMP10]], i32 1
37
- ; CHECK-NEXT: br i1 [[TMP13]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
38
- ; CHECK: [[PRED_LOAD_IF1]]:
39
- ; CHECK-NEXT: [[TMP26:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
40
- ; CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[TMP26]], align 4
41
- ; CHECK-NEXT: [[TMP16:%.*]] = insertelement <2 x i32> [[TMP12]], i32 [[TMP27]], i32 1
42
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
43
- ; CHECK: [[PRED_LOAD_CONTINUE2]]:
44
- ; CHECK-NEXT: [[TMP17:%.*]] = phi <2 x i32> [ [[TMP12]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP16]], %[[PRED_LOAD_IF1]] ]
26
+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i32, ptr [[TMP4]], i32 0
27
+ ; CHECK-NEXT: [[TMP17:%.*]] = load <2 x i32>, ptr [[TMP8]], align 4
45
28
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP9]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP17]]
46
29
; CHECK-NEXT: [[TMP30:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
47
30
; CHECK-NEXT: [[TMP31:%.*]] = getelementptr inbounds i32, ptr [[TMP30]], i32 0
@@ -529,17 +512,17 @@ define void @deref_assumption_in_then_constant_trip_count(ptr noalias %a, ptr no
529
512
; CHECK-NEXT: br i1 [[TMP6]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
530
513
; CHECK: [[PRED_LOAD_IF]]:
531
514
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x ptr> [[TMP5]], i32 0
532
- ; CHECK-NEXT: [[TMP18 :%.*]] = load i32, ptr [[TMP17]], align 4
533
- ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP18 ]], i32 0
515
+ ; CHECK-NEXT: [[TMP8 :%.*]] = load i32, ptr [[TMP17]], align 4
516
+ ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP8 ]], i32 0
534
517
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
535
518
; CHECK: [[PRED_LOAD_CONTINUE]]:
536
519
; CHECK-NEXT: [[TMP10:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP9]], %[[PRED_LOAD_IF]] ]
537
520
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <2 x i1> [[TMP4]], i32 1
538
521
; CHECK-NEXT: br i1 [[TMP11]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
539
522
; CHECK: [[PRED_LOAD_IF1]]:
540
- ; CHECK-NEXT: [[TMP22 :%.*]] = extractelement <2 x ptr> [[TMP5]], i32 1
541
- ; CHECK-NEXT: [[TMP23 :%.*]] = load i32, ptr [[TMP22 ]], align 4
542
- ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP23 ]], i32 1
523
+ ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <2 x ptr> [[TMP5]], i32 1
524
+ ; CHECK-NEXT: [[TMP13 :%.*]] = load i32, ptr [[TMP12 ]], align 4
525
+ ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP13 ]], i32 1
543
526
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
544
527
; CHECK: [[PRED_LOAD_CONTINUE2]]:
545
528
; CHECK-NEXT: [[TMP15:%.*]] = phi <2 x i32> [ [[TMP10]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP14]], %[[PRED_LOAD_IF1]] ]
@@ -626,24 +609,24 @@ define void @deref_assumption_in_latch_constant_trip_count(ptr noalias %a, ptr n
626
609
; CHECK-NEXT: br i1 [[TMP6]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
627
610
; CHECK: [[PRED_LOAD_IF]]:
628
611
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
629
- ; CHECK-NEXT: [[TMP18 :%.*]] = load i32, ptr [[TMP17]], align 4
630
- ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP18 ]], i32 0
612
+ ; CHECK-NEXT: [[TMP8 :%.*]] = load i32, ptr [[TMP17]], align 4
613
+ ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP8 ]], i32 0
631
614
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
632
615
; CHECK: [[PRED_LOAD_CONTINUE]]:
633
616
; CHECK-NEXT: [[TMP10:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP9]], %[[PRED_LOAD_IF]] ]
634
617
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <2 x i1> [[TMP5]], i32 1
635
618
; CHECK-NEXT: br i1 [[TMP11]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
636
619
; CHECK: [[PRED_LOAD_IF1]]:
637
- ; CHECK-NEXT: [[TMP22 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
638
- ; CHECK-NEXT: [[TMP23 :%.*]] = load i32, ptr [[TMP22 ]], align 4
639
- ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP23 ]], i32 1
620
+ ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
621
+ ; CHECK-NEXT: [[TMP13 :%.*]] = load i32, ptr [[TMP12 ]], align 4
622
+ ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP13 ]], i32 1
640
623
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
641
624
; CHECK: [[PRED_LOAD_CONTINUE2]]:
642
625
; CHECK-NEXT: [[TMP15:%.*]] = phi <2 x i32> [ [[TMP10]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP14]], %[[PRED_LOAD_IF1]] ]
643
626
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP4]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP15]]
644
- ; CHECK-NEXT: [[TMP28 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
645
- ; CHECK-NEXT: [[TMP20 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
646
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP28 ]], i64 4), "dereferenceable"(ptr [[TMP20 ]], i64 4) ]
627
+ ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
628
+ ; CHECK-NEXT: [[TMP18 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
629
+ ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP16 ]], i64 4), "dereferenceable"(ptr [[TMP18 ]], i64 4) ]
647
630
; CHECK-NEXT: [[TMP29:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
648
631
; CHECK-NEXT: [[TMP19:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
649
632
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP29]], i64 4), "dereferenceable"(ptr [[TMP19]], i64 4) ]
@@ -719,8 +702,8 @@ define void @deref_assumption_in_header_variable_trip_count(ptr noalias %a, ptr
719
702
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
720
703
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
721
704
; CHECK: [[VECTOR_BODY]]:
722
- ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.* ]] ]
723
- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2 ]] ]
705
+ ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY ]] ]
706
+ ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY ]] ]
724
707
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
725
708
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], <2 x i64> [[VEC_IND]]
726
709
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
@@ -731,25 +714,8 @@ define void @deref_assumption_in_header_variable_trip_count(ptr noalias %a, ptr
731
714
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
732
715
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP7]], align 4
733
716
; CHECK-NEXT: [[TMP9:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD]], zeroinitializer
734
- ; CHECK-NEXT: [[TMP10:%.*]] = xor <2 x i1> [[TMP9]], splat (i1 true)
735
- ; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP10]], i32 0
736
- ; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
737
- ; CHECK: [[PRED_LOAD_IF]]:
738
- ; CHECK-NEXT: [[TMP21:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
739
- ; CHECK-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
740
- ; CHECK-NEXT: [[TMP11:%.*]] = insertelement <2 x i32> poison, i32 [[TMP22]], i32 0
741
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
742
- ; CHECK: [[PRED_LOAD_CONTINUE]]:
743
- ; CHECK-NEXT: [[TMP12:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP11]], %[[PRED_LOAD_IF]] ]
744
- ; CHECK-NEXT: [[TMP13:%.*]] = extractelement <2 x i1> [[TMP10]], i32 1
745
- ; CHECK-NEXT: br i1 [[TMP13]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
746
- ; CHECK: [[PRED_LOAD_IF1]]:
747
- ; CHECK-NEXT: [[TMP26:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
748
- ; CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[TMP26]], align 4
749
- ; CHECK-NEXT: [[TMP16:%.*]] = insertelement <2 x i32> [[TMP12]], i32 [[TMP27]], i32 1
750
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
751
- ; CHECK: [[PRED_LOAD_CONTINUE2]]:
752
- ; CHECK-NEXT: [[TMP17:%.*]] = phi <2 x i32> [ [[TMP12]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP16]], %[[PRED_LOAD_IF1]] ]
717
+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i32, ptr [[TMP4]], i32 0
718
+ ; CHECK-NEXT: [[TMP17:%.*]] = load <2 x i32>, ptr [[TMP8]], align 4
753
719
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP9]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP17]]
754
720
; CHECK-NEXT: [[TMP30:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
755
721
; CHECK-NEXT: [[TMP31:%.*]] = getelementptr inbounds i32, ptr [[TMP30]], i32 0
0 commit comments