summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets/AArch64.cpp
diff options
context:
space:
mode:
authorBryan Chan <bryan.chan@huawei.com>2018-10-25 23:47:00 +0000
committerBryan Chan <bryan.chan@huawei.com>2018-10-25 23:47:00 +0000
commit223307b3dc0c7696c2fbad2104223d7064867adb (patch)
tree7cb7773d400fb65b22f11e983c4028f21442f75f /clang/lib/Basic/Targets/AArch64.cpp
parent3103d3dcd18cc2b91441dd47f03a4f7da74cdcd1 (diff)
downloadbcm5719-llvm-223307b3dc0c7696c2fbad2104223d7064867adb.tar.gz
bcm5719-llvm-223307b3dc0c7696c2fbad2104223d7064867adb.zip
[AArch64] Implement FP16FML intrinsics
Generate the FP16FML intrinsics into arm_neon.h (AArch64 only for now). Add two new type modifiers to NeonEmitter to handle the new prototypes. Define __ARM_FEATURE_FP16FML when +fp16fml is enabled and guard the intrinsics with the macro in arm_neon.h. Based on a patch by Gao Yiling. Differential Revision: https://reviews.llvm.org/D53633 llvm-svn: 345344
Diffstat (limited to 'clang/lib/Basic/Targets/AArch64.cpp')
-rw-r--r--clang/lib/Basic/Targets/AArch64.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index b3a01ae2594..1f91214a451 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -194,6 +194,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
if (HasDotProd)
Builder.defineMacro("__ARM_FEATURE_DOTPROD", "1");
+ if ((FPU & NeonMode) && HasFP16FML)
+ Builder.defineMacro("__ARM_FEATURE_FP16FML", "1");
+
switch (ArchKind) {
default:
break;
@@ -231,6 +234,7 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
Unaligned = 1;
HasFullFP16 = 0;
HasDotProd = 0;
+ HasFP16FML = 0;
ArchKind = llvm::AArch64::ArchKind::ARMV8A;
for (const auto &Feature : Features) {
@@ -252,6 +256,8 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
HasFullFP16 = 1;
if (Feature == "+dotprod")
HasDotProd = 1;
+ if (Feature == "+fp16fml")
+ HasFP16FML = 1;
}
setDataLayout();
OpenPOWER on IntegriCloud