@@ -114,23 +114,22 @@ define void @runtime_checks_ptr_inductions(ptr %dst.1, ptr %dst.2, i1 %c) {
114114; CHECK-NEXT: br i1 [[EC_1]], label %[[LOOP_2_HEADER_PREHEADER:.*]], label %[[LOOP_1]]
115115; CHECK: [[LOOP_2_HEADER_PREHEADER]]:
116116; CHECK-NEXT: [[SEL_DST_LCSSA1:%.*]] = phi ptr [ [[SEL_DST]], %[[LOOP_1]] ]
117- ; CHECK-NEXT: [[PTR_IV_1_LCSSA1 :%.*]] = phi ptr [ [[PTR_IV_1]], %[[LOOP_1]] ]
117+ ; CHECK-NEXT: [[PTR_IV_1_LCSSA :%.*]] = phi ptr [ [[PTR_IV_1]], %[[LOOP_1]] ]
118118; CHECK-NEXT: [[SEL_DST_LCSSA:%.*]] = phi ptr [ [[SEL_DST]], %[[LOOP_1]] ]
119119; CHECK-NEXT: [[SEL_DST_LCSSA12:%.*]] = ptrtoint ptr [[SEL_DST_LCSSA1]] to i64
120120; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
121121; CHECK: [[VECTOR_MEMCHECK]]:
122- ; CHECK-NEXT: [[TMP2:%.*]] = mul i64 [[SEL_DST_LCSSA12]], -1
123- ; CHECK-NEXT: [[PTR_IV_1_LCSSA:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1]], i64 [[TMP2]]
124122; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[PTR_IV_1_LCSSA]] to i64
125- ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 2
123+ ; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[SEL_DST_LCSSA12]]
124+ ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP1]], 2
126125; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
127126; CHECK: [[VECTOR_PH]]:
128- ; CHECK-NEXT: [[TMP1 :%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1 ]], i64 1022
127+ ; CHECK-NEXT: [[TMP2 :%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA ]], i64 1022
129128; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 1022
130129; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
131130; CHECK: [[VECTOR_BODY]]:
132131; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
133- ; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1 ]], i64 [[INDEX]]
132+ ; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA ]], i64 [[INDEX]]
134133; CHECK-NEXT: [[NEXT_GEP4:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 [[INDEX]]
135134; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[NEXT_GEP4]], i32 0
136135; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i8>, ptr [[TMP4]], align 1
@@ -143,13 +142,13 @@ define void @runtime_checks_ptr_inductions(ptr %dst.1, ptr %dst.2, i1 %c) {
143142; CHECK-NEXT: br label %[[SCALAR_PH]]
144143; CHECK: [[SCALAR_PH]]:
145144; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ 1023, %[[MIDDLE_BLOCK]] ], [ 1, %[[LOOP_2_HEADER_PREHEADER]] ], [ 1, %[[VECTOR_MEMCHECK]] ]
146- ; CHECK-NEXT: [[BC_RESUME_VAL5 :%.*]] = phi ptr [ [[TMP1 ]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_1_LCSSA1 ]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[PTR_IV_1_LCSSA1 ]], %[[VECTOR_MEMCHECK]] ]
147- ; CHECK-NEXT: [[BC_RESUME_VAL6 :%.*]] = phi ptr [ [[TMP3]], %[[MIDDLE_BLOCK]] ], [ [[SEL_DST_LCSSA]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[SEL_DST_LCSSA]], %[[VECTOR_MEMCHECK]] ]
145+ ; CHECK-NEXT: [[BC_RESUME_VAL4 :%.*]] = phi ptr [ [[TMP2 ]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_1_LCSSA ]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[PTR_IV_1_LCSSA ]], %[[VECTOR_MEMCHECK]] ]
146+ ; CHECK-NEXT: [[BC_RESUME_VAL5 :%.*]] = phi ptr [ [[TMP3]], %[[MIDDLE_BLOCK]] ], [ [[SEL_DST_LCSSA]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[SEL_DST_LCSSA]], %[[VECTOR_MEMCHECK]] ]
148147; CHECK-NEXT: br label %[[LOOP_2_HEADER:.*]]
149148; CHECK: [[LOOP_2_HEADER]]:
150149; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[DEC7:%.*]], %[[LOOP_2_LATCH:.*]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
151- ; CHECK-NEXT: [[PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL5 ]], %[[SCALAR_PH]] ]
152- ; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL6 ]], %[[SCALAR_PH]] ]
150+ ; CHECK-NEXT: [[PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL4 ]], %[[SCALAR_PH]] ]
151+ ; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL5 ]], %[[SCALAR_PH]] ]
153152; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i32 [[IV]], 1024
154153; CHECK-NEXT: br i1 [[EC_2]], label %[[EXIT:.*]], label %[[LOOP_2_LATCH]]
155154; CHECK: [[LOOP_2_LATCH]]:
@@ -305,22 +304,22 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
305304; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i64 [[IV_NEXT_1]], 32
306305; CHECK-NEXT: br i1 [[EC_2]], label %[[LOOP_3_PREHEADER:.*]], label %[[LOOP_2]]
307306; CHECK: [[LOOP_3_PREHEADER]]:
308- ; CHECK-NEXT: [[PTR_IV_2_NEXT_LCSSA :%.*]] = phi ptr [ [[PTR_IV_2_NEXT]], %[[LOOP_2]] ]
307+ ; CHECK-NEXT: [[TMP1 :%.*]] = phi ptr [ [[PTR_IV_2_NEXT]], %[[LOOP_2]] ]
309308; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
310309; CHECK: [[VECTOR_MEMCHECK]]:
311310; CHECK-NEXT: [[TMP0:%.*]] = sub i64 0, [[SRC2]]
312- ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[PTR_IV_2_NEXT_LCSSA]], i64 [[TMP0]]
313311; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[TMP1]] to i64
314- ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP5]], 16
312+ ; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[TMP5]], [[TMP0]]
313+ ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP2]], 16
315314; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
316315; CHECK: [[VECTOR_PH]]:
317- ; CHECK-NEXT: [[TMP6 :%.*]] = getelementptr i8, ptr [[PTR_IV_2_NEXT_LCSSA ]], i64 -16
316+ ; CHECK-NEXT: [[TMP3 :%.*]] = getelementptr i8, ptr [[TMP1 ]], i64 -16
318317; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
319318; CHECK: [[VECTOR_BODY]]:
320319; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
321320; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 1, [[INDEX]]
322321; CHECK-NEXT: [[OFFSET_IDX5:%.*]] = mul i64 [[INDEX]], 8
323- ; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[PTR_IV_2_NEXT_LCSSA ]], i64 [[OFFSET_IDX5]]
322+ ; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[TMP1 ]], i64 [[OFFSET_IDX5]]
324323; CHECK-NEXT: [[TMP7:%.*]] = add i64 [[OFFSET_IDX]], -1
325324; CHECK-NEXT: [[TMP8:%.*]] = getelementptr double, ptr [[SRC]], i64 [[TMP7]]
326325; CHECK-NEXT: [[TMP9:%.*]] = getelementptr i64, ptr [[TMP8]], i32 0
@@ -334,7 +333,7 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
334333; CHECK-NEXT: br i1 false, label %[[EXIT:.*]], label %[[SCALAR_PH]]
335334; CHECK: [[SCALAR_PH]]:
336335; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ -1, %[[MIDDLE_BLOCK]] ], [ 1, %[[LOOP_3_PREHEADER]] ], [ 1, %[[VECTOR_MEMCHECK]] ]
337- ; CHECK-NEXT: [[BC_RESUME_VAL3:%.*]] = phi ptr [ [[TMP6 ]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_2_NEXT_LCSSA ]], %[[LOOP_3_PREHEADER]] ], [ [[PTR_IV_2_NEXT_LCSSA ]], %[[VECTOR_MEMCHECK]] ]
336+ ; CHECK-NEXT: [[BC_RESUME_VAL3:%.*]] = phi ptr [ [[TMP3 ]], %[[MIDDLE_BLOCK]] ], [ [[TMP1 ]], %[[LOOP_3_PREHEADER]] ], [ [[TMP1 ]], %[[VECTOR_MEMCHECK]] ]
338337; CHECK-NEXT: br label %[[LOOP_3:.*]]
339338; CHECK: [[LOOP_3]]:
340339; CHECK-NEXT: [[IV_2:%.*]] = phi i64 [ [[IV_NEXT_2:%.*]], %[[LOOP_3]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
0 commit comments