@@ -385,7 +385,9 @@ __m512d test_mm512_set1_pd(double d)
385
385
__mmask16 test_mm512_knot (__mmask16 a )
386
386
{
387
387
// CHECK-LABEL: @test_mm512_knot
388
- // CHECK: @llvm.x86.avx512.knot.w
388
+ // CHECK: [[IN:%.*]] = bitcast i16 %1 to <16 x i1>
389
+ // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
390
+ // CHECK: bitcast <16 x i1> [[NOT]] to i16
389
391
return _mm512_knot (a );
390
392
}
391
393
@@ -6211,22 +6213,38 @@ __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __
6211
6213
return _mm512_mask_permutexvar_epi32 (__W , __M , __X , __Y );
6212
6214
}
6213
6215
6214
- __mmask16 test_mm512_kand (__mmask16 __A , __mmask16 __B ) {
6216
+ __mmask16 test_mm512_kand (__m512i __A , __m512i __B , __m512i __C , __m512i __D , __m512i __E , __m512i __F ) {
6215
6217
// CHECK-LABEL: @test_mm512_kand
6216
- // CHECK: @llvm.x86.avx512.kand.w
6217
- return _mm512_kand (__A , __B );
6218
+ // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6219
+ // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6220
+ // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
6221
+ // CHECK: bitcast <16 x i1> [[RES]] to i16
6222
+ return _mm512_mask_cmpneq_epu32_mask (_mm512_kand (_mm512_cmpneq_epu32_mask (__A , __B ),
6223
+ _mm512_cmpneq_epu32_mask (__C , __D )),
6224
+ __E , __F );
6218
6225
}
6219
6226
6220
- __mmask16 test_mm512_kandn (__mmask16 __A , __mmask16 __B ) {
6227
+ __mmask16 test_mm512_kandn (__m512i __A , __m512i __B , __m512i __C , __m512i __D , __m512i __E , __m512i __F ) {
6221
6228
// CHECK-LABEL: @test_mm512_kandn
6222
- // CHECK: @llvm.x86.avx512.kandn.w
6223
- return _mm512_kandn (__A , __B );
6229
+ // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6230
+ // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6231
+ // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
6232
+ // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
6233
+ // CHECK: bitcast <16 x i1> [[RES]] to i16
6234
+ return _mm512_mask_cmpneq_epu32_mask (_mm512_kandn (_mm512_cmpneq_epu32_mask (__A , __B ),
6235
+ _mm512_cmpneq_epu32_mask (__C , __D )),
6236
+ __E , __F );
6224
6237
}
6225
6238
6226
- __mmask16 test_mm512_kor (__mmask16 __A , __mmask16 __B ) {
6239
+ __mmask16 test_mm512_kor (__m512i __A , __m512i __B , __m512i __C , __m512i __D , __m512i __E , __m512i __F ) {
6227
6240
// CHECK-LABEL: @test_mm512_kor
6228
- // CHECK: @llvm.x86.avx512.kor.w
6229
- return _mm512_kor (__A , __B );
6241
+ // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6242
+ // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6243
+ // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
6244
+ // CHECK: bitcast <16 x i1> [[RES]] to i16
6245
+ return _mm512_mask_cmpneq_epu32_mask (_mm512_kor (_mm512_cmpneq_epu32_mask (__A , __B ),
6246
+ _mm512_cmpneq_epu32_mask (__C , __D )),
6247
+ __E , __F );
6230
6248
}
6231
6249
6232
6250
int test_mm512_kortestc (__mmask16 __A , __mmask16 __B ) {
@@ -6254,16 +6272,27 @@ __mmask16 test_mm512_kunpackb(__m512i __A, __m512i __B, __m512i __C, __m512i __D
6254
6272
__E , __F );
6255
6273
}
6256
6274
6257
- __mmask16 test_mm512_kxnor (__mmask16 __A , __mmask16 __B ) {
6275
+ __mmask16 test_mm512_kxnor (__m512i __A , __m512i __B , __m512i __C , __m512i __D , __m512i __E , __m512i __F ) {
6258
6276
// CHECK-LABEL: @test_mm512_kxnor
6259
- // CHECK: @llvm.x86.avx512.kxnor.w
6260
- return _mm512_kxnor (__A , __B );
6277
+ // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6278
+ // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6279
+ // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
6280
+ // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
6281
+ // CHECK: bitcast <16 x i1> [[RES]] to i16
6282
+ return _mm512_mask_cmpneq_epu32_mask (_mm512_kxnor (_mm512_cmpneq_epu32_mask (__A , __B ),
6283
+ _mm512_cmpneq_epu32_mask (__C , __D )),
6284
+ __E , __F );
6261
6285
}
6262
6286
6263
- __mmask16 test_mm512_kxor (__mmask16 __A , __mmask16 __B ) {
6287
+ __mmask16 test_mm512_kxor (__m512i __A , __m512i __B , __m512i __C , __m512i __D , __m512i __E , __m512i __F ) {
6264
6288
// CHECK-LABEL: @test_mm512_kxor
6265
- // CHECK: @llvm.x86.avx512.kxor.w
6266
- return _mm512_kxor (__A , __B );
6289
+ // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6290
+ // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
6291
+ // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
6292
+ // CHECK: bitcast <16 x i1> [[RES]] to i16
6293
+ return _mm512_mask_cmpneq_epu32_mask (_mm512_kxor (_mm512_cmpneq_epu32_mask (__A , __B ),
6294
+ _mm512_cmpneq_epu32_mask (__C , __D )),
6295
+ __E , __F );
6267
6296
}
6268
6297
6269
6298
void test_mm512_stream_si512 (__m512i * __P , __m512i __A ) {
0 commit comments