1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/lib/Target/Hexagon
Sanjay Patel 47f4c40e25 [x86] allow vector load narrowing with multi-use values
This is a long-awaited follow-up suggested in D33578. Since then, we've picked up even more
opportunities for vector narrowing from changes like D53784, so there are a lot of test diffs.
Apart from 2-3 strange cases, these are all wins.

I've structured this to be no-functional-change-intended for any target except for x86
because I couldn't tell if AArch64, ARM, and AMDGPU would improve or not. All of those
targets have existing regression tests (4, 4, 10 files respectively) that would be
affected. Also, Hexagon overrides the shouldReduceLoadWidth() hook, but doesn't show
any regression test diffs. The trade-off is deciding if an extra vector load is better
than a single wide load + extract_subvector.

For x86, this is almost always better (on paper at least) because we often can fold
loads into subsequent ops and not increase the official instruction count. There's also
some unknown -- but potentially large -- benefit from using narrower vector ops if wide
ops are implemented with multiple uops and/or frequency throttling is avoided.

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

llvm-svn: 346595
2018-11-10 20:05:31 +00:00
..
AsmParser Check for tied operands 2018-08-13 14:01:25 +00:00
Disassembler [Target] Untangle disassemblers 2018-09-10 12:53:46 +00:00
MCTargetDesc [Hexagon] Remove unintended fallthrough from MC duplex code 2018-11-01 19:59:27 +00:00
TargetInfo [Hexagon] Add a "generic" cpu 2018-06-26 18:44:05 +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 [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
Hexagon.h [Target] Untangle disassemblers 2018-09-10 12:53:46 +00:00
Hexagon.td [Hexagon] Implement noreturn optimization 2018-11-09 18:16:24 +00:00
HexagonAsmPrinter.cpp [Hexagon] Allow use of gather intrinsics even with no-packets 2018-08-07 20:33:47 +00:00
HexagonAsmPrinter.h [Hexagon] Clean up some code in HexagonAsmPrinter, NFC 2018-04-02 15:06:55 +00:00
HexagonBitSimplify.cpp [Hexagon] Check validity of register class when generating bitsplit 2018-08-30 22:26:43 +00:00
HexagonBitTracker.cpp [Hexagon] Simplify A4_rcmp[n]eqi R, 0 2018-07-30 14:28:02 +00:00
HexagonBitTracker.h [Hexagon] Simplify A4_rcmp[n]eqi R, 0 2018-07-30 14:28:02 +00:00
HexagonBlockRanges.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonBlockRanges.h
HexagonBranchRelaxation.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonCallingConv.td [Hexagon] Express calling conventions via .td file instead of hand-coding 2018-02-09 15:30:02 +00:00
HexagonCFGOptimizer.cpp
HexagonCommonGEP.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
HexagonConstExtenders.cpp Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +00:00
HexagonConstPropagation.cpp Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +00:00
HexagonCopyToCombine.cpp [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonDepArch.h [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonDepArch.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonDepIICHVX.td
HexagonDepIICScalar.td [Hexagon] Remove unused instruction itineraties, NFC 2018-06-29 13:55:28 +00:00
HexagonDepInstrFormats.td
HexagonDepInstrInfo.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonDepITypes.h
HexagonDepITypes.td
HexagonDepMappings.td [Hexagon] Add trap1 instruction 2018-03-01 21:54:08 +00:00
HexagonDepOperands.td
HexagonDepTimingClasses.h
HexagonEarlyIfConv.cpp [MI] Change the array of MachineMemOperand pointers to be 2018-08-16 21:30:05 +00:00
HexagonExpandCondsets.cpp [MI] Change the array of MachineMemOperand pointers to be 2018-08-16 21:30:05 +00:00
HexagonFixupHwLoops.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
HexagonFrameLowering.cpp [Hexagon] Fix some -Wunused-function with LLVM_DUMP_METHOD and -Wunused-variable 2018-11-09 19:24:48 +00:00
HexagonFrameLowering.h [Hexagon] Implement noreturn optimization 2018-11-09 18:16:24 +00:00
HexagonGenExtract.cpp
HexagonGenInsert.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +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 Don't create a temporary vector of loop blocks just to iterate over them. 2018-09-10 12:32:06 +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
HexagonIICScalar.td
HexagonInstrFormats.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonInstrFormatsV5.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonInstrFormatsV60.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonInstrFormatsV65.td
HexagonInstrInfo.cpp Remove FrameAccess struct from hasLoadFromStackSlot 2018-09-05 08:59:50 +00:00
HexagonInstrInfo.h Remove FrameAccess struct from hasLoadFromStackSlot 2018-09-05 08:59:50 +00:00
HexagonIntrinsics.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonIntrinsicsV5.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonIntrinsicsV60.td
HexagonISelDAGToDAG.cpp Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +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] Fix some -Wunused-function with LLVM_DUMP_METHOD and -Wunused-variable 2018-11-09 19:24:48 +00:00
HexagonISelLowering.cpp [x86] allow vector load narrowing with multi-use values 2018-11-10 20:05:31 +00:00
HexagonISelLowering.h [TargetLowering] Change TargetLoweringBase::getPreferredVectorAction to take an MVT instead of an EVT. NFC 2018-11-05 23:26:13 +00:00
HexagonISelLoweringHVX.cpp [SelectionDAG] Remove special methods for creating *_EXTEND_VECTOR_INREG nodes. Move asserts into getNode. 2018-11-04 02:10:18 +00:00
HexagonLoopIdiomRecognition.cpp Use llvm::{all,any,none}_of instead std::{all,any,none}_of. NFC 2018-10-19 06:12:02 +00:00
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h
HexagonMachineScheduler.cpp Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +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
HexagonMapAsm2IntrinV65.gen.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonMCInstLower.cpp
HexagonNewValueJump.cpp Fix up a few grammar issues. 2018-05-21 10:27:36 +00:00
HexagonOperands.td
HexagonOptAddrMode.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonOptimizeSZextends.cpp
HexagonPatterns.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonPatternsHVX.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonPatternsV65.td
HexagonPeephole.cpp
HexagonPseudo.td [Hexagon] Add missing assignment to Itinerary in Call_nr 2018-10-27 00:50:29 +00:00
HexagonRDFOpt.cpp
HexagonRegisterInfo.cpp [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonRegisterInfo.h [TargetRegisterInfo] Remove temporary hook enableMultipleCopyHints() 2018-10-05 14:23:11 +00:00
HexagonRegisterInfo.td [Hexagon] Remove -mhvx-double and the corresponding subtarget feature 2018-04-03 16:06:36 +00:00
HexagonSchedule.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonScheduleV5.td [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonScheduleV55.td
HexagonScheduleV60.td
HexagonScheduleV62.td
HexagonScheduleV65.td
HexagonSelectionDAGInfo.cpp
HexagonSelectionDAGInfo.h
HexagonSplitConst32AndConst64.cpp [Hexagon] Make sure not to use GP-relative addressing with PIC 2018-10-31 15:54:31 +00:00
HexagonSplitDouble.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
HexagonStoreWidening.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00
HexagonSubtarget.cpp [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
HexagonSubtarget.h [Hexagon] Implement noreturn optimization 2018-11-09 18:16:24 +00:00
HexagonTargetMachine.cpp [Hexagon] Expand vgather pseudos during packetization 2018-08-17 14:24:24 +00:00
HexagonTargetMachine.h
HexagonTargetObjectFile.cpp [Hexagon] Place globals with explicit .sdata section in small data 2018-11-09 17:31:22 +00:00
HexagonTargetObjectFile.h [Hexagon] Make sure not to use GP-relative addressing with PIC 2018-10-31 15:54:31 +00:00
HexagonTargetStreamer.h
HexagonTargetTransformInfo.cpp [TargetLowering] Change TargetLoweringBase::getPreferredVectorAction to take an MVT instead of an EVT. NFC 2018-11-05 23:26:13 +00:00
HexagonTargetTransformInfo.h [LV] Support vectorization of interleave-groups that require an epilog under 2018-10-31 09:57:56 +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
HexagonVExtract.cpp Inline variable only used within assert. 2018-01-26 21:55:13 +00:00
HexagonVLIWPacketizer.cpp Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +00:00
HexagonVLIWPacketizer.h [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
LLVMBuild.txt
RDFCopy.cpp [MachineOperand][Target] MachineOperand::isRenamable semantics changes 2018-02-23 18:25:08 +00:00
RDFCopy.h
RDFDeadCode.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00
RDFDeadCode.h
RDFGraph.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00
RDFGraph.h
RDFLiveness.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +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
RDFRegisters.h