Skip to content

Commit 226b0a9

Browse files
authored
[Headers][X86] Add constexpr support for some AVX512 masked extension/truncation intrinsics. (#158663)
The following AVX[512] intrinsics are now constexpr: - `_mm512_mask_cvtepi8_epi32` - `_mm512_maskz_cvtepi8_epi32` - `_mm512_mask_cvtepi8_epi64` - `_mm512_maskz_cvtepi8_epi64` - ` _mm512_mask_cvtepi16_epi32` - ` _mm512_maskz_cvtepi16_epi32` - ` _mm512_mask_cvtepi16_epi64` - ` _mm512_maskz_cvtepi16_epi64` - ` _mm512_mask_cvtepi32_epi64` - ` _mm512_maskz_cvtepi32_epi64` - ` _mm512_mask_cvtepu8_epi32` - ` _mm512_maskz_cvtepu8_epi32` - ` _mm512_mask_cvtepu8_epi64` - ` _mm512_maskz_cvtepu8_epi64` - ` _mm512_mask_cvtepu16_epi32` - ` _mm512_maskz_cvtepu16_epi32` - `_mm512_mask_cvtepu16_epi64` - `_mm512_maskz_cvtepu16_epi64` - `_mm512_mask_cvtepu32_epi64` - `_mm512_maskz_cvtepu32_epi64` - `_mm512_mask_cvtepi8_epi16` - `_mm512_maskz_cvtepi8_epi16` - `_mm512_mask_cvtepu8_epi16` - `_mm512_maskz_cvtepu8_epi16` - `_mm_cvtepi16_epi8` - `_mm256_cvtepi16_epi8` - `_mm256_mask_cvtepi16_epi8` - `_mm256_maskz_cvtepi16_epi8` This PR is part 1 of a series of PRs fixing [#154539](#154539)
1 parent 74090de commit 226b0a9

File tree

6 files changed

+112
-81
lines changed

6 files changed

+112
-81
lines changed

clang/lib/Headers/avx512bwintrin.h

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,17 +1325,15 @@ _mm512_cvtepi8_epi16(__m256i __A) {
13251325
return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
13261326
}
13271327

1328-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1329-
_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1330-
{
1328+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1329+
_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
13311330
return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
13321331
(__v32hi)_mm512_cvtepi8_epi16(__A),
13331332
(__v32hi)__W);
13341333
}
13351334

1336-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1337-
_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1338-
{
1335+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1336+
_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
13391337
return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
13401338
(__v32hi)_mm512_cvtepi8_epi16(__A),
13411339
(__v32hi)_mm512_setzero_si512());
@@ -1346,23 +1344,20 @@ _mm512_cvtepu8_epi16(__m256i __A) {
13461344
return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
13471345
}
13481346

1349-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1350-
_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1351-
{
1347+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1348+
_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
13521349
return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
13531350
(__v32hi)_mm512_cvtepu8_epi16(__A),
13541351
(__v32hi)__W);
13551352
}
13561353

1357-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1358-
_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1359-
{
1354+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1355+
_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
13601356
return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
13611357
(__v32hi)_mm512_cvtepu8_epi16(__A),
13621358
(__v32hi)_mm512_setzero_si512());
13631359
}
13641360

1365-
13661361
#define _mm512_shufflehi_epi16(A, imm) \
13671362
((__m512i)__builtin_ia32_pshufhw512((__v32hi)(__m512i)(A), (int)(imm)))
13681363

clang/lib/Headers/avx512fintrin.h

Lines changed: 40 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4520,17 +4520,15 @@ _mm512_cvtepi8_epi32(__m128i __A) {
45204520
return (__m512i)__builtin_convertvector((__v16qs)__A, __v16si);
45214521
}
45224522

4523-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4524-
_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A)
4525-
{
4523+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4524+
_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
45264525
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
45274526
(__v16si)_mm512_cvtepi8_epi32(__A),
45284527
(__v16si)__W);
45294528
}
45304529

4531-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4532-
_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A)
4533-
{
4530+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4531+
_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
45344532
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
45354533
(__v16si)_mm512_cvtepi8_epi32(__A),
45364534
(__v16si)_mm512_setzero_si512());
@@ -4543,17 +4541,15 @@ _mm512_cvtepi8_epi64(__m128i __A) {
45434541
return (__m512i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__A, (__v16qs)__A, 0, 1, 2, 3, 4, 5, 6, 7), __v8di);
45444542
}
45454543

4546-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4547-
_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4548-
{
4544+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4545+
_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
45494546
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
45504547
(__v8di)_mm512_cvtepi8_epi64(__A),
45514548
(__v8di)__W);
45524549
}
45534550

4554-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4555-
_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
4556-
{
4551+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4552+
_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
45574553
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
45584554
(__v8di)_mm512_cvtepi8_epi64(__A),
45594555
(__v8di)_mm512_setzero_si512 ());
@@ -4564,17 +4560,15 @@ _mm512_cvtepi32_epi64(__m256i __X) {
45644560
return (__m512i)__builtin_convertvector((__v8si)__X, __v8di);
45654561
}
45664562

