llvm-6502/lib/Target/MBlaze
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
..
AsmParser LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
Disassembler LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +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 Next round of MC refactoring. This patch factor MC table instantiations, MC 2011-07-14 20:59:42 +00:00
MBlaze.h Refactor MBlaze target to separate MC routines from Target routines. 2011-07-25 20:18:18 +00:00
MBlaze.td Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00
MBlazeAsmPrinter.cpp Add bundle aware API for querying instruction properties and switch the code 2011-12-07 07:15:52 +00:00
MBlazeCallingConv.td Reworking the stack layout generated by the MBlaze backend. 2010-12-09 03:42:04 +00:00
MBlazeDelaySlotFiller.cpp Add bundle aware API for querying instruction properties and switch the code 2011-12-07 07:15:52 +00:00
MBlazeELFWriterInfo.cpp Fix improperly formed assert() call. 2011-10-17 20:22:59 +00:00
MBlazeELFWriterInfo.h Implement ELF object file writing support for the MBlaze backend. Its not perfect yet, but it works for many tests. 2010-11-21 22:06:28 +00:00
MBlazeFrameLowering.cpp Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MBlazeFrameLowering.h Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. 2011-01-10 12:39:04 +00:00
MBlazeInstrFormats.td Add several new instructions supported by the latest MicroBlaze. 2011-11-27 05:16:58 +00:00
MBlazeInstrFPU.td Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00
MBlazeInstrFSL.td Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00
MBlazeInstrInfo.cpp Fix a couple of 80 column violations. 2011-09-23 17:24:41 +00:00
MBlazeInstrInfo.h Refactor MBlaze target to separate MC routines from Target routines. 2011-07-25 20:18:18 +00:00
MBlazeInstrInfo.td Add several new instructions supported by the latest MicroBlaze. 2011-11-27 05:16:58 +00:00
MBlazeIntrinsicInfo.cpp Use a SmallVector for intrinsic argument types. 2011-10-17 21:33:26 +00:00
MBlazeIntrinsicInfo.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
MBlazeIntrinsics.td Adding working version of assembly parser for the MBlaze backend 2010-11-08 19:40:01 +00:00
MBlazeISelDAGToDAG.cpp rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for 2010-12-21 02:38:05 +00:00
MBlazeISelLowering.cpp Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +00:00
MBlazeISelLowering.h Add codegen support for vector select (in the IR this means a select 2011-09-06 19:07:46 +00:00
MBlazeMachineFunction.h Commit 122778 broke DWARF debug output when using the MBlaze backend. Fixed by overriding TargetFrameInfo::getFrameIndexOffset to take into account the new frame index information. 2011-01-05 17:34:20 +00:00
MBlazeMCInstLower.cpp Rename a couple of options and fix some simple typos. 2011-11-26 21:50:38 +00:00
MBlazeMCInstLower.h Recommit 116986 with capitalization typo fixed. 2010-10-21 03:57:26 +00:00
MBlazeRegisterInfo.cpp Refactoring fail. 2011-07-25 22:16:37 +00:00
MBlazeRegisterInfo.h Refactoring fail. 2011-07-25 22:16:37 +00:00
MBlazeRegisterInfo.td Use set operations instead of plain lists to enumerate register classes. 2011-06-15 23:28:14 +00:00
MBlazeRelocations.h Recommit 116986 with capitalization typo fixed. 2010-10-21 03:57:26 +00:00
MBlazeSchedule3.td Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
MBlazeSchedule5.td Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00
MBlazeSchedule.td Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00
MBlazeSelectionDAGInfo.cpp Implement a bunch more TargetSelectionDAGInfo infrastructure. 2010-05-11 17:31:57 +00:00
MBlazeSelectionDAGInfo.h Implement a bunch more TargetSelectionDAGInfo infrastructure. 2010-05-11 17:31:57 +00:00
MBlazeSubtarget.cpp Move TargetRegistry and TargetSelect from Target to Support where they belong. 2011-08-24 18:08:43 +00:00
MBlazeSubtarget.h Compute feature bits at time of MCSubtargetInfo initialization. 2011-07-07 07:07:08 +00:00
MBlazeTargetMachine.cpp Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MBlazeTargetMachine.h Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
MBlazeTargetObjectFile.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
MBlazeTargetObjectFile.h Adding working version of assembly parser for the MBlaze backend 2010-11-08 19:40:01 +00:00
TODO Add scheduling information for the MBlaze backend. 2011-04-11 22:31:52 +00:00