[PowerPC] Skeletal FastISel support for 64-bit PowerPC ELF.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 30 Jul 2013 00:50:39 +0000 (00:50 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 30 Jul 2013 00:50:39 +0000 (00:50 +0000)
commit646cd7933b16b78443b06ce9ba2362e6695cb526
tree43ca3468a915043f86b1fdba851b592307c272f8
parent15d1b85094cf4c1520fdfd12db2111cd36a194db
[PowerPC] Skeletal FastISel support for 64-bit PowerPC ELF.

This is the first of many upcoming patches for PowerPC fast
instruction selection support.  This patch implements the minimum
necessary for a functional (but extremely limited) FastISel pass.  It
allows the table-generated portions of the selector to be created and
used, but in most cases selection will fall back to the DAG selector.
None of the block terminator instructions are implemented yet, and
most interesting instructions require some special handling.
Therefore there aren't any new test cases with this patch.  There will
be quite a few tests coming with future patches.

This patch adds the make/CMake support for the new code (including
tablegen -gen-fast-isel) and creates the FastISel object for PPC64 ELF
only.  It instantiates the necessary virtual functions
(TargetSelectInstruction, TargetMaterializeConstant,
TargetMaterializeAlloca, tryToFoldLoadIntoMI, and FastLowerArguments),
but of these, only TargetMaterializeConstant contains any useful
implementation.  This is present since the table-generated code
requires the ability to materialize integer constants for some
instructions.

This patch has been tested by building and running the
projects/test-suite code with -O0.  All tests passed with the
exception of a couple of long-running tests that time out using -O0
code generation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187399 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/CMakeLists.txt
lib/Target/PowerPC/Makefile
lib/Target/PowerPC/PPCFastISel.cpp [new file with mode: 0644]
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCISelLowering.h