[all-commits] [llvm/llvm-project] a77208: PowerPC: Treat llvm.fma.f* intrinsic as using CTR ...
Justin Hibbits via All-commits
all-commits at lists.llvm.org
Tue May 12 15:07:48 PDT 2020
Branch: refs/heads/a772082f
Home: https://github.com/llvm/llvm-project
Commit: a772082fc1c7aa043175bb34a9363d3c119a7930
https://github.com/llvm/llvm-project/commit/a772082fc1c7aa043175bb34a9363d3c119a7930
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
M llvm/test/CodeGen/PowerPC/spe.ll
Log Message:
-----------
PowerPC: Treat llvm.fma.f* intrinsic as using CTR with SPE
Summary:
The SPE doesn't have a 'fma' instruction, so the intrinsic becomes a
libcall. It really should become an expansion to two instructions, but
for some reason the compiler doesn't think that's as optimal as a
branch. Since this lowering is done after CTR is allocated for loops,
tell the optimizer that CTR may be used in this case. This prevents a
"Invalid PPC CTR loop!" assertion in the case that a fma() function call
is used in a C/C++ file, and clang converts it into an intrinsic.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D78668
Commit: 95dcbfa0e5ce701ac20b34f1028a398996df3f34
https://github.com/llvm/llvm-project/commit/95dcbfa0e5ce701ac20b34f1028a398996df3f34
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
A llvm/test/CodeGen/PowerPC/spe-fastmath.ll
Log Message:
-----------
PowerPC: Don't lower SELECT_CC to PPCISD::FSEL on SPE
Summary:
SPE doesn't have a fsel instruction, so don't try to lower to it.
This fixes a "Cannot select: tN: f64 = PPCISD::FSEL tX, tY, tZ" error.
Reviewed By: lkail
Differential Revision: https://reviews.llvm.org/D77773
Commit: b901070f406129e71f9057357486ef8e1101ad6d
https://github.com/llvm/llvm-project/commit/b901070f406129e71f9057357486ef8e1101ad6d
Author: Justin Hibbits <chmeeedalf at gmail.com>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
M llvm/lib/Target/PowerPC/PPCISelLowering.h
Log Message:
-----------
[PowerPC] Relax the restrictions on loading doubles with SPE
The original commit forced all 64-bit values to be loaded from indexed
registers, regardless of how close they were located to a given base
register. This relaxes that, and permits some to be immediate-indexed
if they fit within a signed 255 (really 248, 8-byte aligned mask) byte
window. Patch by kthomsen.
Commit: 33e552d43617201799637faeabfdbe80e9d80a1b
https://github.com/llvm/llvm-project/commit/33e552d43617201799637faeabfdbe80e9d80a1b
Author: Justin Hibbits <chmeeedalf at gmail.com>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
Log Message:
-----------
PowerPC: Fix SPE f64 VAARG handling.
SPE follows soft-float ABI for doubles, including VAARG passing. For
soft-float, doubles are bitcast to i64, but for SPE they are not, so we
need to perform GPR alignment explicitly for SPE f64.
Commit: df0a004bf3796a9a2b2d60b2c8f96e996aa36639
https://github.com/llvm/llvm-project/commit/df0a004bf3796a9a2b2d60b2c8f96e996aa36639
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M libunwind/include/__libunwind_config.h
M libunwind/include/libunwind.h
M llvm/lib/Target/PowerPC/PPCRegisterInfo.td
Log Message:
-----------
PowerPCSPE: Stop libunwind from complaining about SPE registers
* Match SPE "DWARF" register numbers to GCC's instead of official DWARF
documentation.
* Increase the register count to 148 from 112, even though the upper
registers aren't saved (yet).
Commit: 619fa4c9c852d438ec58bd7d4bedc9d1b8691a8f
https://github.com/llvm/llvm-project/commit/619fa4c9c852d438ec58bd7d4bedc9d1b8691a8f
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
Log Message:
-----------
PowerPC: Don't hoist float multiply + add to fused operation on SPE
SPE doesn't have a fmadd instruction, so don't bother hoisting a
multiply and add sequence to this, as it'd become just a library call.
Hoisting happens too late for the CTR usability test to veto using the
CTR in a loop, and results in an assert "Invalid PPC CTR loop!".
Commit: bd718572089afe9f4eb627ec153a2b33d781935f
https://github.com/llvm/llvm-project/commit/bd718572089afe9f4eb627ec153a2b33d781935f
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
M llvm/lib/Target/PowerPC/PPCInstrSPE.td
M llvm/test/CodeGen/PowerPC/spe.ll
Log Message:
-----------
PowerPC: Fix SPE extloadf32 handling.
The patterns were incorrect copies from the FPU code, and are
unnecessary, since there's no extended load for SPE. Just let LLVM
itself do the work by marking it expand.
Commit: e82f0d991fc01a8e509f4d6c2f5139af2d29f913
https://github.com/llvm/llvm-project/commit/e82f0d991fc01a8e509f4d6c2f5139af2d29f913
Author: Justin Hibbits <jrh29 at alumni.cwru.edu>
Date: 2020-05-12 (Tue, 12 May 2020)
Changed paths:
M llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
A llvm/test/CodeGen/PowerPC/spe-spills.ll
Log Message:
-----------
PowerPC: Add emergency stack spill slots for SPE
The powerpcspe 64-bit load/store only allows a 8-bit delta (32 64-bit
words), so if the stack size is any larger than that, we need extra
spill slots for doing indexing.
Compare: https://github.com/llvm/llvm-project/compare/a772082fc1c7%5E...e82f0d991fc0
More information about the All-commits
mailing list