Skip to content

[X86][Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - add AVX512 KTEST/KORTEST intrinsics to be used in constexpr #162051

@RKSimon

Description

@RKSimon

Followup to #158653 - the AVX512 mask predicate KTEST intrinsics should be able to be used in constexpr - probably by interp__builtin_elementwise_int_binop?

unsigned char _ktestc_mask16_u8 (__mmask16 a, __mmask16 b)
unsigned char _ktestc_mask32_u8 (__mmask32 a, __mmask32 b)
unsigned char _ktestc_mask64_u8 (__mmask64 a, __mmask64 b)
unsigned char _ktestc_mask8_u8 (__mmask8 a, __mmask8 b)
unsigned char _ktestz_mask16_u8 (__mmask16 a, __mmask16 b)
unsigned char _ktestz_mask32_u8 (__mmask32 a, __mmask32 b)
unsigned char _ktestz_mask64_u8 (__mmask64 a, __mmask64 b)
unsigned char _ktestz_mask8_u8 (__mmask8 a, __mmask8 b)

int _mm512_kortestc (__mmask16 k1, __mmask16 k2)
unsigned char _kortestc_mask16_u8 (__mmask16 a, __mmask16 b)
unsigned char _kortestc_mask32_u8 (__mmask32 a, __mmask32 b)
unsigned char _kortestc_mask64_u8 (__mmask64 a, __mmask64 b)
unsigned char _kortestc_mask8_u8 (__mmask8 a, __mmask8 b)
int _mm512_kortestz (__mmask16 k1, __mmask16 k2)
unsigned char _kortestz_mask16_u8 (__mmask16 a, __mmask16 b)
unsigned char _kortestz_mask32_u8 (__mmask32 a, __mmask32 b)
unsigned char _kortestz_mask64_u8 (__mmask64 a, __mmask64 b)
unsigned char _kortestz_mask8_u8 (__mmask8 a, __mmask8 b)

A stretch goal would be to handle these as well:

unsigned char _ktest_mask16_u8 (__mmask16 a, __mmask16 b, unsigned char* and_not)
unsigned char _ktest_mask32_u8 (__mmask32 a, __mmask32 b, unsigned char* and_not)
unsigned char _ktest_mask64_u8 (__mmask64 a, __mmask64 b, unsigned char* and_not)
unsigned char _ktest_mask8_u8 (__mmask8 a, __mmask8 b, unsigned char* and_not)

unsigned char _kortest_mask16_u8 (__mmask16 a, __mmask16 b, unsigned char* all_ones)
unsigned char _kortest_mask32_u8 (__mmask32 a, __mmask32 b, unsigned char* all_ones)
unsigned char _kortest_mask64_u8 (__mmask64 a, __mmask64 b, unsigned char* all_ones)
unsigned char _kortest_mask8_u8 (__mmask8 a, __mmask8 b, unsigned char* all_ones)

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:X86clang:bytecodeIssues for the clang bytecode constexpr interpreterclang: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