llvm-project/llvm/lib/Target/Hexagon
Alex Bradbury 79518b02cd [AtomicExpandPass]: Add a hook for custom cmpxchg expansion in IR
This involves changing the shouldExpandAtomicCmpXchgInIR interface, but I have 
updated the in-tree backends using this hook (ARM, AArch64, Hexagon) so they 
will see no functional change. Previously this hook returned bool, but it now 
returns AtomicExpansionKind.

This hook allows targets to select how a given cmpxchg is to be expanded. 
D48131 uses this to expand part-word cmpxchg to a target-specific intrinsic.

See my associated RFC for more info on the motivation for this change 
<http://lists.llvm.org/pipermail/llvm-dev/2018-June/123993.html>.

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

llvm-svn: 342550
2018-09-19 14:51:42 +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 [Target] Untangle disassemblers 2018-09-10 12:53:46 +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] Expand vgather pseudos during packetization 2018-08-17 14:24:24 +00:00
Hexagon.h [Target] Untangle disassemblers 2018-09-10 12:53:46 +00:00
Hexagon.td [Hexagon] Add a "generic" cpu 2018-06-26 18:44:05 +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
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 [Hexagon] Split large offsets into properly aligned addends 2018-09-10 18:49:16 +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] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonDepIICHVX.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonDepIICScalar.td [Hexagon] Remove unused instruction itineraties, NFC 2018-06-29 13:55:28 +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] Map ISD::TRAP to J2_trap0(#0) 2018-08-09 18:03:45 +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 [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] Don't access non-existent instructions 2018-08-31 22:10:04 +00:00
HexagonFrameLowering.h Move TargetFrameLowering.h to CodeGen where it's implemented 2017-11-03 22:32:11 +00:00
HexagonGenExtract.cpp
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 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 [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonIICScalar.td
HexagonISelDAGToDAG.cpp [SDAG] Remove the reliance on MI's allocation strategy for 2018-08-14 23:30: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] Improve the selection algorithm in scalarizeShuffle 2018-09-12 22:10:58 +00:00
HexagonISelLowering.cpp [AtomicExpandPass]: Add a hook for custom cmpxchg expansion in IR 2018-09-19 14:51:42 +00:00
HexagonISelLowering.h [AtomicExpandPass]: Add a hook for custom cmpxchg expansion in IR 2018-09-19 14:51:42 +00:00
HexagonISelLoweringHVX.cpp [Hexagon] Use shuffles when lowering "gather" shufflevectors 2018-09-12 22:14:52 +00:00
HexagonInstrFormats.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
HexagonInstrFormatsV4.td
HexagonInstrFormatsV60.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonInstrFormatsV65.td [Hexagon] Add support for Hexagon V65 2017-12-11 18:57:54 +00:00
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] Add support to handle bit-reverse load intrinsics 2018-03-29 13:52:46 +00:00
HexagonIntrinsicsV3.td
HexagonIntrinsicsV4.td
HexagonIntrinsicsV5.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
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
HexagonMachineFunctionInfo.cpp
HexagonMachineFunctionInfo.h
HexagonMachineScheduler.cpp ScheduleDAG: Cleanup dumping code; NFC 2018-09-19 00:23:35 +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
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 [Hexagon] Map ISD::TRAP to J2_trap0(#0) 2018-08-09 18:03:45 +00:00
HexagonPatternsHVX.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +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] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonRDFOpt.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
HexagonRegisterInfo.cpp [Hexagon] Avoid introducing calls into coalesced range of HVX vector pairs 2018-07-13 23:42:29 +00:00
HexagonRegisterInfo.h [Hexagon] Avoid introducing calls into coalesced range of HVX vector pairs 2018-07-13 23:42:29 +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
HexagonScheduleV55.td
HexagonScheduleV60.td
HexagonScheduleV62.td
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] Add a "generic" cpu 2018-06-26 18:44:05 +00:00
HexagonSubtarget.h [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonTargetMachine.cpp [Hexagon] Expand vgather pseudos during packetization 2018-08-17 14:24:24 +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
HexagonTargetStreamer.h
HexagonTargetTransformInfo.cpp [Hexagon] Enable interleaving in loop vectorizer 2018-08-22 20:15:04 +00:00
HexagonTargetTransformInfo.h [Hexagon] Enable interleaving in loop vectorizer 2018-08-22 20:15:04 +00:00
HexagonVExtract.cpp Inline variable only used within assert. 2018-01-26 21:55:13 +00:00
HexagonVLIWPacketizer.cpp [Hexagon] Don't packetize new-value stores with any other stores 2018-09-04 21:07:27 +00:00
HexagonVLIWPacketizer.h [Hexagon] Expand vgather pseudos during packetization 2018-08-17 14:24:24 +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
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