12
12
;
13
13
14
14
define <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]]
29
19
;
30
20
%a.bc = bitcast <4 x double > %a to <32 x i8 >
31
21
%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,
46
36
}
47
37
48
38
define <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]]
63
43
;
64
44
%a.bc = bitcast <8 x float > %a to <32 x i8 >
65
45
%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
80
60
}
81
61
82
62
define <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]]
97
67
;
98
68
%a.bc = bitcast <4 x i64 > %a to <32 x i8 >
99
69
%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
216
186
}
217
187
218
188
define <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]]
248
198
;
249
199
%a.bc = bitcast <4 x i64 > %a to <32 x i8 >
250
200
%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
424
374
}
425
375
426
376
define <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]]
456
386
;
457
387
%a.bc = bitcast <8 x i64 > %a to <64 x i8 >
458
388
%b.bc = bitcast <8 x i64 > %b to <64 x i8 >
0 commit comments