@@ -2915,15 +2915,9 @@ define ptr @simple_csa_ptr_select(i32 %N, ptr %data, i64 %a) {
2915
2915
; EVL: [[SCALAR_PH]]:
2916
2916
; EVL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[LOOP_PREHEADER]] ]
2917
2917
; EVL-NEXT: br label %[[LOOP:.*]]
2918
- ; EVL: [[EXIT_LOOPEXIT]]:
2919
- ; EVL-NEXT: [[SPEC_SELECT_LCSSA:%.*]] = phi ptr [ [[SPEC_SELECT:%.*]], %[[LOOP]] ], [ [[TMP25]], %[[MIDDLE_BLOCK]] ]
2920
- ; EVL-NEXT: br label %[[EXIT]]
2921
- ; EVL: [[EXIT]]:
2922
- ; EVL-NEXT: [[T_0_LCSSA:%.*]] = phi ptr [ null, %[[ENTRY]] ], [ [[SPEC_SELECT_LCSSA]], %[[EXIT_LOOPEXIT]] ]
2923
- ; EVL-NEXT: ret ptr [[T_0_LCSSA]]
2924
2918
; EVL: [[LOOP]]:
2925
2919
; EVL-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
2926
- ; EVL-NEXT: [[T_010:%.*]] = phi ptr [ null, %[[SCALAR_PH]] ], [ [[SPEC_SELECT]], %[[LOOP]] ]
2920
+ ; EVL-NEXT: [[T_010:%.*]] = phi ptr [ null, %[[SCALAR_PH]] ], [ [[SPEC_SELECT:%.* ]], %[[LOOP]] ]
2927
2921
; EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[DATA]], i64 [[IV]]
2928
2922
; EVL-NEXT: [[TMP16:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
2929
2923
; EVL-NEXT: [[TMP17:%.*]] = load i32, ptr [[TMP16]], align 4
@@ -2933,6 +2927,12 @@ define ptr @simple_csa_ptr_select(i32 %N, ptr %data, i64 %a) {
2933
2927
; EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
2934
2928
; EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[WIDE_TRIP_COUNT]]
2935
2929
; EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT_LOOPEXIT]], label %[[LOOP]], !llvm.loop [[LOOP11:![0-9]+]]
2930
+ ; EVL: [[EXIT_LOOPEXIT]]:
2931
+ ; EVL-NEXT: [[SPEC_SELECT_LCSSA:%.*]] = phi ptr [ [[SPEC_SELECT]], %[[LOOP]] ], [ [[TMP25]], %[[MIDDLE_BLOCK]] ]
2932
+ ; EVL-NEXT: br label %[[EXIT]]
2933
+ ; EVL: [[EXIT]]:
2934
+ ; EVL-NEXT: [[T_0_LCSSA:%.*]] = phi ptr [ null, %[[ENTRY]] ], [ [[SPEC_SELECT_LCSSA]], %[[EXIT_LOOPEXIT]] ]
2935
+ ; EVL-NEXT: ret ptr [[T_0_LCSSA]]
2936
2936
;
2937
2937
; NO-EVL-LABEL: define ptr @simple_csa_ptr_select(
2938
2938
; NO-EVL-SAME: i32 [[N:%.*]], ptr [[DATA:%.*]], i64 [[A:%.*]]) #[[ATTR0]] {
@@ -2944,7 +2944,7 @@ define ptr @simple_csa_ptr_select(i32 %N, ptr %data, i64 %a) {
2944
2944
; NO-EVL-NEXT: br label %[[LOOP:.*]]
2945
2945
; NO-EVL: [[LOOP]]:
2946
2946
; NO-EVL-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[LOOP_PREHEADER]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
2947
- ; NO-EVL-NEXT: [[T_010:%.*]] = phi ptr [ null, %[[LOOP_PREHEADER]] ], [ [[SPEC_SELECT]], %[[LOOP]] ]
2947
+ ; NO-EVL-NEXT: [[T_010:%.*]] = phi ptr [ null, %[[LOOP_PREHEADER]] ], [ [[SPEC_SELECT:%.* ]], %[[LOOP]] ]
2948
2948
; NO-EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[DATA]], i64 [[IV]]
2949
2949
; NO-EVL-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
2950
2950
; NO-EVL-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4
@@ -2953,9 +2953,9 @@ define ptr @simple_csa_ptr_select(i32 %N, ptr %data, i64 %a) {
2953
2953
; NO-EVL-NEXT: [[SPEC_SELECT]] = select i1 [[CMP1]], ptr [[TMP0]], ptr [[T_010]]
2954
2954
; NO-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
2955
2955
; NO-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[WIDE_TRIP_COUNT]]
2956
- ; NO-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT_LOOPEXIT]], label %[[LOOP]]
2957
- ; NO-EVL: [[EXIT_LOOPEXIT:.* ]]:
2958
- ; NO-EVL-NEXT: [[SPEC_SELECT_LCSSA:%.*]] = phi ptr [ [[SPEC_SELECT:%.* ]], %[[LOOP]] ]
2956
+ ; NO-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT_LOOPEXIT:.* ]], label %[[LOOP]]
2957
+ ; NO-EVL: [[EXIT_LOOPEXIT]]:
2958
+ ; NO-EVL-NEXT: [[SPEC_SELECT_LCSSA:%.*]] = phi ptr [ [[SPEC_SELECT]], %[[LOOP]] ]
2959
2959
; NO-EVL-NEXT: br label %[[EXIT]]
2960
2960
; NO-EVL: [[EXIT]]:
2961
2961
; NO-EVL-NEXT: [[T_0_LCSSA:%.*]] = phi ptr [ null, %[[ENTRY]] ], [ [[SPEC_SELECT_LCSSA]], %[[EXIT_LOOPEXIT]] ]
0 commit comments