llvm-6502/include/llvm
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
..
ADT Hexagon backend support 2011-12-12 21:14:40 +00:00
Analysis Change the Dominators recalculate() function to only rely on GraphTraits 2011-12-05 19:17:04 +00:00
Assembly Make headers standalone. 2011-11-14 17:45:03 +00:00
Bitcode Begin sketching out a bitcode verifier pass. Idea is to emit a .bc file and 2011-12-12 22:57:31 +00:00
CodeGen Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +00:00
Config configure, config.h.in: Regenerate. 2011-11-28 01:07:19 +00:00
DebugInfo DebugInfo: Add equality operators and default constructor to DILineInfo. 2011-09-21 01:13:16 +00:00
ExecutionEngine ExecutionEngine: refactor interface 2011-12-12 04:20:36 +00:00
MC The second part of support for generating dwarf for assembly source files. This 2011-12-09 18:09:40 +00:00
Object Fixed ObjectFile functions: 2011-11-29 17:40:10 +00:00
Support Hexagon backend support 2011-12-12 21:14:40 +00:00
TableGen Add NAME Member 2011-10-19 13:04:13 +00:00
Target Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +00:00
Transforms SplitBlockPredecessors uses ArrayRef instead of Data and Size. 2011-12-09 21:19:53 +00:00
Argument.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
Attributes.h Add the returns_twice attribute to LLVM. 2011-10-03 14:45:37 +00:00
AutoUpgrade.h remove autoupgrade support for really old-style debug info intrinsics. 2011-11-27 06:18:33 +00:00
BasicBlock.h Remove useless code. 2011-10-20 04:33:44 +00:00
CallGraphSCCPass.h
CallingConv.h Use X86_thiscall calling convention for Win64 as well. 2011-03-03 07:49:07 +00:00
CMakeLists.txt build/cmake: Use tblgen macro directly instead of llvm_tablegen, which just 2011-11-04 19:04:23 +00:00
Constant.h Implement Constant::isAllOnesValue(). Fix ConstantFolding to use the new api. 2011-08-24 20:18:38 +00:00
Constants.h Fold ConstantVector::isAllOnesValue into Constant::isAllOnesValue and simplify it. 2011-11-14 19:12:20 +00:00
DebugInfoProbe.h Introduce DebugInfoProbe. This is used to monitor how llvm optimizer is treating debugging information. 2011-03-10 00:21:25 +00:00
DefaultPasses.h Add a couple missing includes; found while analyzing LLVM headers. 2011-11-04 18:19:43 +00:00
DerivedTypes.h Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
Function.h Refactor code from inlining and globalopt that checks whether a function definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180. 2011-10-20 05:23:42 +00:00
GlobalAlias.h Remove DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS, folding its 2011-08-22 09:37:03 +00:00
GlobalValue.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
GlobalVariable.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
GVMaterializer.h
InitializePasses.h Kill off the LoopSplitter. It's not being used or maintained. 2011-12-06 01:57:59 +00:00
InlineAsm.h Encode register class constreaints in inline asm instructions. 2011-10-12 23:37:29 +00:00
InstrTypes.h Add some missing anchors. 2011-12-01 08:00:17 +00:00
Instruction.def Initial commit of the 'landingpad' instruction. 2011-08-12 20:24:12 +00:00
Instruction.h Push StringRefs through the metadata interface. 2011-12-06 11:50:26 +00:00
Instructions.h Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
IntrinsicInst.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
Intrinsics.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
Intrinsics.td Hexagon backend support 2011-12-12 21:14:40 +00:00
IntrinsicsARM.td Add support for ARM ldrexd/strexd intrinsics. They both use i32 register pairs 2011-05-28 04:07:29 +00:00
IntrinsicsCellSPU.td
IntrinsicsHexagon.td Hexagon backend support 2011-12-12 21:14:40 +00:00
IntrinsicsPowerPC.td
IntrinsicsPTX.td PTX: Add intrinsics to list of built-in intrinsics, which allows them to be 2011-04-20 15:37:17 +00:00
IntrinsicsX86.td Support for encoding all FMA4 instructions and tablegen patterns for all 2011-11-30 22:09:42 +00:00
IntrinsicsXCore.td Update IntrinsicsXCore.td with the normal LLVM notice at the top of the file. 2011-10-13 21:08:11 +00:00
LinkAllPasses.h All these arguments are default anyways. 2011-12-06 00:11:58 +00:00
LinkAllVMCore.h Missed a spot removing Alarm. 2010-12-07 18:50:33 +00:00
Linker.h Make it possible to use the linker without destroying the source module. This is so the source module can be linked to multiple other destination modules. For all that used LinkModules() before, they will continue to destroy the source module as before. 2011-10-11 00:24:54 +00:00
LLVMContext.h Add a pinned metadata name for fpaccuracy, and document it 2011-10-27 19:19:14 +00:00
Metadata.h Add dump method for debugging. 2011-12-09 23:18:34 +00:00
Module.h Remove the last improper use of getGlobalContext() from LLVM. 2011-08-13 01:04:44 +00:00
OperandTraits.h Remove DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS, folding its 2011-08-22 09:37:03 +00:00
Operator.h Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
Pass.h Devirtualize Pass::getPassID, overriding it isn't useful and it gets called a lot. 2011-11-24 21:14:11 +00:00
PassAnalysisSupport.h Add a couple missing includes; found while analyzing LLVM headers. 2011-11-04 18:19:43 +00:00
PassManager.h
PassManagers.h Reapply r138695. Fix PassManager stack depths. 2011-08-29 17:07:00 +00:00
PassRegistry.h
PassSupport.h Add Tsan annotations to the pass system. 2011-12-08 00:15:41 +00:00
SymbolTableListTraits.h
Type.h Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
Use.h Reinstate r133513 (reverted in r133700) with an additional fix for a 2011-06-23 09:09:15 +00:00
User.h Add some missing anchors. 2011-12-01 08:00:17 +00:00
Value.h Remove Value::getNameStr. It has been deprecated for a while and provides no additional value over getName(). 2011-11-15 18:30:12 +00:00
ValueSymbolTable.h