1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/include/llvm/Target
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
..
CostTable.h Add a overload to CostTable which allows it to infer the size of the table. 2013-08-09 19:33:32 +00:00
Target.td [Stackmaps] Fix the ID type to be i64 also for stackmaps (as we claim in the documenation) 2014-02-12 22:17:10 +00:00
TargetCallingConv.h Implement inalloca codegen for x86 with the new inalloca design 2014-01-31 23:50:57 +00:00
TargetCallingConv.td LLVM-1163: AAPCS-VFP violation when CPRC allocated to stack 2014-02-07 11:19:53 +00:00
TargetFrameLowering.h [SystemZ] Clean up register scavenging code 2013-07-05 12:55:00 +00:00
TargetInstrInfo.h Added a size field to the stack map record to handle subregister spills. 2013-11-17 01:36:23 +00:00
TargetIntrinsicInfo.h
TargetItinerary.td
TargetJITInfo.h
TargetLibraryInfo.h SimplifyLibCalls: Push TLI through the exp2->ldexp transform. 2014-02-04 20:27:23 +00:00
TargetLowering.h move getNameWithPrefix and getSymbol to TargetMachine. 2014-02-19 20:30:41 +00:00
TargetLoweringObjectFile.h Add back r201608, r201622, r201624 and r201625 2014-02-19 17:23:20 +00:00
TargetMachine.h move getNameWithPrefix and getSymbol to TargetMachine. 2014-02-19 20:30:41 +00:00
TargetOpcodes.h Lower stackmap intrinsics directly to their target opcode in the DAG builder. 2013-10-31 17:18:24 +00:00
TargetOptions.h Make DisableIntegratedAS a TargetOption. 2014-02-21 03:13:54 +00:00
TargetRegisterInfo.h Provide a target override for the latest regalloc heuristic. 2014-02-27 21:37:33 +00:00
TargetSchedule.td Machine model comments. Explain a ProcessorUnit's BufferSize. 2013-12-05 17:55:53 +00:00
TargetSelectionDAG.td Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
TargetSelectionDAGInfo.h Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00
TargetSubtargetInfo.h Added temp flag -misched-bench for staging in default changes. 2013-09-26 05:53:35 +00:00