mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[libc] add cpu feature flags for SVE/SVE2/MOPS (#166884)
Add in SVE/SVE2/MOPS features for aarch64 cpus. These features may be interesting for future memory/math routines. SVE/SVE2 are now being accepted in more implementations: ``` ❯ echo | clang-21 -dM -E - -march=native | grep -i ARM_FEAT #define __ARM_FEATURE_ATOMICS 1 #define __ARM_FEATURE_BF16 1 #define __ARM_FEATURE_BF16_SCALAR_ARITHMETIC 1 #define __ARM_FEATURE_BF16_VECTOR_ARITHMETIC 1 #define __ARM_FEATURE_BTI 1 #define __ARM_FEATURE_CLZ 1 #define __ARM_FEATURE_COMPLEX 1 #define __ARM_FEATURE_CRC32 1 #define __ARM_FEATURE_DIRECTED_ROUNDING 1 #define __ARM_FEATURE_DIV 1 #define __ARM_FEATURE_DOTPROD 1 #define __ARM_FEATURE_FMA 1 #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 #define __ARM_FEATURE_FRINT 1 #define __ARM_FEATURE_IDIV 1 #define __ARM_FEATURE_JCVT 1 #define __ARM_FEATURE_LDREX 0xF #define __ARM_FEATURE_MATMUL_INT8 1 #define __ARM_FEATURE_NUMERIC_MAXMIN 1 #define __ARM_FEATURE_PAUTH 1 #define __ARM_FEATURE_QRDMX 1 #define __ARM_FEATURE_RCPC 1 #define __ARM_FEATURE_SVE 1 #define __ARM_FEATURE_SVE2 1 #define __ARM_FEATURE_SVE_BF16 1 #define __ARM_FEATURE_SVE_MATMUL_INT8 1 #define __ARM_FEATURE_SVE_VECTOR_OPERATORS 2 #define __ARM_FEATURE_UNALIGNED 1 ``` MOPS is another set of extension for string operations, but may not be generally available for now: ``` ❯ echo | clang-21 -dM -E - -march=armv9.2a+mops | grep -i MOPS #define __ARM_FEATURE_MOPS 1 ```
This commit is contained in:
committed by
GitHub
parent
c6969e578a
commit
2dd77050d4
@@ -9,7 +9,7 @@ if(LIBC_TARGET_ARCHITECTURE_IS_X86_64)
|
||||
set(ALL_CPU_FEATURES SSE2 SSE4_2 AVX AVX2 AVX512F AVX512BW FMA)
|
||||
set(LIBC_COMPILE_OPTIONS_NATIVE -march=native)
|
||||
elseif(LIBC_TARGET_ARCHITECTURE_IS_AARCH64)
|
||||
set(ALL_CPU_FEATURES "FullFP16")
|
||||
set(ALL_CPU_FEATURES FullFP16 MOPS SVE SVE2)
|
||||
set(LIBC_COMPILE_OPTIONS_NATIVE -mcpu=native)
|
||||
endif()
|
||||
|
||||
|
||||
5
libc/cmake/modules/cpu_features/check_MOPS.cpp
Normal file
5
libc/cmake/modules/cpu_features/check_MOPS.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "src/__support/macros/properties/cpu_features.h"
|
||||
|
||||
#ifndef LIBC_TARGET_CPU_HAS_MOPS
|
||||
#error unsupported
|
||||
#endif
|
||||
5
libc/cmake/modules/cpu_features/check_SVE.cpp
Normal file
5
libc/cmake/modules/cpu_features/check_SVE.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "src/__support/macros/properties/cpu_features.h"
|
||||
|
||||
#ifndef LIBC_TARGET_CPU_HAS_SVE
|
||||
#error unsupported
|
||||
#endif
|
||||
5
libc/cmake/modules/cpu_features/check_SVE2.cpp
Normal file
5
libc/cmake/modules/cpu_features/check_SVE2.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "src/__support/macros/properties/cpu_features.h"
|
||||
|
||||
#ifndef LIBC_TARGET_CPU_HAS_SVE2
|
||||
#error unsupported
|
||||
#endif
|
||||
@@ -18,6 +18,18 @@
|
||||
#define LIBC_TARGET_CPU_HAS_FULLFP16
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_FEATURE_SVE)
|
||||
#define LIBC_TARGET_CPU_HAS_SVE
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_FEATURE_SVE2)
|
||||
#define LIBC_TARGET_CPU_HAS_SVE2
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_FEATURE_MOPS)
|
||||
#define LIBC_TARGET_CPU_HAS_MOPS
|
||||
#endif
|
||||
|
||||
#if defined(__SSE2__)
|
||||
#define LIBC_TARGET_CPU_HAS_SSE2
|
||||
#define LIBC_TARGET_CPU_HAS_FPU_FLOAT
|
||||
|
||||
Reference in New Issue
Block a user