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
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
BinaryObject.h
CalcSpillWeights.h Move CalculateRegClass to MRI::recomputeRegClass. 2011-08-09 16:46:27 +00:00
CallingConvLower.h
EdgeBundles.h
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
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
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
LatencyPriorityQueue.h
LexicalScopes.h Constify. 2011-08-12 18:18:02 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h Use getPrevSlot() instead of getPrevIndex(). 2011-09-15 15:31:49 +00:00
LiveIntervalAnalysis.h
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
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
MachineCodeInfo.h
MachineConstantPool.h Rename AddSelectionDAGCSEId() to addSelectionDAGCSEId(). 2011-09-27 20:59:33 +00:00
MachineDominators.h
MachineFrameInfo.h Create and use an llvm.eh.sjlj.functioncontext intrinsic. 2011-09-28 03:36:43 +00:00
MachineFunction.h
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h Remove NumImplicitOps which is now unused. 2011-09-29 01:47:36 +00:00
MachineInstrBuilder.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineLoopRanges.h
MachineMemOperand.h
MachineModuleInfo.h Doxygen-ize comments. No functionality change. 2011-10-04 21:25:01 +00:00
MachineModuleInfoImpls.h
MachineOperand.h Allow <undef> flags on def operands as well as uses. 2011-10-04 21:49:33 +00:00
MachinePassRegistry.h
MachineRegisterInfo.h Move getCommonSubClass() into TRI. 2011-09-30 22:18:51 +00:00
MachineRelocation.h
MachineSSAUpdater.h
MachORelocation.h
ObjectCodeEmitter.h
Passes.h Remove X86-dependent stuff from SSEDomainFix. 2011-09-27 23:50:46 +00:00
ProcessImplicitDefs.h
PseudoSourceValue.h
RegAllocPBQP.h
RegAllocRegistry.h
RegisterScavenging.h
RuntimeLibcalls.h Add an intrinsic and codegen support for fused multiply-accumulate. The intent 2011-07-08 21:39:21 +00:00
ScheduleDAG.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h Cleanup PromoteIntOp_EXTRACT_VECTOR_ELT and PromoteIntRes_SETCC. 2011-09-27 11:16:47 +00:00
SelectionDAGISel.h
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