4567-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4568-
_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X)
4569-
{
4563+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4564+
_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
45704565
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
45714566
(__v8di)_mm512_cvtepi32_epi64(__X),
45724567
(__v8di)__W);
45734568
}
45744569

4575-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4576-
_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X)
4577-
{
4570+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4571+
_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
45784572
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
45794573
(__v8di)_mm512_cvtepi32_epi64(__X),
45804574
(__v8di)_mm512_setzero_si512());
@@ -4585,17 +4579,15 @@ _mm512_cvtepi16_epi32(__m256i __A) {
45854579
return (__m512i)__builtin_convertvector((__v16hi)__A, __v16si);
45864580
}
45874581

4588-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4589-
_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A)
4590-
{
4582+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4583+
_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
45914584
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
45924585
(__v16si)_mm512_cvtepi16_epi32(__A),
45934586
(__v16si)__W);
45944587
}
45954588

4596-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4597-
_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A)
4598-
{
4589+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4590+
_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
45994591
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
46004592
(__v16si)_mm512_cvtepi16_epi32(__A),
46014593
(__v16si)_mm512_setzero_si512 ());
@@ -4606,17 +4598,15 @@ _mm512_cvtepi16_epi64(__m128i __A) {
46064598
return (__m512i)__builtin_convertvector((__v8hi)__A, __v8di);
46074599
}
46084600

4609-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4610-
_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4611-
{
4601+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4602+
_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
46124603
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46134604
(__v8di)_mm512_cvtepi16_epi64(__A),
46144605
(__v8di)__W);
46154606
}
46164607

4617-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4618-
_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4619-
{
4608+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4609+
_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
46204610
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46214611
(__v8di)_mm512_cvtepi16_epi64(__A),
46224612
(__v8di)_mm512_setzero_si512());
@@ -4627,17 +4617,15 @@ _mm512_cvtepu8_epi32(__m128i __A) {
46274617
return (__m512i)__builtin_convertvector((__v16qu)__A, __v16si);
46284618
}
46294619

4630-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4631-
_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A)
4632-
{
4620+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4621+
_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
46334622
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
46344623
(__v16si)_mm512_cvtepu8_epi32(__A),
46354624
(__v16si)__W);
46364625
}
46374626

4638-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4639-
_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A)
4640-
{
4627+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4628+
_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
46414629
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
46424630
(__v16si)_mm512_cvtepu8_epi32(__A),
46434631
(__v16si)_mm512_setzero_si512());
@@ -4648,17 +4636,15 @@ _mm512_cvtepu8_epi64(__m128i __A) {
46484636
return (__m512i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__A, (__v16qu)__A, 0, 1, 2, 3, 4, 5, 6, 7), __v8di);
46494637
}
46504638

4651-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4652-
_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4653-
{
4639+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4640+
_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
46544641
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46554642
(__v8di)_mm512_cvtepu8_epi64(__A),
46564643
(__v8di)__W);
46574644
}
46584645

4659-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4660-
_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
4661-
{
4646+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4647+
_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
46624648
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46634649
(__v8di)_mm512_cvtepu8_epi64(__A),
46644650
(__v8di)_mm512_setzero_si512());
@@ -4669,17 +4655,15 @@ _mm512_cvtepu32_epi64(__m256i __X) {
46694655
return (__m512i)__builtin_convertvector((__v8su)__X, __v8di);
46704656
}
46714657

4672-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4673-
_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X)
4674-
{
4658+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4659+
_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
46754660
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46764661
(__v8di)_mm512_cvtepu32_epi64(__X),
46774662
(__v8di)__W);
46784663
}
46794664

4680-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4681-
_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X)
4682-
{
4665+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4666+
_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
46834667
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
46844668
(__v8di)_mm512_cvtepu32_epi64(__X),
46854669
(__v8di)_mm512_setzero_si512());
@@ -4690,17 +4674,15 @@ _mm512_cvtepu16_epi32(__m256i __A) {
46904674
return (__m512i)__builtin_convertvector((__v16hu)__A, __v16si);
46914675
}
46924676

4693-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4694-
_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A)
4695-
{
4677+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4678+
_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
46964679
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
46974680
(__v16si)_mm512_cvtepu16_epi32(__A),
46984681
(__v16si)__W);
46994682
}
47004683

4701-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4702-
_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A)
4703-
{
4684+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4685+
_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
47044686
return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
47054687
(__v16si)_mm512_cvtepu16_epi32(__A),
47064688
(__v16si)_mm512_setzero_si512());
@@ -4711,17 +4693,15 @@ _mm512_cvtepu16_epi64(__m128i __A) {
47114693
return (__m512i)__builtin_convertvector((__v8hu)__A, __v8di);
47124694
}
47134695

