@@ -323,36 +323,30 @@ outer.exit:
323
323
define void @use_diff_checks_when_retrying_with_rt_checks (i64 %off , ptr %dst , ptr %src ) {
324
324
; CHECK-LABEL: @use_diff_checks_when_retrying_with_rt_checks(
325
325
; CHECK-NEXT: entry:
326
+ ; CHECK-NEXT: [[SRC2:%.*]] = ptrtoint ptr %src to i64
327
+ ; CHECK-NEXT: [[DST1:%.*]] = ptrtoint ptr %dst to i64
326
328
; CHECK-NEXT: br i1 false, label %scalar.ph, label %vector.memcheck
327
329
; CHECK: vector.memcheck:
328
- ; CHECK-NEXT: [[TMP0:%.*]] = shl i64 %off, 3
329
- ; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr %dst, i64 [[TMP0]]
330
- ; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], 8000
331
- ; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr %dst, i64 [[TMP1]]
332
- ; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr %dst, i64 8000
333
- ; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i8, ptr %src, i64 8000
334
- ; CHECK-NEXT: [[SCEVGEP4:%.*]] = getelementptr i8, ptr %src, i64 8
335
- ; CHECK-NEXT: [[SCEVGEP5:%.*]] = getelementptr i8, ptr %src, i64 8008
336
- ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[SCEVGEP]], [[SCEVGEP2]]
337
- ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr %dst, [[SCEVGEP1]]
338
- ; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
339
- ; CHECK-NEXT: [[BOUND06:%.*]] = icmp ult ptr [[SCEVGEP]], [[SCEVGEP3]]
340
- ; CHECK-NEXT: [[BOUND17:%.*]] = icmp ult ptr %src, [[SCEVGEP1]]
341
- ; CHECK-NEXT: [[FOUND_CONFLICT8:%.*]] = and i1 [[BOUND06]], [[BOUND17]]
342
- ; CHECK-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[FOUND_CONFLICT]], [[FOUND_CONFLICT8]]
343
- ; CHECK-NEXT: [[BOUND09:%.*]] = icmp ult ptr [[SCEVGEP]], [[SCEVGEP5]]
344
- ; CHECK-NEXT: [[BOUND110:%.*]] = icmp ult ptr [[SCEVGEP4]], [[SCEVGEP1]]
345
- ; CHECK-NEXT: [[FOUND_CONFLICT11:%.*]] = and i1 [[BOUND09]], [[BOUND110]]
346
- ; CHECK-NEXT: [[CONFLICT_RDX12:%.*]] = or i1 [[CONFLICT_RDX]], [[FOUND_CONFLICT11]]
347
- ; CHECK-NEXT: [[BOUND013:%.*]] = icmp ult ptr %dst, [[SCEVGEP3]]
348
- ; CHECK-NEXT: [[BOUND114:%.*]] = icmp ult ptr %src, [[SCEVGEP2]]
349
- ; CHECK-NEXT: [[FOUND_CONFLICT15:%.*]] = and i1 [[BOUND013]], [[BOUND114]]
350
- ; CHECK-NEXT: [[CONFLICT_RDX16:%.*]] = or i1 [[CONFLICT_RDX12]], [[FOUND_CONFLICT15]]
351
- ; CHECK-NEXT: [[BOUND017:%.*]] = icmp ult ptr %dst, [[SCEVGEP5]]
352
- ; CHECK-NEXT: [[BOUND118:%.*]] = icmp ult ptr [[SCEVGEP4]], [[SCEVGEP2]]
353
- ; CHECK-NEXT: [[FOUND_CONFLICT19:%.*]] = and i1 [[BOUND017]], [[BOUND118]]
354
- ; CHECK-NEXT: [[CONFLICT_RDX20:%.*]] = or i1 [[CONFLICT_RDX16]], [[FOUND_CONFLICT19]]
355
- ; CHECK-NEXT: br i1 [[CONFLICT_RDX20]], label %scalar.ph, label %vector.ph
330
+ ; CHECK-NEXT: [[TMP0:%.*]] = mul i64 %off, -8
331
+ ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 32
332
+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i64 %off, 3
333
+ ; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[DST1]], [[TMP1]]
334
+ ; CHECK-NEXT: [[TMP3:%.*]] = sub i64 [[TMP2]], [[SRC2]]
335
+ ; CHECK-NEXT: [[DIFF_CHECK3:%.*]] = icmp ult i64 [[TMP3]], 32
336
+ ; CHECK-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[DIFF_CHECK]], [[DIFF_CHECK3]]
337
+ ; CHECK-NEXT: [[TMP4:%.*]] = add i64 [[SRC2]], 8
338
+ ; CHECK-NEXT: [[TMP5:%.*]] = sub i64 [[TMP4]], [[DST1]]
339
+ ; CHECK-NEXT: [[TMP6:%.*]] = sub i64 [[TMP5]], [[TMP1]]
340
+ ; CHECK-NEXT: [[DIFF_CHECK4:%.*]] = icmp ult i64 [[TMP6]], 32
341
+ ; CHECK-NEXT: [[CONFLICT_RDX5:%.*]] = or i1 [[CONFLICT_RDX]], [[DIFF_CHECK4]]
342
+ ; CHECK-NEXT: [[TMP7:%.*]] = sub i64 [[DST1]], [[SRC2]]
343
+ ; CHECK-NEXT: [[DIFF_CHECK6:%.*]] = icmp ult i64 [[TMP7]], 32
344
+ ; CHECK-NEXT: [[CONFLICT_RDX7:%.*]] = or i1 [[CONFLICT_RDX5]], [[DIFF_CHECK6]]
345
+ ; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[DST1]], -8
346
+ ; CHECK-NEXT: [[TMP9:%.*]] = sub i64 [[TMP8]], [[SRC2]]
347
+ ; CHECK-NEXT: [[DIFF_CHECK8:%.*]] = icmp ult i64 [[TMP9]], 32
348
+ ; CHECK-NEXT: [[CONFLICT_RDX9:%.*]] = or i1 [[CONFLICT_RDX7]], [[DIFF_CHECK8]]
349
+ ; CHECK-NEXT: br i1 [[CONFLICT_RDX9]], label %scalar.ph, label %vector.ph
356
350
; CHECK: vector.ph:
357
351
; CHECK-NEXT: br label %vector.body
358
352
;
0 commit comments