forked from OSchip/llvm-project
[AAch64] Add the __ARM_FEATURE_DOTPROD macro definition
This matches what GCC does. https://github.com/gcc-mirror/gcc/blob/master/gcc/config/aarch64/aarch64-c.c Differential Revision: https://reviews.llvm.org/D45544 llvm-svn: 330229
This commit is contained in:
parent
1254f3e77c
commit
4b9b9fb7a0
|
@ -193,6 +193,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
|
|||
if (HasFullFP16)
|
||||
Builder.defineMacro("__ARM_FEATURE_FP16_SCALAR_ARITHMETIC", "1");
|
||||
|
||||
if (HasDotProd)
|
||||
Builder.defineMacro("__ARM_FEATURE_DOTPROD", "1");
|
||||
|
||||
switch (ArchKind) {
|
||||
default:
|
||||
break;
|
||||
|
@ -229,6 +232,7 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
|||
Crypto = 0;
|
||||
Unaligned = 1;
|
||||
HasFullFP16 = 0;
|
||||
HasDotProd = 0;
|
||||
ArchKind = llvm::AArch64::ArchKind::ARMV8A;
|
||||
|
||||
for (const auto &Feature : Features) {
|
||||
|
@ -248,6 +252,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
|||
ArchKind = llvm::AArch64::ArchKind::ARMV8_2A;
|
||||
if (Feature == "+fullfp16")
|
||||
HasFullFP16 = 1;
|
||||
if (Feature == "+dotprod")
|
||||
HasDotProd = 1;
|
||||
}
|
||||
|
||||
setDataLayout();
|
||||
|
|
|
@ -33,6 +33,7 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
|
|||
unsigned Crypto;
|
||||
unsigned Unaligned;
|
||||
unsigned HasFullFP16;
|
||||
unsigned HasDotProd;
|
||||
llvm::AArch64::ArchKind ArchKind;
|
||||
|
||||
static const Builtin::Info BuiltinInfo[];
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
// CHECK-NOT: __ARM_SIZEOF_MINIMAL_ENUM 1
|
||||
// CHECK-NOT: __ARM_SIZEOF_WCHAR_T 2
|
||||
// CHECK-NOT: __ARM_FEATURE_SVE
|
||||
// CHECK-NOT: __ARM_FEATURE_DOTPROD
|
||||
|
||||
// RUN: %clang -target aarch64_be-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN
|
||||
// CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1
|
||||
|
@ -89,6 +90,9 @@
|
|||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+sve -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SVE %s
|
||||
// CHECK-SVE: __ARM_FEATURE_SVE 1
|
||||
|
||||
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8.2a+dotprod -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DOTPROD %s
|
||||
// CHECK-DOTPROD: __ARM_FEATURE_DOTPROD 1
|
||||
|
||||
// RUN: %clang -target aarch64-none-linux-gnueabi -march=armv8.2a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s
|
||||
// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1
|
||||
// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1
|
||||
|
|
Loading…
Reference in New Issue