diff options
author | Jessica Paquette <jpaquette@apple.com> | 2018-12-19 19:01:36 +0000 |
---|---|---|
committer | Jessica Paquette <jpaquette@apple.com> | 2018-12-19 19:01:36 +0000 |
commit | 3560e93dc19622b1def6cbc13f11776e8d6fac3c (patch) | |
tree | 74f97d4933992d8b5dd526ffb9021e0eba86a54d /llvm/lib/Target/AArch64 | |
parent | 350ee4bb1315bb5d83c3b35f671046adb54ee6db (diff) | |
download | bcm5719-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/AArch64')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp | 4 |
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(); |