OSDN Git Service

[PowerPC] Add subregister classes for f64 VSX values
authorHal Finkel <hfinkel@anl.gov>
Sat, 29 Mar 2014 05:29:01 +0000 (05:29 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 29 Mar 2014 05:29:01 +0000 (05:29 +0000)
commit44b2b9dc1a6192fda90990ec9eec922e3f8d2049
tree799b084ff01548b0c8e4e2a051363a6a4ac11fde
parentc06afdcb65acd3f1fb28ce6280fed3a2d0db764c
[PowerPC] Add subregister classes for f64 VSX values

We had stored both f64 values and v2f64, etc. values in the VSX registers. This
worked, but was suboptimal because we would always spill 16-byte values even
through we almost always had scalar 8-byte values. This resulted in an
increase in stack-size use, extra memory bandwidth, etc. To fix this, I've
added 64-bit subregisters of the Altivec registers, and combined those with the
existing scalar floating-point registers to form a class of VSX scalar
floating-point registers. The ABI code has also been enhanced to use this
register class and some other necessary improvements have been made.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205075 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCInstrInfo.cpp
lib/Target/PowerPC/PPCInstrVSX.td
lib/Target/PowerPC/PPCRegisterInfo.cpp
lib/Target/PowerPC/PPCRegisterInfo.h
lib/Target/PowerPC/PPCRegisterInfo.td
test/CodeGen/PowerPC/vsx-fma-m.ll
test/CodeGen/PowerPC/vsx-spill.ll [new file with mode: 0644]