1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/include/llvm
Hal Finkel 593fc5537a Add an OutPatFrag TableGen class
Unfortunately, it is currently impossible to use a PatFrag as part of an output
pattern (the part of the pattern that has instructions in it) in TableGen.
Looking at the current implementation, this was clearly intended to work (there
is already code in place to expand patterns in the output DAG), but is
currently broken by the baked-in type-checking assumption and the order in which
the pattern fragments are processed (output pattern fragments need to be
processed after the instruction definitions are processed).

Fixing this is fairly simple, but requires some way of differentiating output
patterns from the existing input patterns. The simplest way to handle this
seems to be to create a subclass of PatFrag, and so that's what I've done here.

As a simple example, this allows us to write:

def crnot : OutPatFrag<(ops node:$in),
                       (CRNOR $in, $in)>;

def       : Pat<(not i1:$in),
                (crnot $in)>;

which captures the core use case: handling of repeated subexpressions inside
of complicated output patterns.

This will be used by an upcoming commit to the PowerPC backend.

llvm-svn: 202450
2014-02-28 00:26:56 +00:00
..
ADT fix crash in SmallDenseMap copy constructor 2014-02-25 23:35:13 +00:00
Analysis Constify the Optnone checks in IR passes. 2014-02-26 01:23:26 +00:00
AsmParser Move the LLVM IR asm writer header files into the IR directory, as they 2014-01-07 12:34:26 +00:00
Bitcode Make parseBitcodeFile return an ErrorOr<Module *>. 2014-01-15 01:08:23 +00:00
CodeGen Add missing const 2014-02-24 21:01:18 +00:00
Config Unconditionally include msan_interface.h when building with MSan. 2014-02-20 11:37:03 +00:00
DebugInfo llvm-dwarfdump: Support for debug_line.dwo section for file names for type units under fission. 2014-02-24 23:58:54 +00:00
ExecutionEngine Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00
IR Fix typo. Thanks to Roman Divacky for noticing it. 2014-02-26 17:05:38 +00:00
IRReader
LineEditor Introduce line editor library. 2014-01-31 23:46:14 +00:00
LTO LTO API: add lto_module_create_from_memory_with_path. 2014-02-10 23:26:14 +00:00
MC Add getter method to access Reloc::Model. 2014-02-27 18:39:53 +00:00
Object Object/COFF: Add a struct for the function table in .pdata. 2014-02-27 22:20:07 +00:00
Option
Support Re-apply r200853, which should not crash after Clang plugins were converted to loadable modules in r201256. 2014-02-27 14:47:37 +00:00
TableGen Typo fix. 2014-01-24 23:40:08 +00:00
Target Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
Transforms [CodeGenPrepare] Move CodeGenPrepare into lib/CodeGen. 2014-02-22 00:07:45 +00:00
AutoUpgrade.h
CMakeLists.txt The llvm_headers_do_not_build project needs to be excluded from the default build, otherwise it gets built (at least in Visual Studio 2013). 2014-01-28 16:07:10 +00:00
DebugInfo.h Add a debug info code generation level to the compile unit metadata 2014-02-27 01:24:56 +00:00
DIBuilder.h Add a debug info code generation level to the compile unit metadata 2014-02-27 01:24:56 +00:00
GVMaterializer.h
InitializePasses.h Make DataLayout a plain object, not a pass. 2014-02-25 17:30:31 +00:00
InstVisitor.h
LinkAllIR.h [cleanup] Move the Dominators.h and Verifier.h headers into the IR 2014-01-13 09:26:24 +00:00
LinkAllPasses.h Revert "Revert "Add Constant Hoisting Pass" (r200034)" 2014-01-25 02:02:55 +00:00
Linker.h Set the SuppressWarnings option on tool level and propagate to the library. 2014-02-20 22:19:24 +00:00
Pass.h Constify the Optnone checks in IR passes. 2014-02-26 01:23:26 +00:00
PassAnalysisSupport.h
PassManager.h
PassRegistry.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
PassSupport.h [opt][PassInfo] Allow opt to run passes that need target machine. 2014-01-16 21:44:34 +00:00