@@ -763,54 +763,86 @@ define void @latch_branch_cost(ptr %dst) {
763
763
; PRED-NEXT: br label [[VECTOR_BODY:%.*]]
764
764
; PRED: vector.body:
765
765
; PRED-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE6:%.*]] ]
766
- ; PRED-NEXT: [[VEC_IND:%.*]] = phi <4 x i64> [ <i64 0, i64 1, i64 2, i64 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE6]] ]
767
- ; PRED-NEXT: [[TMP0:%.*]] = icmp ule <4 x i64> [[VEC_IND]], <i64 99, i64 99, i64 99, i64 99>
768
- ; PRED-NEXT: [[TMP1:%.*]] = extractelement <4 x i1> [[TMP0]], i32 0
766
+ ; PRED-NEXT: [[VEC_IND:%.*]] = phi <8 x i64> [ <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7 >, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE6]] ]
767
+ ; PRED-NEXT: [[TMP0:%.*]] = icmp ule <8 x i64> [[VEC_IND]], <i64 99, i64 99, i64 99, i64 99, i64 99, i64 99, i64 99, i64 99>
768
+ ; PRED-NEXT: [[TMP1:%.*]] = extractelement <8 x i1> [[TMP0]], i32 0
769
769
; PRED-NEXT: br i1 [[TMP1]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
770
770
; PRED: pred.store.if:
771
771
; PRED-NEXT: [[TMP2:%.*]] = add i64 [[INDEX]], 0
772
772
; PRED-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP2]]
773
773
; PRED-NEXT: store i8 0, ptr [[TMP3]], align 1
774
774
; PRED-NEXT: br label [[PRED_STORE_CONTINUE]]
775
775
; PRED: pred.store.continue:
776
- ; PRED-NEXT: [[TMP4:%.*]] = extractelement <4 x i1> [[TMP0]], i32 1
776
+ ; PRED-NEXT: [[TMP4:%.*]] = extractelement <8 x i1> [[TMP0]], i32 1
777
777
; PRED-NEXT: br i1 [[TMP4]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]]
778
778
; PRED: pred.store.if1:
779
779
; PRED-NEXT: [[TMP5:%.*]] = add i64 [[INDEX]], 1
780
780
; PRED-NEXT: [[TMP6:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP5]]
781
781
; PRED-NEXT: store i8 0, ptr [[TMP6]], align 1
782
782
; PRED-NEXT: br label [[PRED_STORE_CONTINUE2]]
783
783
; PRED: pred.store.continue2:
784
- ; PRED-NEXT: [[TMP7:%.*]] = extractelement <4 x i1> [[TMP0]], i32 2
784
+ ; PRED-NEXT: [[TMP7:%.*]] = extractelement <8 x i1> [[TMP0]], i32 2
785
785
; PRED-NEXT: br i1 [[TMP7]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
786
786
; PRED: pred.store.if3:
787
787
; PRED-NEXT: [[TMP8:%.*]] = add i64 [[INDEX]], 2
788
788
; PRED-NEXT: [[TMP9:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP8]]
789
789
; PRED-NEXT: store i8 0, ptr [[TMP9]], align 1
790
790
; PRED-NEXT: br label [[PRED_STORE_CONTINUE4]]
791
791
; PRED: pred.store.continue4:
792
- ; PRED-NEXT: [[TMP10:%.*]] = extractelement <4 x i1> [[TMP0]], i32 3
793
- ; PRED-NEXT: br i1 [[TMP10]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6 ]]
792
+ ; PRED-NEXT: [[TMP10:%.*]] = extractelement <8 x i1> [[TMP0]], i32 3
793
+ ; PRED-NEXT: br i1 [[TMP10]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE7:%.* ]]
794
794
; PRED: pred.store.if5:
795
795
; PRED-NEXT: [[TMP11:%.*]] = add i64 [[INDEX]], 3
796
796
; PRED-NEXT: [[TMP12:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP11]]
797
797
; PRED-NEXT: store i8 0, ptr [[TMP12]], align 1
798
- ; PRED-NEXT: br label [[PRED_STORE_CONTINUE6 ]]
798
+ ; PRED-NEXT: br label [[PRED_STORE_CONTINUE7 ]]
799
799
; PRED: pred.store.continue6:
800
- ; PRED-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 4
801
- ; PRED-NEXT: [[VEC_IND_NEXT]] = add <4 x i64> [[VEC_IND]], <i64 4, i64 4, i64 4, i64 4>
802
- ; PRED-NEXT: [[TMP13:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
803
- ; PRED-NEXT: br i1 [[TMP13]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
800
+ ; PRED-NEXT: [[TMP13:%.*]] = extractelement <8 x i1> [[TMP0]], i32 4
801
+ ; PRED-NEXT: br i1 [[TMP13]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.*]]
802
+ ; PRED: pred.store.if7:
803
+ ; PRED-NEXT: [[TMP14:%.*]] = add i64 [[INDEX]], 4
804
+ ; PRED-NEXT: [[TMP15:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP14]]
805
+ ; PRED-NEXT: store i8 0, ptr [[TMP15]], align 1
806
+ ; PRED-NEXT: br label [[PRED_STORE_CONTINUE8]]
807
+ ; PRED: pred.store.continue8:
808
+ ; PRED-NEXT: [[TMP16:%.*]] = extractelement <8 x i1> [[TMP0]], i32 5
809
+ ; PRED-NEXT: br i1 [[TMP16]], label [[PRED_STORE_IF9:%.*]], label [[PRED_STORE_CONTINUE10:%.*]]
810
+ ; PRED: pred.store.if9:
811
+ ; PRED-NEXT: [[TMP17:%.*]] = add i64 [[INDEX]], 5
812
+ ; PRED-NEXT: [[TMP18:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP17]]
813
+ ; PRED-NEXT: store i8 0, ptr [[TMP18]], align 1
814
+ ; PRED-NEXT: br label [[PRED_STORE_CONTINUE10]]
815
+ ; PRED: pred.store.continue10:
816
+ ; PRED-NEXT: [[TMP19:%.*]] = extractelement <8 x i1> [[TMP0]], i32 6
817
+ ; PRED-NEXT: br i1 [[TMP19]], label [[PRED_STORE_IF11:%.*]], label [[PRED_STORE_CONTINUE12:%.*]]
818
+ ; PRED: pred.store.if11:
819
+ ; PRED-NEXT: [[TMP20:%.*]] = add i64 [[INDEX]], 6
820
+ ; PRED-NEXT: [[TMP21:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP20]]
821
+ ; PRED-NEXT: store i8 0, ptr [[TMP21]], align 1
822
+ ; PRED-NEXT: br label [[PRED_STORE_CONTINUE12]]
823
+ ; PRED: pred.store.continue12:
824
+ ; PRED-NEXT: [[TMP22:%.*]] = extractelement <8 x i1> [[TMP0]], i32 7
825
+ ; PRED-NEXT: br i1 [[TMP22]], label [[PRED_STORE_IF13:%.*]], label [[PRED_STORE_CONTINUE6]]
826
+ ; PRED: pred.store.if13:
827
+ ; PRED-NEXT: [[TMP23:%.*]] = add i64 [[INDEX]], 7
828
+ ; PRED-NEXT: [[TMP24:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP23]]
829
+ ; PRED-NEXT: store i8 0, ptr [[TMP24]], align 1
830
+ ; PRED-NEXT: br label [[PRED_STORE_CONTINUE6]]
831
+ ; PRED: pred.store.continue14:
832
+ ; PRED-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 8
833
+ ; PRED-NEXT: [[VEC_IND_NEXT]] = add <8 x i64> [[VEC_IND]], <i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8>
834
+ ; PRED-NEXT: [[TMP25:%.*]] = icmp eq i64 [[INDEX_NEXT]], 104
835
+ ; PRED-NEXT: br i1 [[TMP25]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
804
836
; PRED: middle.block:
805
837
; PRED-NEXT: br i1 true, label [[FOR_END:%.*]], label [[SCALAR_PH]]
806
838
; PRED: scalar.ph:
807
- ; PRED-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 100 , [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
839
+ ; PRED-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 104 , [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
808
840
; PRED-NEXT: br label [[FOR_BODY:%.*]]
809
841
; PRED: loop:
810
- ; PRED-NEXT: [[INDVARS_IV :%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY]] ]
811
- ; PRED-NEXT: [[ARRAYIDX :%.*]] = getelementptr i8, ptr [[DST]], i64 [[INDVARS_IV ]]
812
- ; PRED-NEXT: store i8 0, ptr [[ARRAYIDX ]], align 1
813
- ; PRED-NEXT: [[INDVARS_IV_NEXT]] = add i64 [[INDVARS_IV ]], 1
842
+ ; PRED-NEXT: [[IV :%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY]] ]
843
+ ; PRED-NEXT: [[GEP :%.*]] = getelementptr i8, ptr [[DST]], i64 [[IV ]]
844
+ ; PRED-NEXT: store i8 0, ptr [[GEP ]], align 1
845
+ ; PRED-NEXT: [[INDVARS_IV_NEXT]] = add i64 [[IV ]], 1
814
846
; PRED-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], 100
815
847
; PRED-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
816
848
; PRED: exit:
0 commit comments