Overhaul Cell SPU's addressing mode internals so that there are now
authorScott Michel <scottm@aero.org>
Tue, 29 Jan 2008 02:16:57 +0000 (02:16 +0000)
committerScott Michel <scottm@aero.org>
Tue, 29 Jan 2008 02:16:57 +0000 (02:16 +0000)
commit053c1da8d956a794d158ac906b3927c923f97c4d
tree854873d70add745f12cb6df24494fbf9cca027c4
parent2ff48bc4926b19931858a0ca413149bd9f40cda6
Overhaul Cell SPU's addressing mode internals so that there are now
only two addressing mode nodes, SPUaform and SPUindirect (vice the
three previous ones, SPUaform, SPUdform and SPUxform). This improves
code somewhat because we now avoid using reg+reg addressing when
it can be avoided. It also simplifies the address selection logic,
which was the main point for doing this.

Also, for various global variables that would be loaded using SPU's
A-form addressing, prefer D-form offs[reg] addressing, keeping the
base in a register if the variable is used more than once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46483 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
lib/Target/CellSPU/SPUAsmPrinter.cpp
lib/Target/CellSPU/SPUISelDAGToDAG.cpp
lib/Target/CellSPU/SPUISelLowering.cpp
lib/Target/CellSPU/SPUISelLowering.h
lib/Target/CellSPU/SPUInstrFormats.td
lib/Target/CellSPU/SPUInstrInfo.td
lib/Target/CellSPU/SPUNodes.td
lib/Target/CellSPU/SPUTargetAsmInfo.cpp
test/CodeGen/CellSPU/call_indirect.ll
test/CodeGen/CellSPU/extract_elt.ll
test/CodeGen/CellSPU/fcmp.ll
test/CodeGen/CellSPU/struct_1.ll
test/CodeGen/CellSPU/struct_2.ll [deleted file]
test/CodeGen/CellSPU/vec_const.ll