aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
diff options
context:
space:
mode:
authorFarzon Lotfi <1802579+farzonl@users.noreply.github.com>2024-07-19 10:18:23 -0400
committerGitHub <noreply@github.com>2024-07-19 10:18:23 -0400
commite2f463b5b64a3574e90be7375b2d2c87fa7e92c1 (patch)
tree7b9bc986214b68ed34cb0fcb8b298a006c1920db /llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
parentc719d7b390481b095c7498fe75a0bcf60a24bad9 (diff)
downloadllvm-e2f463b5b64a3574e90be7375b2d2c87fa7e92c1.zip
llvm-e2f463b5b64a3574e90be7375b2d2c87fa7e92c1.tar.gz
llvm-e2f463b5b64a3574e90be7375b2d2c87fa7e92c1.tar.bz2
[aarch64] Add hyperbolic and arc trig intrinsic lowering (#98937)
## The change(s) - `VecFuncs.def`: define intrinsic to sleef/armpl mapping - `LegalizerHelper.cpp`: add missing `fewerElementsVector` handling for the new trig intrinsics - `AArch64ISelLowering.cpp`: Add arch64 specializations for lowering like neon instructions - `AArch64LegalizerInfo.cpp`: Legalize the new trig intrinsics. aarch64 has specail legalization requirments in `AArch64LegalizerInfo.cpp`. If we redirect the clang builtin without handling this we will break the aarch64 compiler ## History This change is part of an implementation of https://github.com/llvm/llvm-project/issues/87367's investigation on supporting IEEE math operations as intrinsics. Which was discussed in this RFC: https://discourse.llvm.org/t/rfc-all-the-math-intrinsics/78294 This change adds wasm lowering cases for `acos`, `asin`, `atan`, `cosh`, `sinh`, and `tanh`. https://github.com/llvm/llvm-project/issues/70079 https://github.com/llvm/llvm-project/issues/70080 https://github.com/llvm/llvm-project/issues/70081 https://github.com/llvm/llvm-project/issues/70083 https://github.com/llvm/llvm-project/issues/70084 https://github.com/llvm/llvm-project/issues/95966 ## Why is aarch64 needed The last step is to redirect the `acos`, `asin`, `atan`, `cosh`, `sinh`, and `tanh` to emit the intrinsic. We can't emit the intrinsic without the intrinsics becoming legal for aarch64 in `AArch64LegalizerInfo.cpp`
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp')
0 files changed, 0 insertions, 0 deletions