mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24745 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
.cvsignore | ||
DelaySlotFiller.cpp | ||
FPMover.cpp | ||
Makefile | ||
README.txt | ||
Sparc.h | ||
Sparc.td | ||
SparcAsmPrinter.cpp | ||
SparcInstrFormats.td | ||
SparcInstrInfo.cpp | ||
SparcInstrInfo.h | ||
SparcInstrInfo.td | ||
SparcRegisterInfo.cpp | ||
SparcRegisterInfo.h | ||
SparcRegisterInfo.td | ||
SparcTargetMachine.cpp | ||
SparcTargetMachine.h | ||
SparcV8ISelSimple.cpp |
Meta TODO list: 1. Convert all instructions to use autogeneration for asm strings. 2. Convert asmprinter to use lib/CodeGen/AsmPrinter for global init printing constant pool printing, etc. 3. Create a new DAG -> DAG instruction selector, by adding patterns to the instructions. 4. profit! SparcV8 backend skeleton ------------------------ This directory houses a 32-bit SPARC V8 backend employing an expander-based instruction selector. It is not yet functionally complete. Watch this space for more news coming soon! Current expected test failures ------------------------------ Here are the currently-expected SingleSource failures for V8 (Some C++ programs are crashing in libstdc++ at the moment; I'm not sure why.) (llc) SingleSource/Regression/C++/EH/exception_spec_test (llc) SingleSource/Regression/C++/EH/throw_rethrow_test Here are the currently-expected MultiSource failures for V8: (llc,cbe) MultiSource/Applications/d/make_dparser (llc,cbe) MultiSource/Applications/hexxagon (llc) MultiSource/Benchmarks/Fhourstones (llc,cbe) MultiSource/Benchmarks/McCat/03-testtrie (llc) MultiSource/Benchmarks/McCat/18-imp (llc,cbe) MultiSource/Benchmarks/Prolangs-C/bison/mybison (llc,cbe) MultiSource/Benchmarks/Prolangs-C/fixoutput (llc,cbe) MultiSource/Benchmarks/Prolangs-C/gnugo (llc,cbe) MultiSource/Benchmarks/Prolangs-C/plot2fig (llc,cbe) MultiSource/Benchmarks/Ptrdist/anagram (llc,cbe) MultiSource/Benchmarks/FreeBench/analyzer * DANGER * analyzer will run the machine out of VM (I don't know whether the following fail in cbe:) (llc) MultiSource/Benchmarks/FreeBench/distray (llc) MultiSource/Benchmarks/FreeBench/fourinarow (llc) MultiSource/Benchmarks/FreeBench/pifft (llc) MultiSource/Benchmarks/MallocBench/gs (llc) MultiSource/Benchmarks/Prolangs-C++/deriv1 (llc) MultiSource/Benchmarks/Prolangs-C++/deriv2 Known SPEC failures for V8 (probably not an exhaustive list): (llc) 134.perl (llc) 177.mesa (llc) 188.ammp -- FPMover bug? (llc) 256.bzip2 (llc,cbe) 130.li (native,llc,cbe) 126.gcc (native,llc,cbe) 255.vortex To-do ----- * support shl on longs (fourinarow needs this) * support casting 64-bit integers to FP types (fhourstones needs this) * support FP rem (call fmod) * Keep the address of the constant pool in a register instead of forming its address all of the time. * Change code like this: or %o0, %lo(.CPI_main_0), %o0 ld [%o0+0], %o0 into: ld [%o0+%lo(.CPI_main_0)], %o0 for constant pool access. * We can fold small constant offsets into the %hi/%lo references to constant pool addresses as well. * Directly support select instructions, and fold setcc instructions into them where possible. I think this is what afflicts the inner loop of Olden/tsp (hot block = tsp():no_exit.1.i, overall GCC/LLC = 0.03). * Generate fsqrtd for calls to sqrt() (~ 4% speedup on Olden/tsp). $Date$