llvm-6502/lib/Target/PowerPC
2004-08-19 21:00:12 +00:00
..
LICENSE.TXT
Makefile Rewrite targets/rules to generate files for just PowerPC or PPC{32,64} 2004-08-17 05:11:54 +00:00
PowerPCInstrInfo.h The PowerPCInstrInfo class has gone away. 2004-08-17 05:00:46 +00:00
PowerPCRegisterInfo.h PowerPCRegisterInfo no longer takes a bool to differentiate 32 vs 64 bits 2004-08-17 05:02:18 +00:00
PowerPCTargetMachine.h Move variables and methods which need PPC{32,64}* distinction to subclasses 2004-08-17 05:08:44 +00:00
PPC32.td PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
PPC32AsmPrinter.cpp Clean up floating point instruction selection. 2004-08-19 05:20:54 +00:00
PPC32ISelSimple.cpp This PHI has 4 additional operands, not 2. 2004-08-19 21:00:12 +00:00
PPC32JITInfo.h
PPC32RegisterInfo.td Re-fix hiding the Frame Pointer from the register allocator in functions 2004-08-17 07:17:44 +00:00
PPC64.td Use the appropriate 64-bit register description file. 2004-08-19 19:36:57 +00:00
PPC64AsmPrinter.cpp Correct character prepended to global symbols ('.'), use Mangler consistently 2004-08-19 16:33:56 +00:00
PPC64CodeEmitter.cpp
PPC64InstrInfo.cpp PowerPC 32-/64-bit split: Part II, 64-bit customizations on PowerPC 2004-08-17 04:57:37 +00:00
PPC64InstrInfo.h PowerPC 32-/64-bit split: Part II, 64-bit customizations on PowerPC 2004-08-17 04:57:37 +00:00
PPC64ISelSimple.cpp Fix more remaining 32-bit vestiges of PowerPC 2004-08-19 18:49:58 +00:00
PPC64JITInfo.h
PPC64RegisterInfo.cpp Wrap long lines. 2004-08-19 16:28:30 +00:00
PPC64RegisterInfo.h PowerPC 32-/64-bit split: Part II, 64-bit customizations on PowerPC 2004-08-17 04:57:37 +00:00
PPC64RegisterInfo.td Re-fix hiding the Frame Pointer from the register allocator in functions 2004-08-17 07:17:44 +00:00
PPC64TargetMachine.h PowerPC 32-/64-bit split: Part II, 64-bit customizations on PowerPC 2004-08-17 04:57:37 +00:00
PPC.h Consistently name passed with 32 or 64 in their name 2004-08-17 05:02:58 +00:00
PPCAsmPrinter.cpp Clean up floating point instruction selection. 2004-08-19 05:20:54 +00:00
PPCBranchSelector.cpp PowerPCInstrInfo has gone away, PPC32 and PPC64 share opcodes. 2004-08-17 04:58:50 +00:00
PPCCodeEmitter.cpp
PPCFrameInfo.h #include <map> is not necessary here 2004-08-17 05:09:39 +00:00
PPCInstrBuilder.h
PPCInstrFormats.td Convert all of the DForm_6* operations, which makes all of the Zimm16 users 2004-08-15 05:46:14 +00:00
PPCInstrInfo.cpp PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
PPCInstrInfo.h PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
PPCInstrInfo.td Clean up floating point instruction selection. 2004-08-19 05:20:54 +00:00
PPCJITInfo.h
PPCRegisterInfo.cpp PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
PPCRegisterInfo.h PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
PPCRegisterInfo.td Register classes are target-dependent 2004-08-17 05:10:31 +00:00
PPCTargetMachine.cpp No need for an `is64bit' flag 2004-08-17 05:06:47 +00:00
PPCTargetMachine.h PowerPC 32-/64-bit split: Part I, PPC32* bit files, adapted from former PowerPC* 2004-08-17 04:55:41 +00:00
README.txt Update the current state of the world 2004-08-16 05:06:43 +00:00

TODO:
* use stfiwx in float->int
* implement cast fp to bool
* implement algebraic shift right long by reg
* implement scheduling info
* implement powerpc-64 for darwin
* implement powerpc-64 for aix
* fix rlwimi generation to be use-and-def
* fix ulong to double:
  floatdidf assumes signed longs.  so if the high but of a ulong
  just happens to be set, you get the wrong sign.  The fix for this
  is to call cmpdi2 to compare against zero, if so shift right by one,
  convert to fp, and multiply by (add to itself).  the sequence would
  look like:
  {r3:r4} holds ulong a;
  li r5, 0
  li r6, 0 (set r5:r6 to ulong 0)
  call cmpdi2 ==> sets r3 <, =, > 0
  if r3 > 0
  call floatdidf as usual
  else
  shift right ulong a, 1 (we could use emitShift)
  call floatdidf
  fadd f1, f1, f1 (fp left shift by 1)
* setCondInst needs to know branchless versions of seteq/setne/etc
* cast elimination pass (uint -> sbyte -> short, kill the byte -> short)
* should hint to the branch select pass that it doesn't need to print the
  second unconditional branch, so we don't end up with things like:
	b .LBBl42__2E_expand_function_8_674	; loopentry.24
	b .LBBl42__2E_expand_function_8_42	; NewDefault
	b .LBBl42__2E_expand_function_8_42	; NewDefault

Currently failing tests that should pass:
* SingleSource
  `- Regression
  |  `- casts (ulong to fp failure)
  `- Benchmarks
  |  `- Shootout-C++ : most programs fail, miscompilations
* MultiSource
  |- Applications
  |  `- hbd: miscompilation
  |  `- d (make_dparser): miscompilation
  `- Benchmarks
     `- MallocBench/gs: miscompilation