@@ -17,28 +17,27 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
17
17
define dso_local void @forked_ptrs_different_base_same_offset (ptr nocapture readonly %Base1 , ptr nocapture readonly %Base2 , ptr nocapture %Dest , ptr nocapture readonly %Preds ) {
18
18
; CHECK-LABEL: @forked_ptrs_different_base_same_offset(
19
19
; CHECK-NEXT: entry:
20
- ; CHECK-NEXT: [[BASE1_FR:%.*]] = freeze ptr [[BASE1:%.*]]
21
- ; CHECK-NEXT: [[BASE2_FR:%.*]] = freeze ptr [[BASE2:%.*]]
22
- ; CHECK-NEXT: [[DEST_FR:%.*]] = freeze ptr [[DEST:%.*]]
23
20
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
24
21
; CHECK: vector.memcheck:
25
- ; CHECK-NEXT: [[DEST1:%.*]] = ptrtoint ptr [[DEST_FR ]] to i64
22
+ ; CHECK-NEXT: [[DEST1:%.*]] = ptrtoint ptr [[DEST:%.* ]] to i64
26
23
; CHECK-NEXT: [[PREDS2:%.*]] = ptrtoint ptr [[PREDS:%.*]] to i64
27
- ; CHECK-NEXT: [[BASE23:%.*]] = ptrtoint ptr [[BASE2_FR ]] to i64
28
- ; CHECK-NEXT: [[BASE15:%.*]] = ptrtoint ptr [[BASE1_FR ]] to i64
24
+ ; CHECK-NEXT: [[BASE23:%.*]] = ptrtoint ptr [[BASE2:%.* ]] to i64
25
+ ; CHECK-NEXT: [[BASE15:%.*]] = ptrtoint ptr [[BASE1:%.* ]] to i64
29
26
; CHECK-NEXT: [[TMP0:%.*]] = sub i64 [[DEST1]], [[PREDS2]]
30
27
; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 16
31
28
; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[DEST1]], [[BASE23]]
32
- ; CHECK-NEXT: [[DIFF_CHECK4:%.*]] = icmp ult i64 [[TMP1]], 16
29
+ ; CHECK-NEXT: [[TMP1_FR:%.*]] = freeze i64 [[TMP1]]
30
+ ; CHECK-NEXT: [[DIFF_CHECK4:%.*]] = icmp ult i64 [[TMP1_FR]], 16
33
31
; CHECK-NEXT: [[CONFLICT_RDX:%.*]] = or i1 [[DIFF_CHECK]], [[DIFF_CHECK4]]
34
32
; CHECK-NEXT: [[TMP2:%.*]] = sub i64 [[DEST1]], [[BASE15]]
35
- ; CHECK-NEXT: [[DIFF_CHECK7:%.*]] = icmp ult i64 [[TMP2]], 16
33
+ ; CHECK-NEXT: [[TMP2_FR:%.*]] = freeze i64 [[TMP2]]
34
+ ; CHECK-NEXT: [[DIFF_CHECK7:%.*]] = icmp ult i64 [[TMP2_FR]], 16
36
35
; CHECK-NEXT: [[CONFLICT_RDX8:%.*]] = or i1 [[CONFLICT_RDX]], [[DIFF_CHECK7]]
37
36
; CHECK-NEXT: br i1 [[CONFLICT_RDX8]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
38
37
; CHECK: vector.ph:
39
- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x ptr> poison, ptr [[BASE2_FR ]], i64 0
38
+ ; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <4 x ptr> poison, ptr [[BASE2 ]], i64 0
40
39
; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <4 x ptr> [[BROADCAST_SPLATINSERT]], <4 x ptr> poison, <4 x i32> zeroinitializer
41
- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT9:%.*]] = insertelement <4 x ptr> poison, ptr [[BASE1_FR ]], i64 0
40
+ ; CHECK-NEXT: [[BROADCAST_SPLATINSERT9:%.*]] = insertelement <4 x ptr> poison, ptr [[BASE1 ]], i64 0
42
41
; CHECK-NEXT: [[BROADCAST_SPLAT10:%.*]] = shufflevector <4 x ptr> [[BROADCAST_SPLATINSERT9]], <4 x ptr> poison, <4 x i32> zeroinitializer
43
42
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
44
43
; CHECK: vector.body:
@@ -66,7 +65,7 @@ define dso_local void @forked_ptrs_different_base_same_offset(ptr nocapture read
66
65
; CHECK-NEXT: [[TMP22:%.*]] = insertelement <4 x float> [[TMP21]], float [[TMP18]], i64 1
67
66
; CHECK-NEXT: [[TMP23:%.*]] = insertelement <4 x float> [[TMP22]], float [[TMP19]], i64 2
68
67
; CHECK-NEXT: [[TMP24:%.*]] = insertelement <4 x float> [[TMP23]], float [[TMP20]], i64 3
69
- ; CHECK-NEXT: [[TMP25:%.*]] = getelementptr inbounds float, ptr [[DEST_FR ]], i64 [[INDEX]]
68
+ ; CHECK-NEXT: [[TMP25:%.*]] = getelementptr inbounds float, ptr [[DEST ]], i64 [[INDEX]]
70
69
; CHECK-NEXT: store <4 x float> [[TMP24]], ptr [[TMP25]], align 4
71
70
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
72
71
; CHECK-NEXT: [[TMP26:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
@@ -82,10 +81,10 @@ define dso_local void @forked_ptrs_different_base_same_offset(ptr nocapture read
82
81
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[PREDS]], i64 [[INDVARS_IV]]
83
82
; CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[ARRAYIDX]], align 4
84
83
; CHECK-NEXT: [[CMP1_NOT:%.*]] = icmp eq i32 [[TMP27]], 0
85
- ; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[CMP1_NOT]], ptr [[BASE2_FR ]], ptr [[BASE1_FR ]]
84
+ ; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[CMP1_NOT]], ptr [[BASE2 ]], ptr [[BASE1 ]]
86
85
; CHECK-NEXT: [[DOTSINK_IN:%.*]] = getelementptr inbounds float, ptr [[SPEC_SELECT]], i64 [[INDVARS_IV]]
87
86
; CHECK-NEXT: [[DOTSINK:%.*]] = load float, ptr [[DOTSINK_IN]], align 4
88
- ; CHECK-NEXT: [[TMP28:%.*]] = getelementptr inbounds float, ptr [[DEST_FR ]], i64 [[INDVARS_IV]]
87
+ ; CHECK-NEXT: [[TMP28:%.*]] = getelementptr inbounds float, ptr [[DEST ]], i64 [[INDVARS_IV]]
89
88
; CHECK-NEXT: store float [[DOTSINK]], ptr [[TMP28]], align 4
90
89
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
91
90
; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], 100
0 commit comments