diff options
author | Benjamin Maxwell <benjamin.maxwell@arm.com> | 2024-09-24 13:36:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 13:36:21 +0100 |
commit | 3073c3c2290a6d9b12fbaefa40dd22eef6312895 (patch) | |
tree | 7e35f2a748473f93c1c7810f762714b474262fab /llvm/lib/CodeGen/TargetLoweringBase.cpp | |
parent | db054a197002c4d6b2c568d7c36d86f5fccade2d (diff) | |
download | llvm-3073c3c2290a6d9b12fbaefa40dd22eef6312895.zip llvm-3073c3c2290a6d9b12fbaefa40dd22eef6312895.tar.gz llvm-3073c3c2290a6d9b12fbaefa40dd22eef6312895.tar.bz2 |
[SDAG] Avoid creating redundant stack slots when lowering FSINCOS (#108401)
When lowering `FSINCOS` to a library call (that takes output pointers)
we can avoid creating new stack allocations if the results of the
`FSINCOS` are being stored. Instead, we can take the destination
pointers from the stores and pass those to the library call.
---
Note: As a NFC this also adds (and uses) `RTLIB::getFSINCOS()`.
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringBase.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringBase.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 9fdde45..1f49d60 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -400,6 +400,11 @@ RTLIB::Libcall RTLIB::getFREXP(EVT RetVT) { FREXP_PPCF128); } +RTLIB::Libcall RTLIB::getFSINCOS(EVT RetVT) { + return getFPLibCall(RetVT, SINCOS_F32, SINCOS_F64, SINCOS_F80, SINCOS_F128, + SINCOS_PPCF128); +} + RTLIB::Libcall RTLIB::getOutlineAtomicHelper(const Libcall (&LC)[5][4], AtomicOrdering Order, uint64_t MemSize) { |