llvm-6502/include/llvm/CodeGen
Jakob Stoklund Olesen 4ba6916a98 Add a MachineOperand::isTied() flag.
While in SSA form, a MachineInstr can have pairs of tied defs and uses.
The tied operands are used to represent read-modify-write operands that
must be assigned the same physical register.

Previously, tied operand pairs were computed from fixed MCInstrDesc
fields, or by using black magic on inline assembly instructions.

The isTied flag makes it possible to add tied operands to any
instruction while getting rid of (some of) the inlineasm magic.

Tied operands on normal instructions are needed to represent predicated
individual instructions in SSA form. An extra <tied,imp-use> operand is
required to represent the output value when the instruction predicate is
false.

Adding a predicate to:

  %vreg0<def> = ADD %vreg1, %vreg2

Will look like:

  %vreg0<tied,def> = ADD %vreg1, %vreg2, pred:3, %vreg7<tied,imp-use>

The virtual register %vreg7 is the value given to %vreg0 when the
predicate is false. It will be assigned the same physreg as %vreg0.

This commit adds the isTied flag and sets it based on MCInstrDesc when
building an instruction. The flag is not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162774 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-28 18:34:41 +00:00
..
PBQP Fix a stub signature. HeuristicReduce should return a bool. 2012-08-23 19:06:23 +00:00
Analysis.h Fix a long standing tail call optimization bug. When a libcall is emitted 2012-04-10 01:51:00 +00:00
AsmPrinter.h Emit relocations for DW_AT_location entries on systems which need it. This is 2012-06-22 01:25:12 +00:00
CalcSpillWeights.h Move CalculateRegClass to MRI::recomputeRegClass. 2011-08-09 16:46:27 +00:00
CallingConvLower.h Convert more static tables of registers used by calling convention to uint16_t to reduce space. 2012-03-11 07:57:25 +00:00
DFAPacketizer.h Revert r158679 - use case is unclear (and it increases the memory footprint). 2012-06-22 20:27:13 +00:00
EdgeBundles.h Give a small negative bias to giant edge bundles. 2012-05-21 03:11:23 +00:00
FastISel.h Fall back to selection DAG isel for calls to builtin functions. 2012-08-03 04:06:28 +00:00
FunctionLoweringInfo.h Replace a DenseSet with SmallPtrSet. 2012-02-23 20:53:02 +00:00
GCMetadata.h Change comment into proper Doxygen member comment. 2012-06-22 16:00:48 +00:00
GCMetadataPrinter.h Trailing whitespace. 2010-07-01 01:00:22 +00:00
GCs.h
GCStrategy.h Convert comments to proper Doxygen comments. 2012-06-09 00:01:45 +00:00
IntrinsicLowering.h Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call. 2011-01-08 01:24:27 +00:00
ISDOpcodes.h Add SelectionDAG::getTargetIndex. 2012-08-07 22:37:05 +00:00
JITCodeEmitter.h Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:50:00 +00:00
LatencyPriorityQueue.h misched preparation: rename core scheduler methods for consistency. 2012-03-07 23:00:49 +00:00
LexicalScopes.h Guard private fields that are unused in Release builds with #ifndef NDEBUG. 2012-06-16 21:48:13 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h Codegen pass definition cleanup. No functionality. 2012-02-08 21:23:13 +00:00
LiveInterval.h Completely eliminate VNInfo flags. 2012-08-03 20:59:32 +00:00
LiveIntervalAnalysis.h Make the hasPHIKills flag a computed property. 2012-08-03 20:10:24 +00:00
LiveRangeEdit.h Allow LiveRangeEdit to be created with a NULL parent. 2012-05-19 05:25:46 +00:00
LiveStackAnalysis.h Move getCommonSubClass() into TRI. 2011-09-30 22:18:51 +00:00
LiveVariables.h Handle register masks in LiveVariables. 2012-01-21 00:58:53 +00:00
MachineBasicBlock.h Fix a quadratic algorithm in MachineBranchProbabilityInfo. 2012-08-20 22:01:38 +00:00
MachineBlockFrequencyInfo.h Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo. 2011-12-20 20:03:10 +00:00
MachineBranchProbabilityInfo.h Fix a quadratic algorithm in MachineBranchProbabilityInfo. 2012-08-20 22:01:38 +00:00
MachineCodeEmitter.h Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:50:00 +00:00
MachineCodeInfo.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineConstantPool.h Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:50:00 +00:00
MachineDominators.h Silence the new -Wempty-body warning. It appeared because the next statement 2012-02-14 22:17:14 +00:00
MachineFrameInfo.h Move [get|set]BasePtrStackAdjustment() from MachineFrameInfo to 2012-07-10 18:27:15 +00:00
MachineFunction.h Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed. 2012-08-22 06:07:19 +00:00
MachineFunctionAnalysis.h Sink codegen optimization level into MCCodeGenInfo along side relocation model 2011-11-16 08:38:26 +00:00
MachineFunctionPass.h Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
MachineInstr.h Add an MCID::Select flag and TII hooks for optimizing selects. 2012-08-16 23:11:47 +00:00
MachineInstrBuilder.h Add a new kind of MachineOperand: MO_TargetIndex. 2012-08-07 18:56:39 +00:00
MachineInstrBundle.h Remove 'static' from inline functions defined in header files. 2012-06-20 08:39:33 +00:00
MachineJumpTableInfo.h Tidy up. Whitespace. 2012-05-07 02:25:53 +00:00
MachineLoopInfo.h Add "extern template" declarations now that we use explicit instantiation. 2012-06-20 20:17:20 +00:00
MachineLoopRanges.h Enable loop splitting in RegAllocGreedy. 2010-12-17 23:16:32 +00:00
MachineMemOperand.h Teach CodeGen's version of computeMaskedBits to understand the range metadata. 2012-03-31 18:14:00 +00:00
MachineModuleInfo.h Properly emit _fltused with FastISel. Refactor to share code with SDAG. 2012-02-22 19:06:13 +00:00
MachineModuleInfoImpls.h
MachineOperand.h Add a MachineOperand::isTied() flag. 2012-08-28 18:34:41 +00:00
MachinePassRegistry.h Allow targets to select the default scheduler by name. 2012-04-19 01:34:10 +00:00
MachineRegisterInfo.h Reapply r161633-161634 "Partition use lists so defs always come before uses."" 2012-08-10 00:21:30 +00:00
MachineRelocation.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineScheduler.h Consistently use AnalysisID types in TargetPassConfig. 2012-07-02 19:48:37 +00:00
MachineSSAUpdater.h Combine the implementations of the core part of the SSAUpdater and 2010-05-04 23:18:19 +00:00
MachORelocation.h Merge System into Support. 2010-11-29 18:16:10 +00:00
Passes.h Add an experimental -early-live-intervals option. 2012-08-03 22:12:54 +00:00
PseudoSourceValue.h Typos. 2011-06-01 23:32:40 +00:00
RegAllocPBQP.h Add a hook for PBQP clients to run a custom pre-alloc pass to run prior to PBQP allocation. Patch by Arnaud Allard de Grandmaison. 2011-06-17 07:09:01 +00:00
RegAllocRegistry.h
RegisterClassInfo.h Move RegisterClassInfo.h. 2012-06-06 20:29:31 +00:00
RegisterPressure.h misched: When querying RegisterPressureTracker, always save current and max pressure. 2012-06-11 23:42:23 +00:00
RegisterScavenging.h Track reserved registers separately from RegsAvailable. 2012-02-23 01:13:32 +00:00
ResourcePriorityQueue.h misched preparation: rename core scheduler methods for consistency. 2012-03-07 23:00:49 +00:00
RuntimeLibcalls.h Add an intrinsic and codegen support for fused multiply-accumulate. The intent 2011-07-08 21:39:21 +00:00
ScheduleDAG.h Simplify the computeOperandLatency API. 2012-08-23 00:39:43 +00:00
ScheduleDAGInstrs.h Simplify the computeOperandLatency API. 2012-08-23 00:39:43 +00:00
ScheduleHazardRecognizer.h misched: Allow disabling scoreboard hazard checking for subtargets with a 2012-06-05 03:44:32 +00:00
SchedulerRegistry.h VLIW specific scheduler framework that utilizes deterministic finite automaton (DFA). 2012-02-01 22:13:57 +00:00
ScoreboardHazardRecognizer.h Revert r158679 - use case is unclear (and it increases the memory footprint). 2012-06-22 20:27:13 +00:00
SelectionDAG.h Add SelectionDAG::getTargetIndex. 2012-08-07 22:37:05 +00:00
SelectionDAGISel.h Make ISelPosition a local variable. 2012-04-20 22:08:50 +00:00
SelectionDAGNodes.h Remove extra MayLoad/MayStore flags from atomic_load/store. 2012-08-28 03:11:32 +00:00
SlotIndexes.h Fix a typo (the the => the) 2012-07-23 08:51:15 +00:00
TargetLoweringObjectFileImpl.h Move the support for using .init_array from ARM to the generic 2012-06-19 00:48:28 +00:00
ValueTypes.h Create isXBitVector methods in MVT and call them from EVT. This allows targets to call them with an MVT without needing to convert to EVT. 2012-08-11 23:31:18 +00:00
ValueTypes.td Add support for v16i32/v16i64 into the code generator. This is required for backends that use i32/i64 vectors for the getSetCCResultType function. 2012-07-26 21:22:00 +00:00