llvm-6502/include/llvm/CodeGen
Chandler Carruth 63974b2144 Initial CodeGen support for CTTZ/CTLZ where a zero input produces an
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.

Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.

Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146466 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-13 01:56:10 +00:00
..
PBQP Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
Analysis.h Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
AsmPrinter.h Teach our Dwarf emission to use the string pool. 2011-10-27 06:44: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
DFAPacketizer.h use space star instead of star space 2011-12-06 17:34:16 +00:00
EdgeBundles.h Twinify GraphWriter a little bit. 2011-11-15 16:26:38 +00:00
FastISel.h [fast-isel] Add support for selecting insertvalue. 2011-12-09 20:09:54 +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 Add a custom safepoint method, in order for language implementers to decide which machine instruction gets to be a safepoint. 2011-11-11 18:32:52 +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 Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +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 Delete the linear scan register allocator. 2011-11-12 22:39:45 +00:00
LiveInterval.h Rename SlotIndexes to match how they are used. 2011-11-13 20:45:27 +00:00
LiveIntervalAnalysis.h Delete the old spilling framework from LiveIntervalAnalysis. 2011-11-12 23:57:05 +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 First chunk of MachineInstr bundle support. 2011-12-06 22:12:01 +00:00
MachineBlockFrequencyInfo.h Make headers standalone. 2011-11-14 17:45:03 +00:00
MachineBranchProbabilityInfo.h Under the hood, MBPI is doing a linear scan of every successor every 2011-11-14 09:12:57 +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 Fix typo, reported by Eitan Adler! 2011-12-10 03:16:20 +00:00
MachineFunction.h Fix unclear wording. 2011-12-06 00:51:09 +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 Make MachineInstr instruction property queries more flexible. This change all 2011-12-08 19:23:10 +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 Make headers standalone. 2011-11-14 17:45:03 +00:00
MachineModuleInfo.h Add accessor method to check if the landing pad symbol has call site information. 2011-10-05 23:26:10 +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 Add MachineOperand IsInternalRead flag. 2011-12-07 00:22:07 +00:00
MachinePassRegistry.h Sundry dependent-name fixes flagged by clang++. 2009-12-17 23:49:16 +00:00
MachineRegisterInfo.h Admonish that MI is not IR and virtual registers have constraints. 2011-10-17 17:33:39 +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 Delete the linear scan register allocator. 2011-11-12 22:39:45 +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 Delete the top-down "Latency" scheduler. Top-down scheduling doesn't handle 2011-10-24 18:01:06 +00:00
ScoreboardHazardRecognizer.h - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
SelectionDAG.h Don't try to form pre/post-indexed loads/stores until after LegalizeDAG runs. Fixes PR11029. 2011-11-12 00:35:34 +00:00
SelectionDAGISel.h Enhance both TargetLibraryInfo and SelectionDAGBuilder so that the latter can use the former to prevent the formation of libm SDNode's when -fno-builtin is passed. 2011-12-08 22:15:21 +00:00
SelectionDAGNodes.h Add additional checking to ensure that MachineMemOperands are never set to null, which can happen in weird circumstances where target intrinsic hooks are implemented incorrectly. 2011-11-10 19:25:09 +00:00
SlotIndexes.h Rename SlotIndexes to match how they are used. 2011-11-13 20:45:27 +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 Rename MVT::untyped to MVT::Untyped to match similar nomenclature. 2011-11-16 01:02:57 +00:00
ValueTypes.td Fix formatting. 2011-06-16 16:52:24 +00:00