Skip to content

[Headers][X86] Allow AVX/AVX512 generic fp conversion intrinsics to be used in constexpr #155798

@RKSimon

Description

@RKSimon

(split off from #154539) - these are all the remaining fp intrinsics I can locate that just wrap __builtin_convertvector/__builtin_shufflevector and can be easily used in constexpr with suitable test coverage

avxintrin.h
_mm256_cvtepi32_pd
_mm256_cvtepi32_ps
_mm256_cvtps_pd

avx512fintrin.h
_mm512_cvtepi32_ps _mm512_mask_cvtepi32_ps _mm512_maskz_cvtepi32_ps
_mm512_cvtepu32_ps _mm512_mask_cvtepu32_ps _mm512_maskz_cvtepu32_ps
_mm512_cvtepi32_pd _mm512_mask_cvtepi32_pd _mm512_maskz_cvtepi32_pd _mm512_cvtepi32lo_pd _mm512_mask_cvtepi32lo_pd 
_mm512_cvtepu32_pd _mm512_mask_cvtepu32_pd _mm512_maskz_cvtepu32_pd _mm512_cvtepu32lo_pd _mm512_mask_cvtepu32lo_pd

_mm512_cvtps_pd _mm512_mask_cvtps_pd _mm512_maskz_cvtps_pd _mm512_cvtpslo_pd _mm512_mask_cvtpslo_pd

avx512vlintrin.h
_mm_mask_cvtepi32_pd _mm_maskz_cvtepi32_pd
_mm_mask_cvtepi32_ps _mm_maskz_cvtepi32_ps
_mm_cvtepu32_pd _mm_mask_cvtepu32_pd _mm_maskz_cvtepu32_pd
_mm_cvtepu32_ps _mm_mask_cvtepu32_ps _mm_maskz_cvtepu32_ps
_mm256_mask_cvtepi32_pd _mm256_maskz_cvtepi32_pd
_mm256_mask_cvtepi32_ps _mm256_maskz_cvtepi32_ps
_mm256_cvtepu32_pd _mm256_mask_cvtepu32_pd _mm256_maskz_cvtepu32_pd
_mm256_cvtepu32_ps _mm256_mask_cvtepu32_ps _mm256_maskz_cvtepu32_ps

avx512dqintrin.h
_mm512_cvtepi64_pd _mm512_mask_cvtepi64_pd _mm512_maskz_cvtepi64_pd
_mm512_cvtepu64_pd _mm512_mask_cvtepu64_pd _mm512_maskz_cvtepu64_pd

avx512vldqintrin.h
_mm_cvtepi64_pd _mm_mask_cvtepi64_pd _mm_maskz_cvtepi64_pd
_mm_cvtepu64_pd _mm_mask_cvtepu64_pd _mm_maskz_cvtepu64_pd
_mm_cvtepi64_ps _mm_mask_cvtepi64_ps _mm_maskz_cvtepi64_ps
_mm_cvtepu64_ps _mm_mask_cvtepu64_ps _mm_maskz_cvtepu64_ps
_mm256_cvtepi64_pd _mm256_mask_cvtepi64_pd _mm256_maskz_cvtepi64_pd
_mm256_cvtepu64_pd _mm256_mask_cvtepu64_pd _mm256_maskz_cvtepu64_pd
_mm256_cvtepi64_ps _mm256_mask_cvtepi64_ps _mm256_maskz_cvtepi64_ps
_mm256_cvtepu64_ps _mm256_mask_cvtepu64_ps _mm256_maskz_cvtepu64_ps

avx512vlfp16intrin.h
_mm_cvtepi16_ph _mm_mask_cvtepi16_ph _mm_maskz_cvtepi16_ph
_mm_cvtepu16_ph _mm_mask_cvtepu16_ph _mm_maskz_cvtepu16_ph
_mm256_cvtepi16_ph _mm256_mask_cvtepi16_ph _mm256_maskz_cvtepi16_ph
_mm256_cvtepu16_ph _mm256_mask_cvtepu16_ph _mm256_maskz_cvtepu16_ph
_mm256_cvtepi32_ph _mm256_mask_cvtepi32_ph _mm256_maskz_cvtepi32_ph
_mm256_cvtepu32_ph _mm256_mask_cvtepu32_ph _mm256_maskz_cvtepu32_ph

I may have missed some :/

Metadata

Metadata

Assignees

Labels

backend:X86clang:headersHeaders provided by Clang, e.g. for intrinsicsconstexprAnything related to constant evaluationgood first issuehttps://github.com/llvm/llvm-project/contribute

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions