llvm-6502/lib/Target/Mips
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
..
InstPrinter LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
MCTargetDesc LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
TargetInfo LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
CMakeLists.txt build/CMake: Finish removal of add_llvm_library_dependencies. 2011-11-29 19:25:30 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Mips MC object code emission improvements: 2011-11-11 22:58:42 +00:00
Mips64InstrInfo.td Rename WrapperPIC. It is now used for both pic and static. 2011-12-09 01:53:17 +00:00
Mips.h Added the infrastructute necessary for MIPS JIT support. Patch by Vladimir 2011-07-21 16:28:51 +00:00
Mips.td Change names for MIPS "generic" processors defined in Mips.td to match what GNU 2011-11-29 23:08:41 +00:00
MipsAsmPrinter.cpp Add bundle aware API for querying instruction properties and switch the code 2011-12-07 07:15:52 +00:00
MipsAsmPrinter.h This patch makes the following changes necessary for MIPS' direct code emission. 2011-11-23 22:19:28 +00:00
MipsCallingConv.td AnalyzeCallOperands function for N32/64. 2011-11-14 19:02:54 +00:00
MipsCodeEmitter.cpp Add bundle aware API for querying instruction properties and switch the code 2011-12-07 07:15:52 +00:00
MipsCondMov.td Final patch that completes old JIT support for Mips: 2011-10-18 17:50:36 +00:00
MipsDelaySlotFiller.cpp Add bundle aware API for querying instruction properties and switch the code 2011-12-07 07:15:52 +00:00
MipsEmitGPRestore.cpp Reverse order of operands of address operand mem so that the base operand comes 2011-07-07 18:57:00 +00:00
MipsExpandPseudo.cpp - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and 2011-06-28 19:10:37 +00:00
MipsFrameLowering.cpp Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MipsFrameLowering.h Mips64 aligns stack on 16-byte boundary. 2011-09-22 02:53:37 +00:00
MipsInstrFormats.td Use branches instead of jumps + variable cleanup. Testcase coming next. Patch by Jack Carter 2011-12-06 03:34:48 +00:00
MipsInstrFPU.td Various Mips64 floating point instruction patterns. 2011-11-07 21:38:58 +00:00
MipsInstrInfo.cpp Emit B (unconditional branch) when -relocation-model=pic and J (jump) when 2011-12-12 22:39:35 +00:00
MipsInstrInfo.h Emit B (unconditional branch) when -relocation-model=pic and J (jump) when 2011-12-12 22:39:35 +00:00
MipsInstrInfo.td Emit B (unconditional branch) when -relocation-model=pic and J (jump) when 2011-12-12 22:39:35 +00:00
MipsISelDAGToDAG.cpp Rename WrapperPIC. It is now used for both pic and static. 2011-12-09 01:53:17 +00:00
MipsISelLowering.cpp Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +00:00
MipsISelLowering.h Rename WrapperPIC. It is now used for both pic and static. 2011-12-09 01:53:17 +00:00
MipsJITInfo.cpp This patch handles unaligned loads and stores in Mips JIT. Mips backend 2011-11-08 12:47:11 +00:00
MipsJITInfo.h Added the infrastructute necessary for MIPS JIT support. Patch by Vladimir 2011-07-21 16:28:51 +00:00
MipsMachineFunction.h Remove variable that keeps the size of area used to save byval or variable 2011-11-14 18:56:20 +00:00
MipsMCInstLower.cpp Add a few moreLocal/Global R_MIPS_GOT related fixups and 2011-12-07 00:28:57 +00:00
MipsMCInstLower.h This patch makes the following changes necessary for MIPS' direct code emission. 2011-11-23 22:19:28 +00:00
MipsRegisterInfo.cpp Add register HWR29 numbering. Patch by Jack Carter 2011-12-06 03:34:36 +00:00
MipsRegisterInfo.h Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down 2011-07-18 20:57:22 +00:00
MipsRegisterInfo.td Add newline. 2011-12-07 23:26:03 +00:00
MipsRelocations.h Revert r141932, r141936 and r141937. 2011-10-14 17:16:39 +00:00
MipsSchedule.td Reverse unnecessary changes made in r129606 and r129608. There is no change in functionality. 2011-04-15 21:51:11 +00:00
MipsSelectionDAGInfo.cpp Reverse unnecessary changes made in r129606 and r129608. There is no change in functionality. 2011-04-15 21:51:11 +00:00
MipsSelectionDAGInfo.h Reverse unnecessary changes made in r129606 and r129608. There is no change in functionality. 2011-04-15 21:51:11 +00:00
MipsSubtarget.cpp Change names for MIPS "generic" processors defined in Mips.td to match what GNU 2011-11-29 23:08:41 +00:00
MipsSubtarget.h Set ABI if it hasn't been set on the command line. 2011-09-21 02:45:29 +00:00
MipsTargetMachine.cpp Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MipsTargetMachine.h Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MipsTargetObjectFile.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
MipsTargetObjectFile.h Reverse unnecessary changes made in r129606 and r129608. There is no change in functionality. 2011-04-15 21:51:11 +00:00