4714-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4715-
_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A)
4716-
{
4696+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4697+
_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
47174698
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
47184699
(__v8di)_mm512_cvtepu16_epi64(__A),
47194700
(__v8di)__W);
47204701
}
47214702

4722-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
4723-
_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4724-
{
4703+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
4704+
_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
47254705
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
47264706
(__v8di)_mm512_cvtepu16_epi64(__A),
47274707
(__v8di)_mm512_setzero_si512());

clang/lib/Headers/avx512vlbwintrin.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,8 +1436,8 @@ _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
14361436
__M);
14371437
}
14381438

1439-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
1440-
_mm_cvtepi16_epi8 (__m128i __A) {
1439+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
1440+
_mm_cvtepi16_epi8(__m128i __A) {
14411441
return (__m128i)__builtin_shufflevector(
14421442
__builtin_convertvector((__v8hi)__A, __v8qi),
14431443
(__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
@@ -1477,20 +1477,20 @@ _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
14771477
__builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
14781478
}
14791479

1480-
static __inline__ __m128i __DEFAULT_FN_ATTRS256
1481-
_mm256_cvtepi16_epi8 (__m256i __A) {
1480+
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
1481+
_mm256_cvtepi16_epi8(__m256i __A) {
14821482
return (__m128i)__builtin_convertvector((__v16hi) __A, __v16qi);
14831483
}
14841484

1485-
static __inline__ __m128i __DEFAULT_FN_ATTRS256
1486-
_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1485+
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
1486+
_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
14871487
return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
14881488
(__v16qi)_mm256_cvtepi16_epi8(__A),
14891489
(__v16qi)__O);
14901490
}
14911491

1492-
static __inline__ __m128i __DEFAULT_FN_ATTRS256
1493-
_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
1492+
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
1493+
_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {
14941494
return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
14951495
(__v16qi)_mm256_cvtepi16_epi8(__A),
14961496
(__v16qi)_mm_setzero_si128());

clang/test/CodeGen/X86/avx512bw-builtins.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,13 +1729,17 @@ __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
17291729
return _mm512_mask_cvtepi8_epi16(__W, __U, __A);
17301730
}
17311731

1732+
TEST_CONSTEXPR(match_v32hi(_mm512_mask_cvtepi8_epi16(_mm512_set1_epi16(-777), /*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qs){1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28, 29, -30, 31, -32}), 1, -777, 3, -777, -777, -6, -777, -8, -777, -777, 11, -12, 13, -14, -777, -777, -777, -18, -777, -20, 21, -22, -777, -777, -777, -777, 27, -28, 29, -777, -777, -32));
1733+
17321734
__m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
17331735
// CHECK-LABEL: test_mm512_maskz_cvtepi8_epi16
17341736
// CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
17351737
// CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
17361738
return _mm512_maskz_cvtepi8_epi16(__U, __A);
17371739
}
17381740

1741+
TEST_CONSTEXPR(match_v32hi(_mm512_maskz_cvtepi8_epi16(/*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qs){1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26, 27, -28, 29, -30, 31, -32}), 1, 0, 3, 0, 0, -6, 0, -8, 0, 0, 11, -12, 13, -14, 0, 0, 0, -18, 0, -20, 21, -22, 0, 0, 0, 0, 27, -28, 29, 0, 0, -32));
1742+
17391743
__m512i test_mm512_cvtepu8_epi16(__m256i __A) {
17401744
// CHECK-LABEL: test_mm512_cvtepu8_epi16
17411745
// CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
@@ -1750,13 +1754,17 @@ __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
17501754
return _mm512_mask_cvtepu8_epi16(__W, __U, __A);
17511755
}
17521756

1757+
TEST_CONSTEXPR(match_v32hi(_mm512_mask_cvtepu8_epi16(_mm512_set1_epi16(-777), /*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, -777, 3, -777, -777, 6, -777, 8, -777, -777, 11, 12, 13, 14, -777, -777, -777, 18, -777, 20, 21, 22, -777, -777, -777, -777, 27, 28, 29, -777, -777, 32));
1758+
17531759
__m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
17541760
// CHECK-LABEL: test_mm512_maskz_cvtepu8_epi16
17551761
// CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
17561762
// CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
17571763
return _mm512_maskz_cvtepu8_epi16(__U, __A);
17581764
}
17591765

1766+
TEST_CONSTEXPR(match_v32hi(_mm512_maskz_cvtepu8_epi16(/*1001 1100 0011 1010 0011 1100 1010 0101=*/0x9c3a3ca5, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 0, 3, 0, 0, 6, 0, 8, 0, 0, 11, 12, 13, 14, 0, 0, 0, 18, 0, 20, 21, 22, 0, 0, 0, 0, 27, 28, 29, 0, 0, 32));
1767+
17601768
__m512i test_mm512_shufflehi_epi16(__m512i __A) {
17611769
// CHECK-LABEL: test_mm512_shufflehi_epi16
17621770
// CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>

0 commit comments

Comments
 (0)