Skip to content

Commit 0bfcce4

Browse files
michael-chuhmr-c
authored andcommitted
x86 axv512 storeu: add _mm256_mask_storeu_epi{8,32,64}
Signed-off-by: Mickey Zhu <mickey_zhu@realsil.com.cn>
1 parent acf9b47 commit 0bfcce4

2 files changed

Lines changed: 270 additions & 0 deletions

File tree

simde/x86/avx512/storeu.h

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,21 @@ SIMDE_BEGIN_DECLS_
5252
#define _mm256_storeu_epi64(mem_addr, a) simde_mm256_storeu_si256(mem_addr, a)
5353
#endif
5454

55+
SIMDE_FUNCTION_ATTRIBUTES
56+
void
57+
simde_mm256_mask_storeu_epi8 (void * mem_addr, simde__mmask32 k, simde__m256i a) {
58+
#if defined(SIMDE_X86_AVX512BW_NATIVE) && defined(SIMDE_X86_AVX512VL_NATIVE)
59+
_mm256_mask_storeu_epi8(HEDLEY_REINTERPRET_CAST(void*, mem_addr), k, a);
60+
#else
61+
const simde__m256i zero = simde_mm256_setzero_si256();
62+
simde_mm256_storeu_epi8(mem_addr, simde_mm256_mask_mov_epi8(zero, k, a));
63+
#endif
64+
}
65+
#if defined(SIMDE_X86_AVX512BW_ENABLE_NATIVE_ALIASES) && defined(SIMDE_X86_AVX512VL_ENABLE_NATIVE_ALIASES)
66+
#undef _mm256_mask_storeu_epi8
67+
#define _mm256_mask_storeu_epi8(mem_addr, k, a) simde_mm256_mask_storeu_epi8(mem_addr, k, a)
68+
#endif
69+
5570
SIMDE_FUNCTION_ATTRIBUTES
5671
void
5772
simde_mm256_mask_storeu_epi16 (void * mem_addr, simde__mmask16 k, simde__m256i a) {
@@ -67,6 +82,36 @@ simde_mm256_mask_storeu_epi16 (void * mem_addr, simde__mmask16 k, simde__m256i a
6782
#define _mm256_mask_storeu_epi16(mem_addr, k, a) simde_mm256_mask_storeu_epi16(mem_addr, k, a)
6883
#endif
6984

85+
SIMDE_FUNCTION_ATTRIBUTES
86+
void
87+
simde_mm256_mask_storeu_epi32 (void * mem_addr, simde__mmask8 k, simde__m256i a) {
88+
#if defined(SIMDE_X86_AVX512F_NATIVE) && defined(SIMDE_X86_AVX512VL_NATIVE)
89+
_mm256_mask_storeu_epi32(HEDLEY_REINTERPRET_CAST(void*, mem_addr), k, a);
90+
#else
91+
const simde__m256i zero = simde_mm256_setzero_si256();
92+
simde_mm256_storeu_epi32(mem_addr, simde_mm256_mask_mov_epi32(zero, k, a));
93+
#endif
94+
}
95+
#if defined(SIMDE_X86_AVX512F_ENABLE_NATIVE_ALIASES) && defined(SIMDE_X86_AVX512VL_ENABLE_NATIVE_ALIASES)
96+
#undef _mm256_mask_storeu_epi32
97+
#define _mm256_mask_storeu_epi32(mem_addr, k, a) simde_mm256_mask_storeu_epi32(mem_addr, k, a)
98+
#endif
99+
100+
SIMDE_FUNCTION_ATTRIBUTES
101+
void
102+
simde_mm256_mask_storeu_epi64 (void * mem_addr, simde__mmask8 k, simde__m256i a) {
103+
#if defined(SIMDE_X86_AVX512F_NATIVE) && defined(SIMDE_X86_AVX512VL_NATIVE)
104+
_mm256_mask_storeu_epi64(HEDLEY_REINTERPRET_CAST(void*, mem_addr), k, a);
105+
#else
106+
const simde__m256i zero = simde_mm256_setzero_si256();
107+
simde_mm256_storeu_epi64(mem_addr, simde_mm256_mask_mov_epi64(zero, k, a));
108+
#endif
109+
}
110+
#if defined(SIMDE_X86_AVX512F_ENABLE_NATIVE_ALIASES) && defined(SIMDE_X86_AVX512VL_ENABLE_NATIVE_ALIASES)
111+
#undef _mm256_mask_storeu_epi64
112+
#define _mm256_mask_storeu_epi64(mem_addr, k, a) simde_mm256_mask_storeu_epi64(mem_addr, k, a)
113+
#endif
114+
70115
SIMDE_FUNCTION_ATTRIBUTES
71116
void
72117
simde_mm512_storeu_ps (void * mem_addr, simde__m512 a) {

0 commit comments

Comments
 (0)