1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
Go to file
Chris Lattner 19eb0dad26 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.

llvm-svn: 74372
2009-06-27 04:16:01 +00:00
autoconf Add a configure test for pthread_getspecific, and use it when building ThreadLocal. 2009-06-25 23:10:26 +00:00
bindings Fix the Ocaml bindings for the ExecutionEngine: with the change to build 2009-06-24 21:09:18 +00:00
cmake CMake: add configure checks for pthread_rwlock_init and pthread_getspecific 2009-06-26 14:35:43 +00:00
docs Clarify how to configure llvm-gcc-4.2 for use with 2009-06-26 05:44:53 +00:00
examples make sure that JIT examples link in their appropriate target. 2009-06-17 16:48:44 +00:00
include Incorporate the insertion point into the key of SCEVExpander's CSE map. 2009-06-26 22:53:46 +00:00
lib Reimplement rip-relative addressing in the X86-64 backend. The new 2009-06-27 04:16:01 +00:00
projects remove dead makefile flags. 2009-06-24 05:29:56 +00:00
runtime Drop toy GC runtime. 2009-03-02 03:46:48 +00:00
test Reimplement rip-relative addressing in the X86-64 backend. The new 2009-06-27 04:16:01 +00:00
tools Indentation. 2009-06-26 06:57:16 +00:00
unittests Add a JITEventListener interface that gets called back when a new function is 2009-06-25 02:04:04 +00:00
utils NewNightlyTest.pl: Support -submit-aux with -no-submit (run that aux script, 2009-06-26 22:33:28 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +00:00
win32 Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00
Xcode Remove Stacker.html from Xcode project. 2008-10-14 23:23:59 +00:00
build-for-llvm-top.sh Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
CMakeLists.txt Start flushing out MCContext. 2009-06-23 22:01:43 +00:00
configure Add a configure test for pthread_getspecific, and use it when building ThreadLocal. 2009-06-25 23:10:26 +00:00
CREDITS.TXT Add myself to the list. 2009-06-23 17:03:23 +00:00
LICENSE.TXT Now that we have atomics support properly detected by configure, 2009-05-19 00:08:29 +00:00
llvm.spec.in * llvm.spec.in: update blurb 2007-07-13 09:48:29 +00:00
Makefile Introduce new headers whose inclusion forces linking and 2009-06-16 20:12:29 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Add a --enable-profiling option to configure to build Debug+Profile and 2009-04-17 14:49:22 +00:00
Makefile.rules Remove duplication. 2009-06-25 01:07:00 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt README.txt: test commit w/blank line appended 2009-03-23 21:00:45 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.