- Remove Tilmann's custom truncate lowering: it completely hosed over
authorScott Michel <scottm@aero.org>
Sat, 27 Dec 2008 04:51:36 +0000 (04:51 +0000)
committerScott Michel <scottm@aero.org>
Sat, 27 Dec 2008 04:51:36 +0000 (04:51 +0000)
commitf0569be4a948c7ed816bfa2b8774a5a18458ee23
tree541905fcbd5e64ef95599b1ca3c4182adc972688
parent1323e8bf6a7bec163c5d43006f5b3b78042cef61
- Remove Tilmann's custom truncate lowering: it completely hosed over
  DAGcombine's ability to find reasons to remove truncates when they were not
  needed. Consequently, the CellSPU backend would produce correct, but _really
  slow and horrible_, code.

  Replaced with instruction sequences that do the equivalent truncation in
  SPUInstrInfo.td.

- Re-examine how unaligned loads and stores work. Generated unaligned
  load code has been tested on the CellSPU hardware; see the i32operations.c
  and i64operations.c in CodeGen/CellSPU/useful-harnesses.  (While they may be
  toy test code, it does prove that some real world code does compile
  correctly.)

- Fix truncating stores in bug 3193 (note: unpack_df.ll will still make llc
  fault because i64 ult is not yet implemented.)

- Added i64 eq and neq for setcc and select/setcc; started new instruction
  information file for them in SPU64InstrInfo.td. Additional i64 operations
  should be added to this file and not to SPUInstrInfo.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61447 91177308-0d34-0410-b5e6-96231b3b80d8
19 files changed:
lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
lib/Target/CellSPU/SPU64InstrInfo.td [new file with mode: 0644]
lib/Target/CellSPU/SPUISelDAGToDAG.cpp
lib/Target/CellSPU/SPUISelLowering.cpp
lib/Target/CellSPU/SPUISelLowering.h
lib/Target/CellSPU/SPUInstrFormats.td
lib/Target/CellSPU/SPUInstrInfo.cpp
lib/Target/CellSPU/SPUInstrInfo.td
lib/Target/CellSPU/SPUNodes.td
lib/Target/CellSPU/SPUOperands.td
lib/Target/CellSPU/SPURegisterInfo.cpp
lib/Target/CellSPU/SPUTargetAsmInfo.cpp
test/CodeGen/CellSPU/call_indirect.ll
test/CodeGen/CellSPU/icmp64.ll [new file with mode: 0644]
test/CodeGen/CellSPU/stores.ll
test/CodeGen/CellSPU/struct_1.ll
test/CodeGen/CellSPU/trunc.ll
test/CodeGen/CellSPU/useful-harnesses/i32operations.c [new file with mode: 0644]
test/CodeGen/CellSPU/useful-harnesses/i64operations.c [new file with mode: 0644]