@@ -114,23 +114,22 @@ define void @runtime_checks_ptr_inductions(ptr %dst.1, ptr %dst.2, i1 %c) {
114
114
; CHECK-NEXT: br i1 [[EC_1]], label %[[LOOP_2_HEADER_PREHEADER:.*]], label %[[LOOP_1]]
115
115
; CHECK: [[LOOP_2_HEADER_PREHEADER]]:
116
116
; 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]] ]
118
118
; CHECK-NEXT: [[SEL_DST_LCSSA:%.*]] = phi ptr [ [[SEL_DST]], %[[LOOP_1]] ]
119
119
; CHECK-NEXT: [[SEL_DST_LCSSA12:%.*]] = ptrtoint ptr [[SEL_DST_LCSSA1]] to i64
120
120
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
121
121
; 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]]
124
122
; 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
126
125
; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
127
126
; 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
129
128
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 1022
130
129
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
131
130
; CHECK: [[VECTOR_BODY]]:
132
131
; 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]]
134
133
; CHECK-NEXT: [[NEXT_GEP4:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 [[INDEX]]
135
134
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[NEXT_GEP4]], i32 0
136
135
; 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) {
143
142
; CHECK-NEXT: br label %[[SCALAR_PH]]
144
143
; CHECK: [[SCALAR_PH]]:
145
144
; 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]] ]
148
147
; CHECK-NEXT: br label %[[LOOP_2_HEADER:.*]]
149
148
; CHECK: [[LOOP_2_HEADER]]:
150
149
; 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]] ]
153
152
; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i32 [[IV]], 1024
154
153
; CHECK-NEXT: br i1 [[EC_2]], label %[[EXIT:.*]], label %[[LOOP_2_LATCH]]
155
154
; CHECK: [[LOOP_2_LATCH]]:
@@ -305,22 +304,22 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
305
304
; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i64 [[IV_NEXT_1]], 32
306
305
; CHECK-NEXT: br i1 [[EC_2]], label %[[LOOP_3_PREHEADER:.*]], label %[[LOOP_2]]
307
306
; 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]] ]
309
308
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
310
309
; CHECK: [[VECTOR_MEMCHECK]]:
311
310
; CHECK-NEXT: [[TMP0:%.*]] = sub i64 0, [[SRC2]]
312
- ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[PTR_IV_2_NEXT_LCSSA]], i64 [[TMP0]]
313
311
; 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
315
314
; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
316
315
; 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
318
317
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
319
318
; CHECK: [[VECTOR_BODY]]:
320
319
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
321
320
; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 1, [[INDEX]]
322
321
; 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]]
324
323
; CHECK-NEXT: [[TMP7:%.*]] = add i64 [[OFFSET_IDX]], -1
325
324
; CHECK-NEXT: [[TMP8:%.*]] = getelementptr double, ptr [[SRC]], i64 [[TMP7]]
326
325
; CHECK-NEXT: [[TMP9:%.*]] = getelementptr i64, ptr [[TMP8]], i32 0
@@ -334,7 +333,7 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
334
333
; CHECK-NEXT: br i1 false, label %[[EXIT:.*]], label %[[SCALAR_PH]]
335
334
; CHECK: [[SCALAR_PH]]:
336
335
; 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]] ]
338
337
; CHECK-NEXT: br label %[[LOOP_3:.*]]
339
338
; CHECK: [[LOOP_3]]:
340
339
; CHECK-NEXT: [[IV_2:%.*]] = phi i64 [ [[IV_NEXT_2:%.*]], %[[LOOP_3]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
0 commit comments