forked from OSchip/llvm-project
[AArch64] Define __ARM_FEATURE_{CRC32,ATOMICS}
This patch implements the definition of __ARM_FEATURE_ATOMICS and fixes the missing definition of __ARM_FEATURE_CRC32 for Armv8.1-A. Differential Revision: https://reviews.llvm.org/D91438
This commit is contained in:
parent
fa39b9eab1
commit
a4b80efea9
|
@ -155,8 +155,9 @@ void AArch64TargetInfo::fillValidCPUList(
|
|||
|
||||
void AArch64TargetInfo::getTargetDefinesARMV81A(const LangOptions &Opts,
|
||||
MacroBuilder &Builder) const {
|
||||
// FIXME: Armv8.1 makes __ARM_FEATURE_CRC32 mandatory. Handle it here.
|
||||
Builder.defineMacro("__ARM_FEATURE_QRDMX", "1");
|
||||
Builder.defineMacro("__ARM_FEATURE_ATOMICS", "1");
|
||||
Builder.defineMacro("__ARM_FEATURE_CRC32", "1");
|
||||
}
|
||||
|
||||
void AArch64TargetInfo::getTargetDefinesARMV82A(const LangOptions &Opts,
|
||||
|
@ -176,8 +177,6 @@ void AArch64TargetInfo::getTargetDefinesARMV83A(const LangOptions &Opts,
|
|||
void AArch64TargetInfo::getTargetDefinesARMV84A(const LangOptions &Opts,
|
||||
MacroBuilder &Builder) const {
|
||||
// Also include the Armv8.3 defines
|
||||
// FIXME: Armv8.4 makes __ARM_FEATURE_ATOMICS, defined in GCC, mandatory.
|
||||
// Add and handle it here.
|
||||
getTargetDefinesARMV83A(Opts, Builder);
|
||||
}
|
||||
|
||||
|
@ -304,6 +303,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
|
|||
if (HasMatMul)
|
||||
Builder.defineMacro("__ARM_FEATURE_MATMUL_INT8", "1");
|
||||
|
||||
if (HasLSE)
|
||||
Builder.defineMacro("__ARM_FEATURE_ATOMICS", "1");
|
||||
|
||||
if (HasBFloat16) {
|
||||
Builder.defineMacro("__ARM_FEATURE_BF16", "1");
|
||||
Builder.defineMacro("__ARM_FEATURE_BF16_VECTOR_ARITHMETIC", "1");
|
||||
|
@ -418,6 +420,7 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
|||
HasSVE2BitPerm = false;
|
||||
HasMatmulFP64 = false;
|
||||
HasMatmulFP32 = false;
|
||||
HasLSE = false;
|
||||
|
||||
ArchKind = llvm::AArch64::ArchKind::ARMV8A;
|
||||
|
||||
|
@ -499,6 +502,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
|||
HasMatMul = true;
|
||||
if (Feature == "+bf16")
|
||||
HasBFloat16 = true;
|
||||
if (Feature == "+lse")
|
||||
HasLSE = true;
|
||||
}
|
||||
|
||||
setDataLayout();
|
||||
|
|
|
@ -44,6 +44,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
|
|||
bool HasSVE2BitPerm;
|
||||
bool HasMatmulFP64;
|
||||
bool HasMatmulFP32;
|
||||
bool HasLSE;
|
||||
|
||||
llvm::AArch64::ArchKind ArchKind;
|
||||
|
||||
|
|
|
@ -62,6 +62,8 @@
|
|||
// RUN: %clang -target arm64-none-linux-gnu -mcrc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+crc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+crc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s
|
||||
// CHECK-CRC32: __ARM_FEATURE_CRC32 1
|
||||
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -fno-math-errno -fno-signed-zeros\
|
||||
|
@ -447,3 +449,10 @@
|
|||
// RUN: %clang -target aarch64-arm-none-eabi -march=armv8-a+sve -msve-vector-bits=2048 -x c -E -dM %s -o - 2>&1 | FileCheck -check-prefix=CHECK-SVE-VECTOR-BITS -D#VBITS=2048 %s
|
||||
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_BITS [[#VBITS:]]
|
||||
// CHECK-SVE-VECTOR-BITS: __ARM_FEATURE_SVE_VECTOR_OPERATORS 1
|
||||
|
||||
// ================== Check Largse System Extensions (LSE)
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
||||
// RUN: %clang -target arm64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s
|
||||
// CHECK-LSE: __ARM_FEATURE_ATOMICS 1
|
||||
|
|
Loading…
Reference in New Issue