@@ -16,128 +16,106 @@ define void @test_blend_feeding_replicated_store_1(i64 %N, ptr noalias %src, ptr
1616; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i64 [[N_MOD_VF]], 0
1717; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i64 16, i64 [[N_MOD_VF]]
1818; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[TMP43]], [[TMP2]]
19- ; CHECK-NEXT: [[BROADCAST_SPLATINSERT:%.*]] = insertelement <16 x ptr> poison, ptr [[DST]], i64 0
20- ; CHECK-NEXT: [[BROADCAST_SPLAT:%.*]] = shufflevector <16 x ptr> [[BROADCAST_SPLATINSERT]], <16 x ptr> poison, <16 x i32> zeroinitializer
2119; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
2220; CHECK: [[VECTOR_BODY]]:
2321; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_STORE_CONTINUE30:.*]] ]
2422; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds i32, ptr [[SRC]], i64 [[INDEX]]
2523; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <16 x i32>, ptr [[TMP4]], align 4
26- ; CHECK-NEXT: [[TMP6:%.*]] = icmp slt <16 x i32> [[WIDE_LOAD]], zeroinitializer
27- ; CHECK-NEXT: [[TMP7:%.*]] = select <16 x i1> [[TMP6]], <16 x i1> zeroinitializer, <16 x i1> zeroinitializer
28- ; CHECK-NEXT: [[TMP8:%.*]] = xor <16 x i1> [[TMP6]], splat (i1 true)
29- ; CHECK-NEXT: [[TMP9:%.*]] = or <16 x i1> [[TMP7]], [[TMP8]]
30- ; CHECK-NEXT: [[PREDPHI:%.*]] = select <16 x i1> [[TMP6]], <16 x ptr> [[BROADCAST_SPLAT]], <16 x ptr> zeroinitializer
31- ; CHECK-NEXT: [[TMP10:%.*]] = extractelement <16 x i1> [[TMP9]], i32 0
32- ; CHECK-NEXT: br i1 [[TMP10]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]
24+ ; CHECK-NEXT: [[TMP5:%.*]] = icmp sge <16 x i32> [[WIDE_LOAD]], zeroinitializer
25+ ; CHECK-NEXT: [[TMP21:%.*]] = extractelement <16 x i1> [[TMP5]], i32 0
26+ ; CHECK-NEXT: br i1 [[TMP21]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]
3327; CHECK: [[PRED_STORE_IF]]:
34- ; CHECK-NEXT: [[TMP11:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 0
35- ; CHECK-NEXT: store i8 0, ptr [[TMP11]], align 1
28+ ; CHECK-NEXT: store i8 0, ptr null, align 1
3629; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE]]
3730; CHECK: [[PRED_STORE_CONTINUE]]:
38- ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 1
39- ; CHECK-NEXT: br i1 [[TMP12 ]], label %[[PRED_STORE_IF1:.*]], label %[[PRED_STORE_CONTINUE2:.*]]
31+ ; CHECK-NEXT: [[TMP6 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 1
32+ ; CHECK-NEXT: br i1 [[TMP6 ]], label %[[PRED_STORE_IF1:.*]], label %[[PRED_STORE_CONTINUE2:.*]]
4033; CHECK: [[PRED_STORE_IF1]]:
41- ; CHECK-NEXT: [[TMP13:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 1
42- ; CHECK-NEXT: store i8 0, ptr [[TMP13]], align 1
34+ ; CHECK-NEXT: store i8 0, ptr null, align 1
4335; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE2]]
4436; CHECK: [[PRED_STORE_CONTINUE2]]:
45- ; CHECK-NEXT: [[TMP14 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 2
46- ; CHECK-NEXT: br i1 [[TMP14 ]], label %[[PRED_STORE_IF3:.*]], label %[[PRED_STORE_CONTINUE4:.*]]
37+ ; CHECK-NEXT: [[TMP7 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 2
38+ ; CHECK-NEXT: br i1 [[TMP7 ]], label %[[PRED_STORE_IF3:.*]], label %[[PRED_STORE_CONTINUE4:.*]]
4739; CHECK: [[PRED_STORE_IF3]]:
48- ; CHECK-NEXT: [[TMP15:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 2
49- ; CHECK-NEXT: store i8 0, ptr [[TMP15]], align 1
40+ ; CHECK-NEXT: store i8 0, ptr null, align 1
5041; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE4]]
5142; CHECK: [[PRED_STORE_CONTINUE4]]:
52- ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 3
53- ; CHECK-NEXT: br i1 [[TMP16 ]], label %[[PRED_STORE_IF5:.*]], label %[[PRED_STORE_CONTINUE6:.*]]
43+ ; CHECK-NEXT: [[TMP8 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 3
44+ ; CHECK-NEXT: br i1 [[TMP8 ]], label %[[PRED_STORE_IF5:.*]], label %[[PRED_STORE_CONTINUE6:.*]]
5445; CHECK: [[PRED_STORE_IF5]]:
55- ; CHECK-NEXT: [[TMP17:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 3
56- ; CHECK-NEXT: store i8 0, ptr [[TMP17]], align 1
46+ ; CHECK-NEXT: store i8 0, ptr null, align 1
5747; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE6]]
5848; CHECK: [[PRED_STORE_CONTINUE6]]:
59- ; CHECK-NEXT: [[TMP18 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 4
60- ; CHECK-NEXT: br i1 [[TMP18 ]], label %[[PRED_STORE_IF7:.*]], label %[[PRED_STORE_CONTINUE8:.*]]
49+ ; CHECK-NEXT: [[TMP9 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 4
50+ ; CHECK-NEXT: br i1 [[TMP9 ]], label %[[PRED_STORE_IF7:.*]], label %[[PRED_STORE_CONTINUE8:.*]]
6151; CHECK: [[PRED_STORE_IF7]]:
62- ; CHECK-NEXT: [[TMP19:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 4
63- ; CHECK-NEXT: store i8 0, ptr [[TMP19]], align 1
52+ ; CHECK-NEXT: store i8 0, ptr null, align 1
6453; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE8]]
6554; CHECK: [[PRED_STORE_CONTINUE8]]:
66- ; CHECK-NEXT: [[TMP20 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 5
67- ; CHECK-NEXT: br i1 [[TMP20 ]], label %[[PRED_STORE_IF9:.*]], label %[[PRED_STORE_CONTINUE10:.*]]
55+ ; CHECK-NEXT: [[TMP10 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 5
56+ ; CHECK-NEXT: br i1 [[TMP10 ]], label %[[PRED_STORE_IF9:.*]], label %[[PRED_STORE_CONTINUE10:.*]]
6857; CHECK: [[PRED_STORE_IF9]]:
69- ; CHECK-NEXT: [[TMP21:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 5
70- ; CHECK-NEXT: store i8 0, ptr [[TMP21]], align 1
58+ ; CHECK-NEXT: store i8 0, ptr null, align 1
7159; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE10]]
7260; CHECK: [[PRED_STORE_CONTINUE10]]:
73- ; CHECK-NEXT: [[TMP22 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 6
74- ; CHECK-NEXT: br i1 [[TMP22 ]], label %[[PRED_STORE_IF11:.*]], label %[[PRED_STORE_CONTINUE12:.*]]
61+ ; CHECK-NEXT: [[TMP11 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 6
62+ ; CHECK-NEXT: br i1 [[TMP11 ]], label %[[PRED_STORE_IF11:.*]], label %[[PRED_STORE_CONTINUE12:.*]]
7563; CHECK: [[PRED_STORE_IF11]]:
76- ; CHECK-NEXT: [[TMP23:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 6
77- ; CHECK-NEXT: store i8 0, ptr [[TMP23]], align 1
64+ ; CHECK-NEXT: store i8 0, ptr null, align 1
7865; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE12]]
7966; CHECK: [[PRED_STORE_CONTINUE12]]:
80- ; CHECK-NEXT: [[TMP24 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 7
81- ; CHECK-NEXT: br i1 [[TMP24 ]], label %[[PRED_STORE_IF13:.*]], label %[[PRED_STORE_CONTINUE14:.*]]
67+ ; CHECK-NEXT: [[TMP12 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 7
68+ ; CHECK-NEXT: br i1 [[TMP12 ]], label %[[PRED_STORE_IF13:.*]], label %[[PRED_STORE_CONTINUE14:.*]]
8269; CHECK: [[PRED_STORE_IF13]]:
83- ; CHECK-NEXT: [[TMP25:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 7
84- ; CHECK-NEXT: store i8 0, ptr [[TMP25]], align 1
70+ ; CHECK-NEXT: store i8 0, ptr null, align 1
8571; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE14]]
8672; CHECK: [[PRED_STORE_CONTINUE14]]:
87- ; CHECK-NEXT: [[TMP26 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 8
88- ; CHECK-NEXT: br i1 [[TMP26 ]], label %[[PRED_STORE_IF15:.*]], label %[[PRED_STORE_CONTINUE16:.*]]
73+ ; CHECK-NEXT: [[TMP13 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 8
74+ ; CHECK-NEXT: br i1 [[TMP13 ]], label %[[PRED_STORE_IF15:.*]], label %[[PRED_STORE_CONTINUE16:.*]]
8975; CHECK: [[PRED_STORE_IF15]]:
90- ; CHECK-NEXT: [[TMP27:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 8
91- ; CHECK-NEXT: store i8 0, ptr [[TMP27]], align 1
76+ ; CHECK-NEXT: store i8 0, ptr null, align 1
9277; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE16]]
9378; CHECK: [[PRED_STORE_CONTINUE16]]:
94- ; CHECK-NEXT: [[TMP28 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 9
95- ; CHECK-NEXT: br i1 [[TMP28 ]], label %[[PRED_STORE_IF17:.*]], label %[[PRED_STORE_CONTINUE18:.*]]
79+ ; CHECK-NEXT: [[TMP14 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 9
80+ ; CHECK-NEXT: br i1 [[TMP14 ]], label %[[PRED_STORE_IF17:.*]], label %[[PRED_STORE_CONTINUE18:.*]]
9681; CHECK: [[PRED_STORE_IF17]]:
97- ; CHECK-NEXT: [[TMP29:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 9
98- ; CHECK-NEXT: store i8 0, ptr [[TMP29]], align 1
82+ ; CHECK-NEXT: store i8 0, ptr null, align 1
9983; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE18]]
10084; CHECK: [[PRED_STORE_CONTINUE18]]:
101- ; CHECK-NEXT: [[TMP30 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 10
102- ; CHECK-NEXT: br i1 [[TMP30 ]], label %[[PRED_STORE_IF19:.*]], label %[[PRED_STORE_CONTINUE20:.*]]
85+ ; CHECK-NEXT: [[TMP15 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 10
86+ ; CHECK-NEXT: br i1 [[TMP15 ]], label %[[PRED_STORE_IF19:.*]], label %[[PRED_STORE_CONTINUE20:.*]]
10387; CHECK: [[PRED_STORE_IF19]]:
104- ; CHECK-NEXT: [[TMP31:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 10
105- ; CHECK-NEXT: store i8 0, ptr [[TMP31]], align 1
88+ ; CHECK-NEXT: store i8 0, ptr null, align 1
10689; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE20]]
10790; CHECK: [[PRED_STORE_CONTINUE20]]:
108- ; CHECK-NEXT: [[TMP32 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 11
109- ; CHECK-NEXT: br i1 [[TMP32 ]], label %[[PRED_STORE_IF21:.*]], label %[[PRED_STORE_CONTINUE22:.*]]
91+ ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 11
92+ ; CHECK-NEXT: br i1 [[TMP16 ]], label %[[PRED_STORE_IF21:.*]], label %[[PRED_STORE_CONTINUE22:.*]]
11093; CHECK: [[PRED_STORE_IF21]]:
111- ; CHECK-NEXT: [[TMP33:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 11
112- ; CHECK-NEXT: store i8 0, ptr [[TMP33]], align 1
94+ ; CHECK-NEXT: store i8 0, ptr null, align 1
11395; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE22]]
11496; CHECK: [[PRED_STORE_CONTINUE22]]:
115- ; CHECK-NEXT: [[TMP34 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 12
116- ; CHECK-NEXT: br i1 [[TMP34 ]], label %[[PRED_STORE_IF23:.*]], label %[[PRED_STORE_CONTINUE24:.*]]
97+ ; CHECK-NEXT: [[TMP17 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 12
98+ ; CHECK-NEXT: br i1 [[TMP17 ]], label %[[PRED_STORE_IF23:.*]], label %[[PRED_STORE_CONTINUE24:.*]]
11799; CHECK: [[PRED_STORE_IF23]]:
118- ; CHECK-NEXT: [[TMP35:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 12
119- ; CHECK-NEXT: store i8 0, ptr [[TMP35]], align 1
100+ ; CHECK-NEXT: store i8 0, ptr null, align 1
120101; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE24]]
121102; CHECK: [[PRED_STORE_CONTINUE24]]:
122- ; CHECK-NEXT: [[TMP36 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 13
123- ; CHECK-NEXT: br i1 [[TMP36 ]], label %[[PRED_STORE_IF25:.*]], label %[[PRED_STORE_CONTINUE26:.*]]
103+ ; CHECK-NEXT: [[TMP18 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 13
104+ ; CHECK-NEXT: br i1 [[TMP18 ]], label %[[PRED_STORE_IF25:.*]], label %[[PRED_STORE_CONTINUE26:.*]]
124105; CHECK: [[PRED_STORE_IF25]]:
125- ; CHECK-NEXT: [[TMP37:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 13
126- ; CHECK-NEXT: store i8 0, ptr [[TMP37]], align 1
106+ ; CHECK-NEXT: store i8 0, ptr null, align 1
127107; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE26]]
128108; CHECK: [[PRED_STORE_CONTINUE26]]:
129- ; CHECK-NEXT: [[TMP38 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 14
130- ; CHECK-NEXT: br i1 [[TMP38 ]], label %[[PRED_STORE_IF27:.*]], label %[[PRED_STORE_CONTINUE28:.*]]
109+ ; CHECK-NEXT: [[TMP19 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 14
110+ ; CHECK-NEXT: br i1 [[TMP19 ]], label %[[PRED_STORE_IF27:.*]], label %[[PRED_STORE_CONTINUE28:.*]]
131111; CHECK: [[PRED_STORE_IF27]]:
132- ; CHECK-NEXT: [[TMP39:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 14
133- ; CHECK-NEXT: store i8 0, ptr [[TMP39]], align 1
112+ ; CHECK-NEXT: store i8 0, ptr null, align 1
134113; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE28]]
135114; CHECK: [[PRED_STORE_CONTINUE28]]:
136- ; CHECK-NEXT: [[TMP40 :%.*]] = extractelement <16 x i1> [[TMP9 ]], i32 15
137- ; CHECK-NEXT: br i1 [[TMP40 ]], label %[[PRED_STORE_IF29:.*]], label %[[PRED_STORE_CONTINUE30]]
115+ ; CHECK-NEXT: [[TMP20 :%.*]] = extractelement <16 x i1> [[TMP5 ]], i32 15
116+ ; CHECK-NEXT: br i1 [[TMP20 ]], label %[[PRED_STORE_IF29:.*]], label %[[PRED_STORE_CONTINUE30]]
138117; CHECK: [[PRED_STORE_IF29]]:
139- ; CHECK-NEXT: [[TMP41:%.*]] = extractelement <16 x ptr> [[PREDPHI]], i32 15
140- ; CHECK-NEXT: store i8 0, ptr [[TMP41]], align 1
118+ ; CHECK-NEXT: store i8 0, ptr null, align 1
141119; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE30]]
142120; CHECK: [[PRED_STORE_CONTINUE30]]:
143121; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 16
0 commit comments