@@ -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
@@ -606,17 +589,17 @@ define void @deref_assumption_in_then_constant_trip_count(ptr noalias %a, ptr no
606
589
; CHECK-NEXT: br i1 [[TMP6]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
607
590
; CHECK: [[PRED_LOAD_IF]]:
608
591
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x ptr> [[TMP5]], i32 0
609
- ; CHECK-NEXT: [[TMP18 :%.*]] = load i32, ptr [[TMP17]], align 4
610
- ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP18 ]], i32 0
592
+ ; CHECK-NEXT: [[TMP8 :%.*]] = load i32, ptr [[TMP17]], align 4
593
+ ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP8 ]], i32 0
611
594
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
612
595
; CHECK: [[PRED_LOAD_CONTINUE]]:
613
596
; CHECK-NEXT: [[TMP10:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP9]], %[[PRED_LOAD_IF]] ]
614
597
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <2 x i1> [[TMP4]], i32 1
615
598
; CHECK-NEXT: br i1 [[TMP11]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
616
599
; CHECK: [[PRED_LOAD_IF1]]:
617
- ; CHECK-NEXT: [[TMP22 :%.*]] = extractelement <2 x ptr> [[TMP5]], i32 1
618
- ; CHECK-NEXT: [[TMP23 :%.*]] = load i32, ptr [[TMP22 ]], align 4
619
- ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP23 ]], i32 1
600
+ ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <2 x ptr> [[TMP5]], i32 1
601
+ ; CHECK-NEXT: [[TMP13 :%.*]] = load i32, ptr [[TMP12 ]], align 4
602
+ ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP13 ]], i32 1
620
603
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
621
604
; CHECK: [[PRED_LOAD_CONTINUE2]]:
622
605
; CHECK-NEXT: [[TMP15:%.*]] = phi <2 x i32> [ [[TMP10]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP14]], %[[PRED_LOAD_IF1]] ]
@@ -703,24 +686,24 @@ define void @deref_assumption_in_latch_constant_trip_count(ptr noalias %a, ptr n
703
686
; CHECK-NEXT: br i1 [[TMP6]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
704
687
; CHECK: [[PRED_LOAD_IF]]:
705
688
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
706
- ; CHECK-NEXT: [[TMP18 :%.*]] = load i32, ptr [[TMP17]], align 4
707
- ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP18 ]], i32 0
689
+ ; CHECK-NEXT: [[TMP8 :%.*]] = load i32, ptr [[TMP17]], align 4
690
+ ; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x i32> poison, i32 [[TMP8 ]], i32 0
708
691
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
709
692
; CHECK: [[PRED_LOAD_CONTINUE]]:
710
693
; CHECK-NEXT: [[TMP10:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP9]], %[[PRED_LOAD_IF]] ]
711
694
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <2 x i1> [[TMP5]], i32 1
712
695
; CHECK-NEXT: br i1 [[TMP11]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
713
696
; CHECK: [[PRED_LOAD_IF1]]:
714
- ; CHECK-NEXT: [[TMP22 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
715
- ; CHECK-NEXT: [[TMP23 :%.*]] = load i32, ptr [[TMP22 ]], align 4
716
- ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP23 ]], i32 1
697
+ ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
698
+ ; CHECK-NEXT: [[TMP13 :%.*]] = load i32, ptr [[TMP12 ]], align 4
699
+ ; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x i32> [[TMP10]], i32 [[TMP13 ]], i32 1
717
700
; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
718
701
; CHECK: [[PRED_LOAD_CONTINUE2]]:
719
702
; CHECK-NEXT: [[TMP15:%.*]] = phi <2 x i32> [ [[TMP10]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP14]], %[[PRED_LOAD_IF1]] ]
720
703
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP4]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP15]]
721
- ; CHECK-NEXT: [[TMP28 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
722
- ; CHECK-NEXT: [[TMP20 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
723
- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP28 ]], i64 4), "dereferenceable"(ptr [[TMP20 ]], i64 4) ]
704
+ ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
705
+ ; CHECK-NEXT: [[TMP18 :%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
706
+ ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP16 ]], i64 4), "dereferenceable"(ptr [[TMP18 ]], i64 4) ]
724
707
; CHECK-NEXT: [[TMP29:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
725
708
; CHECK-NEXT: [[TMP19:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
726
709
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[TMP29]], i64 4), "dereferenceable"(ptr [[TMP19]], i64 4) ]
@@ -796,8 +779,8 @@ define void @deref_assumption_in_header_variable_trip_count(ptr noalias %a, ptr
796
779
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
797
780
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
798
781
; CHECK: [[VECTOR_BODY]]:
799
- ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.* ]] ]
800
- ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2 ]] ]
782
+ ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY ]] ]
783
+ ; CHECK-NEXT: [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 0, i64 1>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY ]] ]
801
784
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
802
785
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], <2 x i64> [[VEC_IND]]
803
786
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
@@ -808,25 +791,8 @@ define void @deref_assumption_in_header_variable_trip_count(ptr noalias %a, ptr
808
791
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
809
792
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP7]], align 4
810
793
; CHECK-NEXT: [[TMP9:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD]], zeroinitializer
811
- ; CHECK-NEXT: [[TMP10:%.*]] = xor <2 x i1> [[TMP9]], splat (i1 true)
812
- ; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP10]], i32 0
813
- ; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
814
- ; CHECK: [[PRED_LOAD_IF]]:
815
- ; CHECK-NEXT: [[TMP21:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 0
816
- ; CHECK-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
817
- ; CHECK-NEXT: [[TMP11:%.*]] = insertelement <2 x i32> poison, i32 [[TMP22]], i32 0
818
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
819
- ; CHECK: [[PRED_LOAD_CONTINUE]]:
820
- ; CHECK-NEXT: [[TMP12:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP11]], %[[PRED_LOAD_IF]] ]
821
- ; CHECK-NEXT: [[TMP13:%.*]] = extractelement <2 x i1> [[TMP10]], i32 1
822
- ; CHECK-NEXT: br i1 [[TMP13]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
823
- ; CHECK: [[PRED_LOAD_IF1]]:
824
- ; CHECK-NEXT: [[TMP26:%.*]] = extractelement <2 x ptr> [[TMP1]], i32 1
825
- ; CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[TMP26]], align 4
826
- ; CHECK-NEXT: [[TMP16:%.*]] = insertelement <2 x i32> [[TMP12]], i32 [[TMP27]], i32 1
827
- ; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
828
- ; CHECK: [[PRED_LOAD_CONTINUE2]]:
829
- ; CHECK-NEXT: [[TMP17:%.*]] = phi <2 x i32> [ [[TMP12]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP16]], %[[PRED_LOAD_IF1]] ]
794
+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i32, ptr [[TMP4]], i32 0
795
+ ; CHECK-NEXT: [[TMP17:%.*]] = load <2 x i32>, ptr [[TMP8]], align 4
830
796
; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP9]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[TMP17]]
831
797
; CHECK-NEXT: [[TMP30:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
832
798
; CHECK-NEXT: [[TMP31:%.*]] = getelementptr inbounds i32, ptr [[TMP30]], i32 0
0 commit comments