1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/lib/Target/Hexagon
Krzysztof Parzyszek 7b590043fd [Hexagon] Don't ignore mult-cycle latency information
The compiler was generating code that ends up ignoring a multiple
latency dependence between two instructions by scheduling the
intructions in back-to-back packets. 

The packetizer needs to end a packet if the latency of the current
current insruction and the source in the previous packet is
greater than 1 cycle. This case occurs when there is still room in
the current packet, but scheduling the instruction causes a stall.
Instead, the packetizer should start a new packet. Also, if the
current packet already contains a stall, then it is okay to add
another instruction to the packet that also causes a stall. This
occurs when there are no instructions that can be scheduled in
between the producer and consumer instructions.

This patch changes the latency for loads to 2 cycles from 3 cycles.
This change refects that a load only needs to be separated by
one extra packet to eliminate the stall.

Patch by Ikhlas Ajbar.

llvm-svn: 301954
2017-05-02 18:12:19 +00:00
..
AsmParser [Hexagon] Improve shuffle error reporting 2017-05-01 19:41:43 +00:00
Disassembler [Hexagon] Improve shuffle error reporting 2017-05-01 19:41:43 +00:00
MCTargetDesc [Hexagon] Formatting changes, NFC 2017-05-02 18:09:07 +00:00
TargetInfo
BitTracker.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
BitTracker.h [Hexagon] Cache reached blocks in bit tracker instead of scanning list 2017-04-19 15:08:31 +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 Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
HexagonAsmPrinter.h
HexagonBitSimplify.cpp [Hexagon] Only increment debug counters if debug option is present 2017-04-25 18:56:14 +00:00
HexagonBitTracker.cpp Use Argument::hasAttribute and AttributeList::ReturnIndex more 2017-04-28 18:37:16 +00:00
HexagonBitTracker.h
HexagonBlockRanges.cpp [Hexagon] Fix a latent problem with interpreting live-in lane masks 2017-04-14 16:21:55 +00:00
HexagonBlockRanges.h
HexagonBranchRelaxation.cpp
HexagonCFGOptimizer.cpp [Hexagon] Do not move a block if it is on a fall-through path 2017-04-28 21:54:11 +00:00
HexagonCommonGEP.cpp Drop graph_ prefix 2017-02-09 20:37:46 +00:00
HexagonConstPropagation.cpp
HexagonCopyToCombine.cpp [Hexagon] Make a couple of passes compliant with -opt-bisect-limit 2017-04-14 15:26:34 +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] Change the vector scaling for vector offsets 2017-04-06 17:28:21 +00:00
HexagonDepInstrFormats.td [Hexagon] Change the vector scaling for vector offsets 2017-04-06 17:28:21 +00:00
HexagonDepInstrInfo.td [Hexagon] Replace CVI_VM_CUR_LD type with CVI_VM_LD 2017-05-01 20:16:35 +00:00
HexagonDepITypes.h [Hexagon] Replace CVI_VM_CUR_LD type with CVI_VM_LD 2017-05-01 20:16:35 +00:00
HexagonDepITypes.td [Hexagon] Replace CVI_VM_CUR_LD type with CVI_VM_LD 2017-05-01 20:16:35 +00:00
HexagonDepMappings.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonDepOperands.td [Hexagon] Change the vector scaling for vector offsets 2017-04-06 17:28:21 +00:00
HexagonEarlyIfConv.cpp [Hexagon] Factor out some common code in HexagonEarlyIfConv.cpp, NFC 2017-04-03 17:26:40 +00:00
HexagonExpandCondsets.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
HexagonFixupHwLoops.cpp
HexagonFrameLowering.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
HexagonFrameLowering.h
HexagonGenExtract.cpp [APInt] Move isMask and isShiftedMask out of APIntOps and into the APInt class. Implement them without memory allocation for multiword 2017-04-03 16:34:59 +00:00
HexagonGenInsert.cpp Drop graph_ prefix 2017-02-09 20:37:46 +00:00
HexagonGenMux.cpp
HexagonGenPredicate.cpp
HexagonHardwareLoops.cpp [Hexagon] Start using regmasks on calls 2017-02-17 22:14:51 +00:00
HexagonHazardRecognizer.cpp
HexagonHazardRecognizer.h
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
HexagonInstrFormats.td [Hexagon] Remove unused validSubtarget TSFlags 2017-05-02 18:05:36 +00:00
HexagonInstrFormatsV4.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonInstrFormatsV60.td [Hexagon] Remove unused validSubtarget TSFlags 2017-05-02 18:05:36 +00:00
HexagonInstrInfo.cpp [Hexagon] Don't ignore mult-cycle latency information 2017-05-02 18:12:19 +00:00
HexagonInstrInfo.h [Hexagon] Remove unused validSubtarget TSFlags 2017-05-02 18:05:36 +00:00
HexagonIntrinsics.td [Hexagon] Add intrinsics for masked vector stores 2017-02-22 21:23:09 +00:00
HexagonIntrinsicsDerived.td
HexagonIntrinsicsV3.td
HexagonIntrinsicsV4.td
HexagonIntrinsicsV5.td
HexagonIntrinsicsV60.td [Hexagon] Replace instruction definitions with auto-generated ones 2017-02-10 15:33:13 +00:00
HexagonISelDAGToDAG.cpp [Hexagon] Refactor the DAG preprocessing code, NFC 2017-03-09 19:14:23 +00:00
HexagonISelLowering.cpp DAG: Make mayBeEmittedAsTailCall parameter const 2017-04-18 21:16:46 +00:00
HexagonISelLowering.h DAG: Make mayBeEmittedAsTailCall parameter const 2017-04-18 21:16:46 +00:00
HexagonLoopIdiomRecognition.cpp Kill off the old SimplifyInstruction API by converting remaining users. 2017-04-28 19:55:38 +00:00
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h
HexagonMachineScheduler.cpp [Hexagon] Update instruction types 2017-02-07 17:47:37 +00:00
HexagonMachineScheduler.h Fix typo and place comment close to its target 2017-04-27 14:38:21 +00:00
HexagonMapAsm2IntrinV62.gen.td [Hexagon] Introduce Hexagon V62 2017-02-10 23:46:45 +00:00
HexagonMCInstLower.cpp Revert "[APInt] Fix a few places that use APInt::getRawData to operate within the normal API." 2017-04-23 12:15:30 +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 [Hexagon] Generate proper offset in opt-addr-mode 2017-04-19 15:15:51 +00:00
HexagonOptimizeSZextends.cpp
HexagonPatterns.td [Hexagon] Change the vector scaling for vector offsets 2017-04-06 17:28:21 +00:00
HexagonPeephole.cpp
HexagonPseudo.td [Hexagon] Remove unused validSubtarget TSFlags 2017-05-02 18:05:36 +00:00
HexagonRDFOpt.cpp
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] Improving error reporting for writing to read only registers 2017-05-01 20:10:41 +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
HexagonSplitConst32AndConst64.cpp
HexagonSplitDouble.cpp [Hexagon] Remove unused variables 2017-03-31 21:03:59 +00:00
HexagonStoreWidening.cpp
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 [Hexagon] Generate proper offset in opt-addr-mode 2017-04-19 15:15:51 +00:00
HexagonTargetMachine.h
HexagonTargetObjectFile.cpp
HexagonTargetObjectFile.h
HexagonTargetStreamer.h
HexagonTargetTransformInfo.cpp
HexagonTargetTransformInfo.h
HexagonVectorPrint.cpp
HexagonVLIWPacketizer.cpp [Hexagon] Don't ignore mult-cycle latency information 2017-05-02 18:12:19 +00:00
HexagonVLIWPacketizer.h [Hexagon] Don't ignore mult-cycle latency information 2017-05-02 18:12:19 +00:00
LLVMBuild.txt [Hexagon] Require IPO library in Hexagon build 2017-01-26 23:03:22 +00:00
RDFCopy.cpp [RDF] Use faster version of findBlock 2017-04-19 15:11:23 +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
RDFGraph.cpp [RDF] No longer ignore implicit defs or uses on any instructions 2017-04-14 21:19:17 +00:00
RDFGraph.h [RDF] Switch NodeList to SmallVector from std::vector 2017-04-19 15:12:44 +00:00
RDFLiveness.cpp [RDF] Correctly calculate lane masks for defs 2017-04-28 21:57:53 +00:00
RDFLiveness.h [RDF] Implement Liveness::getNearestAliasedRef(Reg, Inst) 2017-03-10 22:42:17 +00:00
RDFRegisters.cpp [RDF] Cache register units for reg masks instead of recalculating them 2017-04-19 15:10:09 +00:00
RDFRegisters.h [RDF] Cache register units for reg masks instead of recalculating them 2017-04-19 15:10:09 +00:00