llvm / llvm/llvm-project

[X86][clang] __builtin_cpu_supports should support foo+bar

Open
#204,942 1 comment 0 reactions 0 assignees View on GitHub
clang:frontend
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

__builtin_cpu_supports supports strings like “sve+sve2” on aarch64, but similar cannot be used on x86, which makes detecting avx512 very cumbersome.

from

bool avx512icl = __builtin_cpu_supports("avx512f+avx512vl+avx512bw+avx512dq+avx512cd+avx512vbmi+avx512vbmi2+avx512ifma+avx512vnni+avx512vpopcntdq+avx512bitalg+gfni+vaes+vpclmuldq")

to

bool avx512icl = __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512vl") && __builtin_cpu_supports("avx512bw") && __builtin_cpu_supports("avx512dq) && __builtin_cpu_supports("avx512cd") && __builtin_cpu_supports("avx512vbmi") && __builtin_cpu_supports("avx512vbmi2") && __builtin_cpu_supports("avx512ifma") && __builtin_cpu_supports("avx512vnni") && __builtin_cpu_supports("avx512vpopcntdq") && __builtin_cpu_supports("avx512bitalg") && __builtin_cpu_supports("gfni") && __builtin_cpu_supports("vaes") && __builtin_cpu_supports("vpclmuldq")

Contributor guide

Open the contributing guide

Research direction

Start by locating the implementation and tests for the __builtin_cpu_supports entry point in Clang, then compare its x86 handling with the existing aarch64 support for combined feature strings. Done means x86 accepts the requested foo+bar syntax and correctly evaluates the listed AVX-512 feature combination, with tests covering the behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.