llvm/llvm-project

[Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow AVX/AVX512 VNNI intrinsics to be used in constexpr

Chiusa

#161.340 aperta il 30 set 2025

 (7 commenti) (0 reazioni) (1 assegnatario)C++ (10.782 fork)batch import
backend:X86clang:bytecodeclang:headersconstexprgood first issue

Metriche repository

Star
 (26.378 stelle)
Metriche merge PR
 (Merge medio 1g 2h) (1000 PR mergiate in 30 g)

Descrizione

avxvnniintrin.h
__m128i _mm_dpbusd_avx_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusd_avx_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpbusd_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusd_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpbusds_avx_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusds_avx_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpbusds_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusds_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssd_avx_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssd_avx_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssd_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssd_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssds_avx_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssds_avx_epi32 (__m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssds_epi32 (__m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssds_epi32 (__m256i src, __m256i a, __m256i b)

avx512vnniintrin.h
__m512i _mm512_dpbusd_epi32 (__m512i src, __m512i a, __m512i b)
__m512i _mm512_mask_dpbusd_epi32 (__m512i src, __mmask16 k, __m512i a, __m512i b)
__m512i _mm512_maskz_dpbusd_epi32 (__mmask16 k, __m512i src, __m512i a, __m512i b)
__m512i _mm512_dpbusds_epi32 (__m512i src, __m512i a, __m512i b)
__m512i _mm512_mask_dpbusds_epi32 (__m512i src, __mmask16 k, __m512i a, __m512i b)
__m512i _mm512_maskz_dpbusds_epi32 (__mmask16 k, __m512i src, __m512i a, __m512i b)
__m512i _mm512_dpwssd_epi32 (__m512i src, __m512i a, __m512i b)
__m512i _mm512_mask_dpwssd_epi32 (__m512i src, __mmask16 k, __m512i a, __m512i b)
__m512i _mm512_maskz_dpwssd_epi32 (__mmask16 k, __m512i src, __m512i a, __m512i b)
__m512i _mm512_dpwssds_epi32 (__m512i src, __m512i a, __m512i b)
__m512i _mm512_mask_dpwssds_epi32 (__m512i src, __mmask16 k, __m512i a, __m512i b)
__m512i _mm512_maskz_dpwssds_epi32 (__mmask16 k, __m512i src, __m512i a, __m512i b)

avx512vlvnniintrin.h
__m128i _mm_dpbusd_epi32 (__m128i src, __m128i a, __m128i b)
__m128i _mm_mask_dpbusd_epi32 (__m128i src, __mmask8 k, __m128i a, __m128i b)
__m128i _mm_maskz_dpbusd_epi32 (__mmask8 k, __m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusd_epi32 (__m256i src, __m256i a, __m256i b)
__m256i _mm256_mask_dpbusd_epi32 (__m256i src, __mmask8 k, __m256i a, __m256i b)
__m256i _mm256_maskz_dpbusd_epi32 (__mmask8 k, __m256i src, __m256i a, __m256i b)
__m128i _mm_dpbusds_epi32 (__m128i src, __m128i a, __m128i b)
__m128i _mm_mask_dpbusds_epi32 (__m128i src, __mmask8 k, __m128i a, __m128i b)
__m128i _mm_maskz_dpbusds_epi32 (__mmask8 k, __m128i src, __m128i a, __m128i b)
__m256i _mm256_dpbusds_epi32 (__m256i src, __m256i a, __m256i b)
__m256i _mm256_mask_dpbusds_epi32 (__m256i src, __mmask8 k, __m256i a, __m256i b)
__m256i _mm256_maskz_dpbusds_epi32 (__mmask8 k, __m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssd_epi32 (__m128i src, __m128i a, __m128i b)
__m128i _mm_mask_dpwssd_epi32 (__m128i src, __mmask8 k, __m128i a, __m128i b)
__m128i _mm_maskz_dpwssd_epi32 (__mmask8 k, __m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssd_epi32 (__m256i src, __m256i a, __m256i b)
__m256i _mm256_mask_dpwssd_epi32 (__m256i src, __mmask8 k, __m256i a, __m256i b)
__m256i _mm256_maskz_dpwssd_epi32 (__mmask8 k, __m256i src, __m256i a, __m256i b)
__m128i _mm_dpwssds_epi32 (__m128i src, __m128i a, __m128i b)
__m128i _mm_mask_dpwssds_epi32 (__m128i src, __mmask8 k, __m128i a, __m128i b)
__m128i _mm_maskz_dpwssds_epi32 (__mmask8 k, __m128i src, __m128i a, __m128i b)
__m256i _mm256_dpwssds_epi32 (__m256i src, __m256i a, __m256i b)
__m256i _mm256_mask_dpwssds_epi32 (__m256i src, __mmask8 k, __m256i a, __m256i b)
__m256i _mm256_maskz_dpwssds_epi32 (__mmask8 k, __m256i src, __m256i a, __m256i b)

Some of the vnni8/16 intrinsics still have incorrect intrinsic types, so care must be taken attempting those (see #97271).

Please consult the Intel Intrinsics Guide, and ideally have access to a recent Intel/AMD machine to test your implementation.

Guida contributor