llvm-project/llvm/lib/Target/Hexagon
Krzysztof Parzyszek 3d671248ab [SelectionDAG] Provide default expansion for rotates
Implement default legalization of rotates: either in terms of the rotation
in the opposite direction (if legal), or in terms of shifts and ors.

Implement generating of rotate instructions for Hexagon. Hexagon only
supports rotates by an immediate value, so implement custom lowering of
ROTL/ROTR on Hexagon. If a rotate is not legal, use the default expansion.

Differential Revision: https://reviews.llvm.org/D47725

llvm-svn: 334497
2018-06-12 12:49:36 +00:00
..
AsmParser [Hexagon] Use addAliasForDirective for data directives 2018-05-17 13:21:18 +00:00
Disassembler Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
MCTargetDesc [MC] Pass MCSubtargetInfo to fixupNeedsRelaxation and applyFixup 2018-06-06 09:40:06 +00:00
TargetInfo Add backend name to Target to enable runtime info to be fed back into TableGen 2017-11-15 23:55:44 +00:00
BitTracker.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
BitTracker.h [Hexagon] Memoize instruction positions in BitTracker 2018-02-05 17:12:07 +00:00
CMakeLists.txt Consistently sort add_subdirectory calls in lib/Target/*/CMakeLists.txt 2018-04-23 12:49:34 +00:00
Hexagon.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
Hexagon.td [Hexagon] Remove unused flag from subtarget and (non)corresponding test 2018-05-15 16:13:52 +00:00
HexagonAsmPrinter.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
HexagonAsmPrinter.h [Hexagon] Clean up some code in HexagonAsmPrinter, NFC 2018-04-02 15:06:55 +00:00
HexagonBitSimplify.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonBitTracker.cpp [Hexagon] Fix alignment calculation of stack objects in Hexagon bit tracker 2018-02-20 14:29:43 +00:00
HexagonBitTracker.h [Hexagon] Better determination of register classes in bit tracker 2017-09-25 19:12:55 +00:00
HexagonBlockRanges.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonBlockRanges.h [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-28 22:27:31 +00:00
HexagonBranchRelaxation.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonCFGOptimizer.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
HexagonCallingConv.td [Hexagon] Express calling conventions via .td file instead of hand-coding 2018-02-09 15:30:02 +00:00
HexagonCommonGEP.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
HexagonConstExtenders.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonConstPropagation.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonCopyToCombine.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonDepArch.h [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepArch.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepIICHVX.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepIICScalar.td [Hexagon] Remove unused scheduling classes 2018-03-30 14:34:32 +00:00
HexagonDepITypes.h [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepITypes.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepInstrFormats.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepInstrInfo.td [Hexagon] Add trap1 instruction 2018-03-01 21:54:08 +00:00
HexagonDepMappings.td [Hexagon] Add trap1 instruction 2018-03-01 21:54:08 +00:00
HexagonDepOperands.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepTimingClasses.h [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonEarlyIfConv.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonExpandCondsets.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonFixupHwLoops.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
HexagonFrameLowering.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonFrameLowering.h Move TargetFrameLowering.h to CodeGen where it's implemented 2017-11-03 22:32:11 +00:00
HexagonGatherPacketize.cpp Rename LiveIntervalAnalysis.h to LiveIntervals.h 2017-12-13 02:51:04 +00:00
HexagonGenExtract.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-28 22:27:31 +00:00
HexagonGenInsert.cpp [Hexagon] Change std::sort to llvm::sort in response to r327219 2018-03-24 17:34:37 +00:00
HexagonGenMux.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
HexagonGenPredicate.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonHardwareLoops.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonHazardRecognizer.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonHazardRecognizer.h [Hexagon] Improve scheduling heuristic for large basic blocks 2018-03-20 14:54:01 +00:00
HexagonIICHVX.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonIICScalar.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonISelDAGToDAG.cpp [SelectionDAG] Expand UADDO/USUBO into ADD/SUBCARRY if legal for target 2018-06-01 14:00:32 +00:00
HexagonISelDAGToDAG.h [SelectionDAG] Expand UADDO/USUBO into ADD/SUBCARRY if legal for target 2018-06-01 14:00:32 +00:00
HexagonISelDAGToDAGHVX.cpp [Hexagon] Use vector align-left when shift amount fits in 3 bits 2018-05-30 13:45:34 +00:00
HexagonISelLowering.cpp [SelectionDAG] Provide default expansion for rotates 2018-06-12 12:49:36 +00:00
HexagonISelLowering.h [SelectionDAG] Provide default expansion for rotates 2018-06-12 12:49:36 +00:00
HexagonISelLoweringHVX.cpp [Hexagon] Split CTPOP of vector pairs 2018-06-06 18:03:29 +00:00
HexagonInstrFormats.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonInstrFormatsV4.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonInstrFormatsV60.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonInstrFormatsV65.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonInstrInfo.cpp [Hexagon] Late predicate producers cannot be used as dot-new sources 2018-06-11 18:45:52 +00:00
HexagonInstrInfo.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
HexagonIntrinsics.td [Hexagon] Add support to handle bit-reverse load intrinsics 2018-03-29 13:52:46 +00:00
HexagonIntrinsicsV3.td
HexagonIntrinsicsV4.td
HexagonIntrinsicsV5.td
HexagonIntrinsicsV60.td [Hexagon] Remove vectors of i64 from valid HVX types 2017-12-14 18:35:24 +00:00
HexagonLoopIdiomRecognition.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
HexagonMCInstLower.cpp [Hexagon] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-01 21:20:10 +00:00
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h
HexagonMachineScheduler.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonMachineScheduler.h [Hexagon] Add heuristic to exclude critical path cost for scheduling 2018-03-20 19:26:27 +00:00
HexagonMapAsm2IntrinV62.gen.td [Hexagon] Switch to parameterized register classes for HVX 2017-09-15 15:46:05 +00:00
HexagonMapAsm2IntrinV65.gen.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonNewValueJump.cpp Fix up a few grammar issues. 2018-05-21 10:27:36 +00:00
HexagonOperands.td [Hexagon] Reorganize and update instruction patterns 2017-10-20 19:33:12 +00:00
HexagonOptAddrMode.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonOptimizeSZextends.cpp
HexagonPatterns.td [SelectionDAG] Provide default expansion for rotates 2018-06-12 12:49:36 +00:00
HexagonPatternsHVX.td [Hexagon] Implement vector-pair zero as V6_vsubw_dv 2018-06-06 19:34:40 +00:00
HexagonPatternsV65.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonPeephole.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
HexagonPseudo.td [Hexagon] Implement vector-pair zero as V6_vsubw_dv 2018-06-06 19:34:40 +00:00
HexagonRDFOpt.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
HexagonRegisterInfo.cpp [Hexagon] Add guest registers 2018-03-01 17:03:26 +00:00
HexagonRegisterInfo.h [Hexagon] Add TargetRegisterInfo::getPointerRegClass() override 2018-02-21 22:27:07 +00:00
HexagonRegisterInfo.td [Hexagon] Remove -mhvx-double and the corresponding subtarget feature 2018-04-03 16:06:36 +00:00
HexagonSchedule.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonScheduleV4.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonScheduleV55.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonScheduleV60.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonScheduleV62.td [Hexagon] Use automatically-generated scheduling information for HVX 2017-05-03 20:10:36 +00:00
HexagonScheduleV65.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonSelectionDAGInfo.cpp
HexagonSelectionDAGInfo.h
HexagonSplitConst32AndConst64.cpp [Hexagon] Add a target feature to control using small data section 2018-05-14 21:01:56 +00:00
HexagonSplitDouble.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonStoreWidening.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonSubtarget.cpp [Hexagon] Remove unused flag from subtarget and (non)corresponding test 2018-05-15 16:13:52 +00:00
HexagonSubtarget.h [Hexagon] Remove unused function from subtarget 2018-05-15 16:32:24 +00:00
HexagonTargetMachine.cpp [Hexagon] Handle non-immediate constants in HexagonSplitDouble 2018-05-04 15:04:48 +00:00
HexagonTargetMachine.h (Re-landing) Expose a TargetMachine::getTargetTransformInfo function 2017-12-22 18:21:59 +00:00
HexagonTargetObjectFile.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonTargetObjectFile.h [Hexagon] Emit lookup tables in text section based on a flag 2017-07-18 15:31:37 +00:00
HexagonTargetStreamer.h
HexagonTargetTransformInfo.cpp [Hexagon] hexagon-autohvx was left on again 2018-04-20 19:45:49 +00:00
HexagonTargetTransformInfo.h [Hexagon] Initial instruction cost model for auto-vectorization 2018-04-13 20:46:50 +00:00
HexagonVExtract.cpp Inline variable only used within assert. 2018-01-26 21:55:13 +00:00
HexagonVLIWPacketizer.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonVLIWPacketizer.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
HexagonVectorLoopCarriedReuse.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonVectorPrint.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LLVMBuild.txt
RDFCopy.cpp [MachineOperand][Target] MachineOperand::isRenamable semantics changes 2018-02-23 18:25:08 +00:00
RDFCopy.h [Hexagon] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-01 21:20:10 +00:00
RDFDeadCode.cpp [Hexagon] Change std::sort to llvm::sort in response to r327219 2018-03-24 17:34:37 +00:00
RDFDeadCode.h
RDFGraph.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
RDFGraph.h [CodeGen] Use MachineOperand::print in the MIRPrinter for MO_Register. 2017-12-07 10:40:31 +00:00
RDFLiveness.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
RDFLiveness.h [Hexagon] fix 'must explicitly initialize the const member' error which clang 3.8 emits 2018-03-12 14:40:48 +00:00
RDFRegisters.cpp [CodeGen] Rename functions PrintReg* to printReg* 2017-11-28 12:42:37 +00:00
RDFRegisters.h Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00