summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorJessica Paquette <jpaquette@apple.com>2018-12-19 19:01:36 +0000
committerJessica Paquette <jpaquette@apple.com>2018-12-19 19:01:36 +0000
commit3560e93dc19622b1def6cbc13f11776e8d6fac3c (patch)
tree74f97d4933992d8b5dd526ffb9021e0eba86a54d /llvm/lib/Target
parent350ee4bb1315bb5d83c3b35f671046adb54ee6db (diff)
downloadbcm5719-llvm-3560e93dc19622b1def6cbc13f11776e8d6fac3c.tar.gz
bcm5719-llvm-3560e93dc19622b1def6cbc13f11776e8d6fac3c.zip
[GlobalISel][AArch64] Add support for @llvm.ceil
This adds a G_FCEIL generic instruction and uses it in AArch64. This adds selection for floating point ceil where it has a supported, dedicated instruction. Other cases aren't handled here. It updates the relevant gisel tests and adds a select-ceil test. It also adds a check to arm64-vcvt.ll which ensures that we don't fall back when we run into one of the relevant cases. llvm-svn: 349664
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
index 5d63f0c244e..f0700ed0807 100644
--- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
@@ -97,6 +97,10 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST) {
getActionDefinitionsBuilder({G_FREM, G_FPOW}).libcallFor({s32, s64});
+ // TODO: Handle s16.
+ getActionDefinitionsBuilder(G_FCEIL)
+ .legalFor({s32, s64, v2s32, v4s32, v2s64});
+
getActionDefinitionsBuilder(G_INSERT)
.unsupportedIf([=](const LegalityQuery &Query) {
return Query.Types[0].getSizeInBits() <= Query.Types[1].getSizeInBits();
OpenPOWER on IntegriCloud