AVX512 test: an intrinsic that GCC forgot to implement prior to GCC8
_mm512_mask_cvtepi32_storeu_epi8 is VPMOVDB (convert from 32-bit to 8-bit with truncation) where the destination is a memory address, with an OpMask register used to indicate which of the lanes in the vector to store. Similarly, _mm512_mask_cvtepi16_storeu_epi8 is VPMOVWB (convert from 16-bit o 8-bit), which is useful for UTF-16 to Latin1 conversion. Change-Id: I8f261579aad648fdb4f0fffd15542ea306841ce6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This commit is contained in:
parent
6bb0cbc686
commit
d241616e41
@ -65,6 +65,10 @@ int main(int, char**argv)
|
||||
d = _mm512_loadu_pd((double *)argv + 64);
|
||||
f = _mm512_loadu_ps((float *)argv + 128);
|
||||
|
||||
// some intrinsic that GCC forgot until GCC 8
|
||||
i = _mm512_maskz_set1_epi32(m, '?');
|
||||
_mm512_mask_cvtepi32_storeu_epi8(argv, m, i);
|
||||
|
||||
#ifdef WANT_AVX512ER
|
||||
/* AVX512 Exponential and Reciprocal */
|
||||
f = _mm512_exp2a23_round_ps(f, 8);
|
||||
@ -84,6 +88,7 @@ int main(int, char**argv)
|
||||
#ifdef WANT_AVX512BW
|
||||
/* AVX512 Byte and Word support */
|
||||
i = _mm512_mask_loadu_epi8(i, m, argv - 8);
|
||||
_mm512_mask_cvtepi16_storeu_epi8(argv + 8, m, i);
|
||||
#endif
|
||||
#ifdef WANT_AVX512VL
|
||||
/* AVX512 Vector Length */
|
||||
|
Loading…
Reference in New Issue
Block a user