llvm-project/llvm/lib/Target/Hexagon
Krzysztof Parzyszek d033d1fd82 Recommit r298282 with fixes for memory allocation/deallocation
[Hexagon] Recognize polynomial-modulo loop idiom again

Regain the ability to recognize loops calculating polynomial modulo
operation. This ability has been lost due to some changes in the
preceding optimizations. Add code to preprocess the IR to a form
that the pattern matching code can recognize.

llvm-svn: 298400
2017-03-21 17:09:27 +00:00
..
AsmParser [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
Disassembler [Hexagon] Implement @llvm.readcyclecounter() 2017-02-22 22:28:47 +00:00
MCTargetDesc [Hexagon] Updating inline saturate lanes for v62 version. 2017-03-16 00:35:28 +00:00
TargetInfo Move the global variables representing each Target behind accessor function 2016-10-09 23:00:34 +00:00
BitTracker.cpp [Hexagon] Allow setting register in BitVal without storing into map 2017-02-23 22:08:50 +00:00
BitTracker.h [Hexagon] Allow setting register in BitVal without storing into map 2017-02-23 22:08:50 +00:00
CMakeLists.txt [Hexagon] Remove unused .td files 2017-02-10 19:54:00 +00:00
Hexagon.h
Hexagon.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonAsmPrinter.cpp [Hexagon] Remove encoding bits from mapped instructions 2017-02-07 17:42:11 +00:00
HexagonAsmPrinter.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
HexagonBitSimplify.cpp [Hexagon] Fixes to the bitsplit generation 2017-03-09 22:02:14 +00:00
HexagonBitTracker.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
HexagonBitTracker.h [Hexagon, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-04 02:02:05 +00:00
HexagonBlockRanges.cpp [Hexagon] Defs and clobbers can overlap 2017-02-27 18:03:35 +00:00
HexagonBlockRanges.h [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-13 22:13:50 +00:00
HexagonBranchRelaxation.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-13 22:13:50 +00:00
HexagonCFGOptimizer.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
HexagonCommonGEP.cpp Drop graph_ prefix 2017-02-09 20:37:46 +00:00
HexagonConstPropagation.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-14 22:50:46 +00:00
HexagonCopyToCombine.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonDepArch.h [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonDepArch.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonDepDecoders.h [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonDepITypes.h [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonDepITypes.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonDepInstrFormats.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonDepInstrInfo.td [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonDepMappings.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonDepOperands.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonEarlyIfConv.cpp [Hexagon] Fix a condition in HexagonEarlyIfConv.cpp 2017-03-14 15:21:33 +00:00
HexagonExpandCondsets.cpp [Hexagon] Mark dead defs as <dead> in expand-condsets 2017-03-06 17:09:06 +00:00
HexagonFixupHwLoops.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
HexagonFrameLowering.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonFrameLowering.h [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-16 01:00:40 +00:00
HexagonGenExtract.cpp Drop graph_ prefix 2017-02-09 20:37:46 +00:00
HexagonGenInsert.cpp Drop graph_ prefix 2017-02-09 20:37:46 +00:00
HexagonGenMux.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
HexagonGenPredicate.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-16 01:00:40 +00:00
HexagonHardwareLoops.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonHazardRecognizer.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-17 01:09:05 +00:00
HexagonHazardRecognizer.h [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-17 01:09:05 +00:00
HexagonIICHVX.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonIICScalar.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonISelDAGToDAG.cpp [Hexagon] Refactor the DAG preprocessing code, NFC 2017-03-09 19:14:23 +00:00
HexagonISelLowering.cpp [Hexagon] Properly handle 'q' constraint in 128-byte vector mode 2017-03-02 17:50:24 +00:00
HexagonISelLowering.h [Hexagon] Patterns for CTPOP, BSWAP and BITREVERSE 2017-02-23 15:02:09 +00:00
HexagonInstrFormats.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonInstrFormatsV4.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonInstrFormatsV60.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonInstrInfo.cpp [Hexagon] Pick a dot-old instruction that matches the architecture 2017-03-06 17:03:16 +00:00
HexagonInstrInfo.h [Hexagon] Pick a dot-old instruction that matches the architecture 2017-03-06 17:03:16 +00:00
HexagonIntrinsics.td [Hexagon] Add intrinsics for masked vector stores 2017-02-22 21:23:09 +00:00
HexagonIntrinsicsDerived.td [Hexagon] Separate Hexagon subreg indices for different register classes 2016-11-09 16:19:08 +00:00
HexagonIntrinsicsV3.td
HexagonIntrinsicsV4.td [Hexagon] Rename operand/predicate names for unshifted integers 2016-11-01 19:02:10 +00:00
HexagonIntrinsicsV5.td [Hexagon] Use common Pat classes for selecting code for intrinsics 2016-04-22 18:05:55 +00:00
HexagonIntrinsicsV60.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonLoopIdiomRecognition.cpp Recommit r298282 with fixes for memory allocation/deallocation 2017-03-21 17:09:27 +00:00
HexagonMCInstLower.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h [Hexagon, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-04 02:02:05 +00:00
HexagonMachineScheduler.cpp [Hexagon] Update instruction types 2017-02-07 17:47:37 +00:00
HexagonMachineScheduler.h Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
HexagonMapAsm2IntrinV62.gen.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonNewValueJump.cpp [Hexagon] Avoid IMPLICIT_DEFs as new-value producers 2017-02-23 17:47:34 +00:00
HexagonOperands.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonOptAddrMode.cpp [RDF] Add recursion limit to getAllReachingDefsRec 2017-03-01 19:30:42 +00:00
HexagonOptimizeSZextends.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
HexagonPatterns.td [Hexagon] Fix instruction selection for sign-extending i1 to i64 2017-02-28 22:37:01 +00:00
HexagonPeephole.cpp [Hexagon] Separate Hexagon subreg indices for different register classes 2016-11-09 16:19:08 +00:00
HexagonPseudo.td [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonRDFOpt.cpp Remove unused lambda captures. NFC 2017-01-13 17:12:16 +00:00
HexagonRegisterInfo.cpp [Hexagon] Implement @llvm.readcyclecounter() 2017-02-22 22:28:47 +00:00
HexagonRegisterInfo.h [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonRegisterInfo.td [Hexagon] Implement @llvm.readcyclecounter() 2017-02-22 22:28:47 +00:00
HexagonSchedule.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonScheduleV4.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonScheduleV55.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonScheduleV60.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonScheduleV62.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonSelectionDAGInfo.cpp Make library calls sensitive to regparm module flag (Fixes PR3997). 2017-03-18 00:44:07 +00:00
HexagonSelectionDAGInfo.h [Hexagon] Add explicit default constructor for HexagonSelectionDAGInfo 2016-08-19 15:13:54 +00:00
HexagonSplitConst32AndConst64.cpp [Hexagon] Separate Hexagon subreg indices for different register classes 2016-11-09 16:19:08 +00:00
HexagonSplitDouble.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
HexagonStoreWidening.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-17 01:09:05 +00:00
HexagonSubtarget.cpp [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonSubtarget.h [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonTargetMachine.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
HexagonTargetMachine.h [Hexagon] Add Hexagon-specific loop idiom recognition pass 2017-01-26 21:41:10 +00:00
HexagonTargetObjectFile.cpp [Hexagon, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-04 02:02:05 +00:00
HexagonTargetObjectFile.h Target: Change various section classifiers in TargetLoweringObjectFile to take a GlobalObject. 2016-10-24 19:23:39 +00:00
HexagonTargetStreamer.h
HexagonTargetTransformInfo.cpp [Hexagon] Consider zext/sext of a load to i32 to be free 2016-08-19 14:22:07 +00:00
HexagonTargetTransformInfo.h Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
HexagonVLIWPacketizer.cpp [Hexagon] Pick a dot-old instruction that matches the architecture 2017-03-06 17:03:16 +00:00
HexagonVLIWPacketizer.h [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonVectorPrint.cpp [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-17 01:09:05 +00:00
LLVMBuild.txt [Hexagon] Require IPO library in Hexagon build 2017-01-26 23:03:22 +00:00
RDFCopy.cpp [RDF] Remove the map of reaching defs from copy propagation 2017-03-10 22:44:24 +00:00
RDFCopy.h [RDF] Remove the map of reaching defs from copy propagation 2017-03-10 22:44:24 +00:00
RDFDeadCode.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
RDFDeadCode.h [hexagon] Move BlockRanges and RDF stuff into the llvm namespace. 2016-05-27 10:06:40 +00:00
RDFGraph.cpp [RDF] Only access block live-ins when tracking liveness 2017-02-22 18:27:36 +00:00
RDFGraph.h [RDF] Implement Liveness::getNearestAliasedRef(Reg, Inst) 2017-03-10 22:42:17 +00:00
RDFLiveness.cpp [RDF] Implement Liveness::getNearestAliasedRef(Reg, Inst) 2017-03-10 22:42:17 +00:00
RDFLiveness.h [RDF] Implement Liveness::getNearestAliasedRef(Reg, Inst) 2017-03-10 22:42:17 +00:00
RDFRegisters.cpp [RDF] Support for partial structural aliases in RegisterAggr 2017-02-22 21:42:15 +00:00
RDFRegisters.h [RDF] Support for partial structural aliases in RegisterAggr 2017-02-22 21:42:15 +00:00