llvm/llvm-project

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

クローズ

#161,340 opened on 2025/09/30

 (7 件のコメント) (0 件のリアクション) (1 人の担当者)C++ (10,782 件のフォーク)batch import
backend:X86clang:bytecodeclang:headersconstexprgood first issue

Repository metrics

Stars
 (26,378 個のスター)
PR merge metrics
 (平均マージ 1d 2h) (30d で 1,000 merged PRs)

説明

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.

コントリビューターガイド