llvm-6502/test
Evan Cheng 358dec5180 Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-15 08:28:29 +00:00
..
Analysis Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Archive
Assembler Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Bindings/Ocaml Nounwind is not valid for function return values. 2009-05-06 13:51:18 +00:00
Bitcode Don't remove aggregate-typed module level constants before encoding functions 2009-06-12 05:20:12 +00:00
BugPoint Fix regular expression. 2009-06-12 05:39:02 +00:00
CodeGen Part 1. 2009-06-15 08:28:29 +00:00
DebugInfo llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function. If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available. LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics. 2009-06-13 02:16:18 +00:00
ExecutionEngine Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Feature Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
FrontendAda Adjust this test for recent sroa improvements. 2009-03-12 11:56:12 +00:00
FrontendC Testcase for PR4332. 2009-06-14 22:22:42 +00:00
FrontendC++ Testcase for (llvm-gcc-4.2) 72442 (PR 4242). 2009-05-26 23:19:19 +00:00
FrontendFortran These tests are x86 specific. 2009-04-22 10:39:51 +00:00
FrontendObjC Test for llvm-gcc bug fixed by 70301. 2009-04-28 17:16:30 +00:00
FrontendObjC++ This is an objective-c test, not an objective-c++ one. 2008-10-06 18:42:48 +00:00
Integer Converted a1.ll to unittests. 2009-03-24 21:36:09 +00:00
lib In an XFAIL line, treat "XFAIL: foo*bar" as a regular expression to be matched 2009-06-12 05:18:32 +00:00
Linker Reimplement the old and horrible bison parser for .ll files with a nice 2009-01-02 07:01:27 +00:00
LLVMC The 'forward_as' property did not use its second argument. 2009-05-06 01:41:19 +00:00
Other Add new function attribute - noimplicitfloat 2009-06-05 21:57:13 +00:00
Scripts
TableGen Remove empty test (my DejaGNU doesn't like this) 2009-06-09 21:24:39 +00:00
Transforms fix testcase to properly check for the patch in r73195. 2009-06-15 05:46:02 +00:00
Verifier Dan noticed that the verifier wasn't thoroughly checking uses of 2009-05-29 19:39:36 +00:00
Makefile Add more ulimit limits, to catch more kinds of runaway behavior. 2009-04-23 00:28:31 +00:00
Makefile.tests
TestRunner.sh