Farzon Lotfi
e2f463b5b6
[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`
2024-07-19 10:18:23 -04:00
..
2024-02-12 18:29:55 -08:00
2024-02-12 18:29:55 -08:00
2024-06-12 14:35:37 +01:00
2024-06-26 10:18:01 +01:00
2024-06-27 12:25:59 +01:00
2024-04-11 19:10:53 +08:00
2024-07-19 12:02:25 +01:00
2023-12-08 12:18:31 +00:00
2024-03-26 16:01:57 +01:00
2024-07-11 16:08:04 +01:00
2024-04-29 10:16:45 +01:00
2024-07-11 16:08:04 +01:00
2023-12-08 12:18:31 +00:00
2024-06-12 14:35:37 +01:00
2024-07-11 16:08:04 +01:00
2024-02-05 17:23:58 -08:00
2024-02-05 17:23:58 -08:00
2024-02-12 18:29:55 -08:00
2024-01-01 19:51:15 +00:00
2024-07-05 10:08:42 +01:00
2024-04-11 19:10:53 +08:00
2024-07-11 16:08:04 +01:00
2023-12-14 21:16:11 +08:00
2024-02-14 16:07:51 +00:00
2024-07-05 10:08:42 +01:00
2024-05-11 12:50:26 +01:00
2024-07-09 15:28:43 +01:00
2023-12-08 12:18:31 +00:00
2024-07-05 10:08:42 +01:00
2024-07-17 10:46:28 +01:00
2024-07-11 16:08:04 +01:00
2023-10-30 13:43:26 +00:00
2023-12-08 18:30:30 +00:00
2024-01-17 09:55:30 +00:00
2024-07-05 10:08:42 +01:00
2024-06-25 15:04:24 +01:00
2024-07-05 10:08:42 +01:00
2024-07-15 20:21:50 +01:00
2024-06-24 11:06:16 +01:00
2024-06-12 14:35:37 +01:00
2024-07-05 10:08:42 +01:00
2024-07-05 10:08:42 +01:00
2024-01-24 15:25:29 +01:00
2024-07-05 10:08:42 +01:00
2024-07-05 10:08:42 +01:00
2024-07-05 10:08:42 +01:00
2024-03-26 16:01:57 +01:00
2024-01-01 19:51:15 +00:00
2024-06-26 14:25:54 +01:00
2024-06-25 15:04:24 +01:00
2024-07-16 10:45:53 +01:00
2023-12-08 18:30:30 +00:00
2024-07-11 16:08:04 +01:00
2024-04-29 10:16:45 +01:00
2023-12-08 18:30:30 +00:00
2024-06-25 15:51:32 +01:00
2024-07-14 20:49:03 +01:00
2024-06-12 14:35:37 +01:00
2024-01-01 19:51:15 +00:00
2024-01-01 19:51:15 +00:00
2024-07-05 10:08:42 +01:00
2024-06-12 14:35:37 +01:00
2024-07-05 10:08:42 +01:00
2024-06-12 14:35:37 +01:00
2023-12-08 18:30:30 +00:00
2024-07-05 10:08:42 +01:00
2024-06-12 14:35:37 +01:00
2024-06-12 14:35:37 +01:00
2024-04-29 10:16:45 +01:00
2024-04-29 10:16:45 +01:00
2023-12-08 18:30:30 +00:00
2024-03-26 16:01:57 +01:00
2024-07-05 10:08:42 +01:00
2024-07-05 10:08:42 +01:00
2024-06-12 14:35:37 +01:00
2023-12-02 16:12:38 +00:00
2023-12-08 12:18:31 +00:00
2024-06-26 14:25:54 +01:00
2024-07-19 10:18:23 -04:00
2024-04-10 09:34:46 +01:00
2024-07-19 10:18:23 -04:00
2024-01-26 11:30:35 +00:00
2024-04-17 11:00:58 +01:00
2024-01-01 19:51:15 +00:00
2024-07-05 10:08:42 +01:00
2023-12-08 12:18:31 +00:00