1212;
1313
1414define <4 x double > @x86_pblendvb_v4f64_v2f64 (<4 x double > %a , <4 x double > %b , <4 x double > %c , <4 x double > %d ) {
15- ; SSE-LABEL: @x86_pblendvb_v4f64_v2f64(
16- ; SSE-NEXT: [[TMP1:%.*]] = fcmp olt <4 x double> [[C:%.*]], [[D:%.*]]
17- ; SSE-NEXT: [[DOTV:%.*]] = select <4 x i1> [[TMP1]], <4 x double> [[B:%.*]], <4 x double> [[A:%.*]]
18- ; SSE-NEXT: ret <4 x double> [[DOTV]]
19- ;
20- ; AVX2-LABEL: @x86_pblendvb_v4f64_v2f64(
21- ; AVX2-NEXT: [[TMP1:%.*]] = fcmp olt <4 x double> [[C:%.*]], [[D:%.*]]
22- ; AVX2-NEXT: [[DOTV:%.*]] = select <4 x i1> [[TMP1]], <4 x double> [[B:%.*]], <4 x double> [[A:%.*]]
23- ; AVX2-NEXT: ret <4 x double> [[DOTV]]
24- ;
25- ; AVX512-LABEL: @x86_pblendvb_v4f64_v2f64(
26- ; AVX512-NEXT: [[CMP:%.*]] = fcmp olt <4 x double> [[C:%.*]], [[D:%.*]]
27- ; AVX512-NEXT: [[DOTV:%.*]] = select <4 x i1> [[CMP]], <4 x double> [[B:%.*]], <4 x double> [[A:%.*]]
28- ; AVX512-NEXT: ret <4 x double> [[DOTV]]
15+ ; CHECK-LABEL: @x86_pblendvb_v4f64_v2f64(
16+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <4 x double> [[C:%.*]], [[D:%.*]]
17+ ; CHECK-NEXT: [[DOTV:%.*]] = select <4 x i1> [[CMP]], <4 x double> [[B:%.*]], <4 x double> [[A:%.*]]
18+ ; CHECK-NEXT: ret <4 x double> [[DOTV]]
2919;
3020 %a.bc = bitcast <4 x double > %a to <32 x i8 >
3121 %b.bc = bitcast <4 x double > %b to <32 x i8 >
@@ -46,20 +36,10 @@ define <4 x double> @x86_pblendvb_v4f64_v2f64(<4 x double> %a, <4 x double> %b,
4636}
4737
4838define <8 x float > @x86_pblendvb_v8f32_v4f32 (<8 x float > %a , <8 x float > %b , <8 x float > %c , <8 x float > %d ) {
49- ; SSE-LABEL: @x86_pblendvb_v8f32_v4f32(
50- ; SSE-NEXT: [[TMP1:%.*]] = fcmp olt <8 x float> [[C:%.*]], [[D:%.*]]
51- ; SSE-NEXT: [[DOTV:%.*]] = select <8 x i1> [[TMP1]], <8 x float> [[B:%.*]], <8 x float> [[A:%.*]]
52- ; SSE-NEXT: ret <8 x float> [[DOTV]]
53- ;
54- ; AVX2-LABEL: @x86_pblendvb_v8f32_v4f32(
55- ; AVX2-NEXT: [[TMP1:%.*]] = fcmp olt <8 x float> [[C:%.*]], [[D:%.*]]
56- ; AVX2-NEXT: [[DOTV:%.*]] = select <8 x i1> [[TMP1]], <8 x float> [[B:%.*]], <8 x float> [[A:%.*]]
57- ; AVX2-NEXT: ret <8 x float> [[DOTV]]
58- ;
59- ; AVX512-LABEL: @x86_pblendvb_v8f32_v4f32(
60- ; AVX512-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[C:%.*]], [[D:%.*]]
61- ; AVX512-NEXT: [[DOTV:%.*]] = select <8 x i1> [[CMP]], <8 x float> [[B:%.*]], <8 x float> [[A:%.*]]
62- ; AVX512-NEXT: ret <8 x float> [[DOTV]]
39+ ; CHECK-LABEL: @x86_pblendvb_v8f32_v4f32(
40+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[C:%.*]], [[D:%.*]]
41+ ; CHECK-NEXT: [[DOTV:%.*]] = select <8 x i1> [[CMP]], <8 x float> [[B:%.*]], <8 x float> [[A:%.*]]
42+ ; CHECK-NEXT: ret <8 x float> [[DOTV]]
6343;
6444 %a.bc = bitcast <8 x float > %a to <32 x i8 >
6545 %b.bc = bitcast <8 x float > %b to <32 x i8 >
@@ -80,20 +60,10 @@ define <8 x float> @x86_pblendvb_v8f32_v4f32(<8 x float> %a, <8 x float> %b, <8
8060}
8161
8262define <4 x i64 > @x86_pblendvb_v4i64_v2i64 (<4 x i64 > %a , <4 x i64 > %b , <4 x i64 > %c , <4 x i64 > %d ) {
83- ; SSE-LABEL: @x86_pblendvb_v4i64_v2i64(
84- ; SSE-NEXT: [[TMP1:%.*]] = icmp slt <4 x i64> [[C:%.*]], [[D:%.*]]
85- ; SSE-NEXT: [[TMP2:%.*]] = select <4 x i1> [[TMP1]], <4 x i64> [[B:%.*]], <4 x i64> [[A:%.*]]
86- ; SSE-NEXT: ret <4 x i64> [[TMP2]]
87- ;
88- ; AVX2-LABEL: @x86_pblendvb_v4i64_v2i64(
89- ; AVX2-NEXT: [[TMP1:%.*]] = icmp slt <4 x i64> [[C:%.*]], [[D:%.*]]
90- ; AVX2-NEXT: [[TMP2:%.*]] = select <4 x i1> [[TMP1]], <4 x i64> [[B:%.*]], <4 x i64> [[A:%.*]]
91- ; AVX2-NEXT: ret <4 x i64> [[TMP2]]
92- ;
93- ; AVX512-LABEL: @x86_pblendvb_v4i64_v2i64(
94- ; AVX512-NEXT: [[CMP:%.*]] = icmp slt <4 x i64> [[C:%.*]], [[D:%.*]]
95- ; AVX512-NEXT: [[TMP1:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[B:%.*]], <4 x i64> [[A:%.*]]
96- ; AVX512-NEXT: ret <4 x i64> [[TMP1]]
63+ ; CHECK-LABEL: @x86_pblendvb_v4i64_v2i64(
64+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <4 x i64> [[C:%.*]], [[D:%.*]]
65+ ; CHECK-NEXT: [[TMP1:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[B:%.*]], <4 x i64> [[A:%.*]]
66+ ; CHECK-NEXT: ret <4 x i64> [[TMP1]]
9767;
9868 %a.bc = bitcast <4 x i64 > %a to <32 x i8 >
9969 %b.bc = bitcast <4 x i64 > %b to <32 x i8 >
@@ -216,35 +186,15 @@ define <4 x i64> @x86_pblendvb_v16i16_v8i16(<4 x i64> %a, <4 x i64> %b, <4 x i64
216186}
217187
218188define <4 x i64 > @x86_pblendvb_v32i8_v16i8 (<4 x i64 > %a , <4 x i64 > %b , <4 x i64 > %c , <4 x i64 > %d ) {
219- ; SSE-LABEL: @x86_pblendvb_v32i8_v16i8(
220- ; SSE-NEXT: [[TMP1:%.*]] = bitcast <4 x i64> [[A:%.*]] to <32 x i8>
221- ; SSE-NEXT: [[TMP2:%.*]] = bitcast <4 x i64> [[B:%.*]] to <32 x i8>
222- ; SSE-NEXT: [[C_BC:%.*]] = bitcast <4 x i64> [[C:%.*]] to <32 x i8>
223- ; SSE-NEXT: [[D_BC:%.*]] = bitcast <4 x i64> [[D:%.*]] to <32 x i8>
224- ; SSE-NEXT: [[TMP3:%.*]] = icmp slt <32 x i8> [[C_BC]], [[D_BC]]
225- ; SSE-NEXT: [[CONCAT:%.*]] = select <32 x i1> [[TMP3]], <32 x i8> [[TMP2]], <32 x i8> [[TMP1]]
226- ; SSE-NEXT: [[RES:%.*]] = bitcast <32 x i8> [[CONCAT]] to <4 x i64>
227- ; SSE-NEXT: ret <4 x i64> [[RES]]
228- ;
229- ; AVX2-LABEL: @x86_pblendvb_v32i8_v16i8(
230- ; AVX2-NEXT: [[TMP1:%.*]] = bitcast <4 x i64> [[A:%.*]] to <32 x i8>
231- ; AVX2-NEXT: [[TMP2:%.*]] = bitcast <4 x i64> [[B:%.*]] to <32 x i8>
232- ; AVX2-NEXT: [[C_BC:%.*]] = bitcast <4 x i64> [[C:%.*]] to <32 x i8>
233- ; AVX2-NEXT: [[D_BC:%.*]] = bitcast <4 x i64> [[D:%.*]] to <32 x i8>
234- ; AVX2-NEXT: [[TMP3:%.*]] = icmp slt <32 x i8> [[C_BC]], [[D_BC]]
235- ; AVX2-NEXT: [[CONCAT:%.*]] = select <32 x i1> [[TMP3]], <32 x i8> [[TMP2]], <32 x i8> [[TMP1]]
236- ; AVX2-NEXT: [[RES:%.*]] = bitcast <32 x i8> [[CONCAT]] to <4 x i64>
237- ; AVX2-NEXT: ret <4 x i64> [[RES]]
238- ;
239- ; AVX512-LABEL: @x86_pblendvb_v32i8_v16i8(
240- ; AVX512-NEXT: [[A_BC:%.*]] = bitcast <4 x i64> [[A:%.*]] to <32 x i8>
241- ; AVX512-NEXT: [[B_BC:%.*]] = bitcast <4 x i64> [[B:%.*]] to <32 x i8>
242- ; AVX512-NEXT: [[C_BC:%.*]] = bitcast <4 x i64> [[C:%.*]] to <32 x i8>
243- ; AVX512-NEXT: [[D_BC:%.*]] = bitcast <4 x i64> [[D:%.*]] to <32 x i8>
244- ; AVX512-NEXT: [[CMP:%.*]] = icmp slt <32 x i8> [[C_BC]], [[D_BC]]
245- ; AVX512-NEXT: [[CONCAT:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[B_BC]], <32 x i8> [[A_BC]]
246- ; AVX512-NEXT: [[RES:%.*]] = bitcast <32 x i8> [[CONCAT]] to <4 x i64>
247- ; AVX512-NEXT: ret <4 x i64> [[RES]]
189+ ; CHECK-LABEL: @x86_pblendvb_v32i8_v16i8(
190+ ; CHECK-NEXT: [[A_BC:%.*]] = bitcast <4 x i64> [[A:%.*]] to <32 x i8>
191+ ; CHECK-NEXT: [[B_BC:%.*]] = bitcast <4 x i64> [[B:%.*]] to <32 x i8>
192+ ; CHECK-NEXT: [[C_BC:%.*]] = bitcast <4 x i64> [[C:%.*]] to <32 x i8>
193+ ; CHECK-NEXT: [[D_BC:%.*]] = bitcast <4 x i64> [[D:%.*]] to <32 x i8>
194+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <32 x i8> [[C_BC]], [[D_BC]]
195+ ; CHECK-NEXT: [[CONCAT:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[B_BC]], <32 x i8> [[A_BC]]
196+ ; CHECK-NEXT: [[RES:%.*]] = bitcast <32 x i8> [[CONCAT]] to <4 x i64>
197+ ; CHECK-NEXT: ret <4 x i64> [[RES]]
248198;
249199 %a.bc = bitcast <4 x i64 > %a to <32 x i8 >
250200 %b.bc = bitcast <4 x i64 > %b to <32 x i8 >
@@ -424,35 +374,15 @@ define <8 x i64> @x86_pblendvb_v32i16_v16i16(<8 x i64> %a, <8 x i64> %b, <8 x i6
424374}
425375
426376define <8 x i64 > @x86_pblendvb_v64i8_v32i8 (<8 x i64 > %a , <8 x i64 > %b , <8 x i64 > %c , <8 x i64 > %d ) {
427- ; SSE-LABEL: @x86_pblendvb_v64i8_v32i8(
428- ; SSE-NEXT: [[TMP1:%.*]] = bitcast <8 x i64> [[A:%.*]] to <64 x i8>
429- ; SSE-NEXT: [[TMP2:%.*]] = bitcast <8 x i64> [[B:%.*]] to <64 x i8>
430- ; SSE-NEXT: [[C_BC:%.*]] = bitcast <8 x i64> [[C:%.*]] to <64 x i8>
431- ; SSE-NEXT: [[D_BC:%.*]] = bitcast <8 x i64> [[D:%.*]] to <64 x i8>
432- ; SSE-NEXT: [[TMP3:%.*]] = icmp slt <64 x i8> [[C_BC]], [[D_BC]]
433- ; SSE-NEXT: [[CONCAT:%.*]] = select <64 x i1> [[TMP3]], <64 x i8> [[TMP2]], <64 x i8> [[TMP1]]
434- ; SSE-NEXT: [[RES:%.*]] = bitcast <64 x i8> [[CONCAT]] to <8 x i64>
435- ; SSE-NEXT: ret <8 x i64> [[RES]]
436- ;
437- ; AVX2-LABEL: @x86_pblendvb_v64i8_v32i8(
438- ; AVX2-NEXT: [[TMP1:%.*]] = bitcast <8 x i64> [[A:%.*]] to <64 x i8>
439- ; AVX2-NEXT: [[TMP2:%.*]] = bitcast <8 x i64> [[B:%.*]] to <64 x i8>
440- ; AVX2-NEXT: [[C_BC:%.*]] = bitcast <8 x i64> [[C:%.*]] to <64 x i8>
441- ; AVX2-NEXT: [[D_BC:%.*]] = bitcast <8 x i64> [[D:%.*]] to <64 x i8>
442- ; AVX2-NEXT: [[TMP3:%.*]] = icmp slt <64 x i8> [[C_BC]], [[D_BC]]
443- ; AVX2-NEXT: [[CONCAT:%.*]] = select <64 x i1> [[TMP3]], <64 x i8> [[TMP2]], <64 x i8> [[TMP1]]
444- ; AVX2-NEXT: [[RES:%.*]] = bitcast <64 x i8> [[CONCAT]] to <8 x i64>
445- ; AVX2-NEXT: ret <8 x i64> [[RES]]
446- ;
447- ; AVX512-LABEL: @x86_pblendvb_v64i8_v32i8(
448- ; AVX512-NEXT: [[A_BC:%.*]] = bitcast <8 x i64> [[A:%.*]] to <64 x i8>
449- ; AVX512-NEXT: [[B_BC:%.*]] = bitcast <8 x i64> [[B:%.*]] to <64 x i8>
450- ; AVX512-NEXT: [[C_BC:%.*]] = bitcast <8 x i64> [[C:%.*]] to <64 x i8>
451- ; AVX512-NEXT: [[D_BC:%.*]] = bitcast <8 x i64> [[D:%.*]] to <64 x i8>
452- ; AVX512-NEXT: [[CMP:%.*]] = icmp slt <64 x i8> [[C_BC]], [[D_BC]]
453- ; AVX512-NEXT: [[CONCAT:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[B_BC]], <64 x i8> [[A_BC]]
454- ; AVX512-NEXT: [[RES:%.*]] = bitcast <64 x i8> [[CONCAT]] to <8 x i64>
455- ; AVX512-NEXT: ret <8 x i64> [[RES]]
377+ ; CHECK-LABEL: @x86_pblendvb_v64i8_v32i8(
378+ ; CHECK-NEXT: [[A_BC:%.*]] = bitcast <8 x i64> [[A:%.*]] to <64 x i8>
379+ ; CHECK-NEXT: [[B_BC:%.*]] = bitcast <8 x i64> [[B:%.*]] to <64 x i8>
380+ ; CHECK-NEXT: [[C_BC:%.*]] = bitcast <8 x i64> [[C:%.*]] to <64 x i8>
381+ ; CHECK-NEXT: [[D_BC:%.*]] = bitcast <8 x i64> [[D:%.*]] to <64 x i8>
382+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <64 x i8> [[C_BC]], [[D_BC]]
383+ ; CHECK-NEXT: [[CONCAT:%.*]] = select <64 x i1> [[CMP]], <64 x i8> [[B_BC]], <64 x i8> [[A_BC]]
384+ ; CHECK-NEXT: [[RES:%.*]] = bitcast <64 x i8> [[CONCAT]] to <8 x i64>
385+ ; CHECK-NEXT: ret <8 x i64> [[RES]]
456386;
457387 %a.bc = bitcast <8 x i64 > %a to <64 x i8 >
458388 %b.bc = bitcast <8 x i64 > %b to <64 x i8 >
0 commit comments