llvm-6502/include/llvm/CodeGen
Jakob Stoklund Olesen 7016cf66ee Allow <undef> flags on def operands as well as uses.
The <undef> flag says that a MachineOperand doesn't read its register,
or doesn't depend on the previous value of its register.

A full register def never depends on the previous register value.  A
partial register def may depend on the previous value if it is intended
to update part of a register.

For example:

  %vreg10:dsub_0<def,undef> = COPY %vreg1
  %vreg10:dsub_1<def> = COPY %vreg2

The first copy instruction defines the full %vreg10 register with the
bits not covered by dsub_0 defined as <undef>.  It is not considered a
read of %vreg10.

The second copy modifies part of %vreg10 while preserving the rest.  It
has an implicit read of %vreg10.

This patch adds a MachineOperand::readsReg() method to determine if an
operand reads its register.

Previously, this was modelled by adding a full-register <imp-def>
operand to the instruction.  This approach makes it possible to
determine directly from a MachineOperand if it reads its register.  No
scanning of MI operands is required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141124 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 21:49:33 +00:00
..
PBQP Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
Analysis.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
AsmPrinter.h Fix a FIXME by making GlobalVariable::getInitializer() return a 2011-06-19 18:37:11 +00:00
BinaryObject.h Merge System into Support. 2010-11-29 18:16:10 +00:00
CalcSpillWeights.h Move CalculateRegClass to MRI::recomputeRegClass. 2011-08-09 16:46:27 +00:00
CallingConvLower.h Provide an ARMCCState subclass of CCState so that ARM clients will always set 2011-06-10 20:59:24 +00:00
EdgeBundles.h Build the Hopfield network incrementally when splitting global live ranges. 2011-04-09 02:59:09 +00:00
FastISel.h FastISel: avoid function calls between the materialization of the constant and its use. 2011-08-18 22:06:10 +00:00
FunctionLoweringInfo.h Directly point debug info to the stack slot of the arugment, instead of trying to keep track of vreg in which it the arugment is copied. The LiveDebugVariable can keep track of variable's ranges. 2011-09-08 22:59:09 +00:00
GCMetadata.h Attach a DebugLoc to a GC point in order to get precise information in the JIT of a GC point. 2010-09-24 17:27:50 +00:00
GCMetadataPrinter.h Trailing whitespace. 2010-07-01 01:00:22 +00:00
GCs.h
GCStrategy.h
IntrinsicLowering.h Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call. 2011-01-08 01:24:27 +00:00
ISDOpcodes.h Add codegen support for vector select (in the IR this means a select 2011-09-06 19:07:46 +00:00
JITCodeEmitter.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
LatencyPriorityQueue.h Various bits of framework needed for precise machine-level selection 2010-12-24 05:03:26 +00:00
LexicalScopes.h Constify. 2011-08-12 18:18:02 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h There is only one register coalescer. Merge it into the base class and 2011-06-26 22:34:10 +00:00
LiveInterval.h Use getPrevSlot() instead of getPrevIndex(). 2011-09-15 15:31:49 +00:00
LiveIntervalAnalysis.h Dead code elimination may separate the live interval into multiple connected components. 2011-03-17 20:37:07 +00:00
LiveStackAnalysis.h Move getCommonSubClass() into TRI. 2011-09-30 22:18:51 +00:00
LiveVariables.h Silence a bunch (but not all) "variable written but not read" warnings 2011-08-12 14:54:45 +00:00
MachineBasicBlock.h Introduce MachineBranchProbabilityInfo class, which has similar API to 2011-06-16 20:22:37 +00:00
MachineBlockFrequencyInfo.h Add more constantness in BlockFrequencyInfo. 2011-08-03 21:30:57 +00:00
MachineBranchProbabilityInfo.h - Make BranchProbability constructor public. 2011-07-10 02:12:39 +00:00
MachineCodeEmitter.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
MachineCodeInfo.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineConstantPool.h Rename AddSelectionDAGCSEId() to addSelectionDAGCSEId(). 2011-09-27 20:59:33 +00:00
MachineDominators.h typoes 2010-09-10 22:25:58 +00:00
MachineFrameInfo.h Create and use an llvm.eh.sjlj.functioncontext intrinsic. 2011-09-28 03:36:43 +00:00
MachineFunction.h - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
MachineFunctionAnalysis.h Give MachineFunctionAnalysis a getPassName() implementation to make timing reports prettier. 2011-01-04 18:21:18 +00:00
MachineFunctionPass.h Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
MachineInstr.h Remove NumImplicitOps which is now unused. 2011-09-29 01:47:36 +00:00
MachineInstrBuilder.h - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
MachineJumpTableInfo.h Add explicit keywords. 2010-06-18 19:04:37 +00:00
MachineLoopInfo.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
MachineLoopRanges.h Enable loop splitting in RegAllocGreedy. 2010-12-17 23:16:32 +00:00
MachineMemOperand.h Merge System into Support. 2010-11-29 18:16:10 +00:00
MachineModuleInfo.h Doxygen-ize comments. No functionality change. 2011-10-04 21:25:01 +00:00
MachineModuleInfoImpls.h Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that 2010-03-10 22:34:10 +00:00
MachineOperand.h Allow <undef> flags on def operands as well as uses. 2011-10-04 21:49:33 +00:00
MachinePassRegistry.h Sundry dependent-name fixes flagged by clang++. 2009-12-17 23:49:16 +00:00
MachineRegisterInfo.h Move getCommonSubClass() into TRI. 2011-09-30 22:18:51 +00:00
MachineRelocation.h Merge System into Support. 2010-11-29 18:16:10 +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
ObjectCodeEmitter.h change EH related stuff (other than EH_LABEL) to use MCSymbol 2010-03-14 01:41:15 +00:00
Passes.h Remove X86-dependent stuff from SSEDomainFix. 2011-09-27 23:50:46 +00:00
ProcessImplicitDefs.h Place context in member variables instead of passing around pointers. 2011-03-14 20:57:14 +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
RegisterScavenging.h Teach the register scavenger to take subregs into account when finding a free register. 2011-03-05 00:20:19 +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 - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
ScheduleHazardRecognizer.h Convert -enable-sched-cycles and -enable-sched-hazard to -disable 2011-01-21 05:51:33 +00:00
SchedulerRegistry.h Add an ILP scheduler. This is a register pressure aware scheduler that's 2010-07-24 00:39:05 +00:00
ScoreboardHazardRecognizer.h - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
SelectionDAG.h Cleanup PromoteIntOp_EXTRACT_VECTOR_ELT and PromoteIntRes_SETCC. 2011-09-27 11:16:47 +00:00
SelectionDAGISel.h Recommit the fix for rdar://9289512 with a couple tweaks to 2011-04-22 21:59:37 +00:00
SelectionDAGNodes.h Relax the MemOperands on atomics a bit. Fixes -verify-machineinstrs failures for atomic laod/store on ARM. 2011-09-07 02:23:42 +00:00
SlotIndexes.h Fix typo. 2011-09-29 21:07:46 +00:00
TargetLoweringObjectFileImpl.h Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc. 2011-07-20 19:50:42 +00:00
ValueTypes.h Fix indenting. 2011-09-13 23:45:39 +00:00
ValueTypes.td Fix formatting. 2011-06-16 16:52:24 +00:00