Skip to content

[X86][Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow SSE/AVX COMI/UCOMI/CMPS/CMPP fp comparison intrinsics to be used in constexpr #160473

@RKSimon

Description

@RKSimon

The float/double/half scalar / vector comparison intrinsics can all be handled in constant expressions, accounting for special handling of NAN inputs.

_mm_comieq_ss   _mm_comieq_sd   _mm_comieq_sh
_mm_comige_ss   _mm_comige_sd   _mm_comige_sh
_mm_comigt_ss   _mm_comigt_sd   _mm_comigt_sh
_mm_comile_ss   _mm_comile_sd   _mm_comile_sh
_mm_comilt_ss   _mm_comilt_sd   _mm_comilt_sh
_mm_comineq_ss  _mm_comineq_sd  _mm_comineq_sh
_mm_ucomieq_ss  _mm_ucomieq_sd  _mm_ucomieq_sh
_mm_ucomige_ss  _mm_ucomige_sd  _mm_ucomige_sh
_mm_ucomigt_ss  _mm_ucomigt_sd  _mm_ucomigt_sh
_mm_ucomile_ss  _mm_ucomile_sd  _mm_ucomile_sh
_mm_ucomilt_ss  _mm_ucomilt_sd  _mm_ucomilt_sh 
_mm_ucomineq_ss _mm_ucomineq_sd _mm_ucomineq_sh
_mm_comi_sh

_mm_cmpeq_ss    _mm_cmpeq_sd    _mm_cmpeq_ps    _mm_cmpeq_pd
_mm_cmpge_ss    _mm_cmpge_sd    _mm_cmpge_ps    _mm_cmpge_pd
_mm_cmpgt_ss    _mm_cmpgt_sd    _mm_cmpgt_ps    _mm_cmpgt_pd
_mm_cmple_ss    _mm_cmple_sd    _mm_cmple_ps    _mm_cmple_pd
_mm_cmplt_ss    _mm_cmplt_sd    _mm_cmplt_ps    _mm_cmplt_pd
_mm_cmpneq_ss   _mm_cmpneq_sd   _mm_cmpneq_ps   _mm_cmpneq_pd
_mm_cmpnge_ss   _mm_cmpnge_sd   _mm_cmpnge_ps   _mm_cmpnge_pd
_mm_cmpngt_ss   _mm_cmpngt_sd   _mm_cmpngt_ps   _mm_cmpngt_pd
_mm_cmpnle_ss   _mm_cmpnle_sd   _mm_cmpnle_ps   _mm_cmpnle_pd
_mm_cmpnlt_ss   _mm_cmpnlt_sd   _mm_cmpnlt_ps   _mm_cmpnlt_pd
_mm_cmpord_ss   _mm_cmpord_sd   _mm_cmpord_ps   _mm_cmpord_pd
_mm_cmpunord_ss _mm_cmpunord_sd _mm_cmpunord_ps _mm_cmpunord_pd

_mm_cmp_ss _mm_cmp_sd 
_mm_cmp_ps _mm256_cmp_ps
_mm_cmp_pd _mm256_cmp_pd

Metadata

Metadata

Assignees

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