llvm-6502/test
Chris Lattner 18c5987fa3 Reimplement rip-relative addressing in the X86-64 backend. The new
implementation primarily differs from the former in that the asmprinter
doesn't make a zillion decisions about whether or not something will be
RIP relative or not.  Instead, those decisions are made by isel lowering
and propagated through to the asm printer.  To achieve this, we:

1. Represent RIP relative addresses by setting the base of the X86 addr
   mode to X86::RIP.
2. When ISel Lowering decides that it is safe to use RIP, it lowers to
   X86ISD::WrapperRIP.  When it is unsafe to use RIP, it lowers to
   X86ISD::Wrapper as before.
3. This removes isRIPRel from X86ISelAddressMode, representing it with
   a basereg of RIP instead.
4. The addressing mode matching logic in isel is greatly simplified.
5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate
   passed through various printoperand routines is gone now.
6. The various symbol printing routines in asmprinter now no longer infer
   when to emit (%rip), they just print the symbol.

I think this is a big improvement over the previous situation.  It does have
two small caveats though: 1. I implemented a horrible "no-rip" modifier for
the inline asm "P" constraint modifier.  This is a short term hack, there is
a much better, but more involved, solution.  2. I had to xfail an 
-aggressive-remat testcase because it isn't handling the use of RIP in the
constant-pool reading instruction.  This specific test is easy to fix without
-aggressive-remat, which I intend to do next.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74372 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-27 04:16:01 +00:00
..
Analysis Add a testcase demoing some of ScalarEvolution's new trip count logic. 2009-06-24 01:22:30 +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 Reimplement rip-relative addressing in the X86-64 backend. The new 2009-06-27 04:16:01 +00:00
DebugInfo upgrade 2009-06-23 22:11:37 +00:00
ExecutionEngine Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Feature Let's ignore MDStrings also! 2009-06-26 02:26:12 +00:00
FrontendAda Adjust this test for recent sroa improvements. 2009-03-12 11:56:12 +00:00
FrontendC The correct values here (as defined by gcc-4.2) are 2009-06-23 18:42:26 +00:00
FrontendC++ Testcase for (llvm-gcc) 73873. Usually 2009-06-22 04:47:32 +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
MC/AsmParser MC: Parse .org directives. 2009-06-25 22:44:51 +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 Add some testcases for some of the recent ScalarEvolution bug fixes. 2009-06-26 22:54:11 +00:00
Verifier Dan noticed that the verifier wasn't thoroughly checking uses of 2009-05-29 19:39:36 +00:00
Makefile Clarify how to configure llvm-gcc-4.2 for use with 2009-06-26 05:44:53 +00:00
Makefile.tests
TestRunner.sh