llvm-project/llvm/lib/Target/Hexagon
Nick Desaulniers 7ab164c4a4 [AsmPrinter] refactor to support %c w/ GlobalAddress'
Summary:
Targets like ARM, MSP430, PPC, and SystemZ have complex behavior when
printing the address of a MachineOperand::MO_GlobalAddress. Move that
handling into a new overriden method in each base class. A virtual
method was added to the base class for handling the generic case.

Refactors a few subclasses to support the target independent %a, %c, and
%n.

The patch also contains small cleanups for AVRAsmPrinter and
SystemZAsmPrinter.

It seems that NVPTXTargetLowering is possibly missing some logic to
transform GlobalAddressSDNodes for
TargetLowering::LowerAsmOperandForConstraint to handle with "i" extended
inline assembly asm constraints.

Fixes:
- https://bugs.llvm.org/show_bug.cgi?id=41402
- https://github.com/ClangBuiltLinux/linux/issues/449

Reviewers: echristo, void

Reviewed By: void

Subscribers: void, craig.topper, jholewinski, dschuff, jyknight, dylanmckay, sdardis, nemanjai, javed.absar, sbc100, jgravelle-google, eraman, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, jrtc27, atanasyan, jsji, llvm-commits, kees, tpimh, nathanchance, peter.smith, srhines

Tags: #llvm

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

llvm-svn: 359337
2019-04-26 18:45:04 +00:00
..
AsmParser Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Disassembler [Hexagon] Rename textually included file from .h to .inc 2019-01-31 21:58:42 +00:00
MCTargetDesc Use bitset for assembler predicates 2019-03-11 17:04:35 +00:00
TargetInfo Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BitTracker.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BitTracker.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
Hexagon.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Hexagon.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonAsmPrinter.cpp [AsmPrinter] refactor to support %c w/ GlobalAddress' 2019-04-26 18:45:04 +00:00
HexagonAsmPrinter.h [AsmPrinter] refactor to remove remove AsmVariant. NFC 2019-04-10 16:38:43 +00:00
HexagonBitSimplify.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBitTracker.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBitTracker.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBlockRanges.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBlockRanges.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBranchRelaxation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCFGOptimizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCallingConv.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCommonGEP.cpp [Hexagon] Remove indeterministic traversal order 2019-04-16 16:05:07 +00:00
HexagonConstExtenders.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonConstPropagation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCopyToCombine.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepArch.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepArch.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepDecoders.inc [Hexagon] Rename textually included file from .h to .inc 2019-01-31 21:58:42 +00:00
HexagonDepIICHVX.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepIICScalar.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepITypes.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepITypes.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepMapAsm2Intrin.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepMappings.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepOperands.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepTimingClasses.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonEarlyIfConv.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonExpandCondsets.cpp [Hexagon, SystemZ] Be super conservative about atomics 2019-02-24 00:45:09 +00:00
HexagonFixupHwLoops.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonFrameLowering.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
HexagonFrameLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonGenExtract.cpp [opaque pointer types] Pass function types to CallInst creation. 2019-02-01 20:43:25 +00:00
HexagonGenInsert.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonGenMux.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonGenPredicate.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonHardwareLoops.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonHazardRecognizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonHazardRecognizer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonIICHVX.td [Hexagon] Avoid creating 5-instruction packets with vgather pseudos 2019-03-06 17:43:50 +00:00
HexagonIICScalar.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelDAGToDAG.cpp [Hexagon] Split vector pairs for ISD::SIGN_EXTEND and ISD::ZERO_EXTEND 2019-02-20 15:05:19 +00:00
HexagonISelDAGToDAG.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelDAGToDAGHVX.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelLowering.cpp [TargetLowering] Add code size information on isFPImmLegal. NFC 2019-03-18 18:40:07 +00:00
HexagonISelLowering.h [TargetLowering] Add code size information on isFPImmLegal. NFC 2019-03-18 18:40:07 +00:00
HexagonISelLoweringHVX.cpp [Hexagon] Split vector pairs for ISD::SIGN_EXTEND and ISD::ZERO_EXTEND 2019-02-20 15:05:19 +00:00
HexagonInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrInfo.cpp [CodeGen] Add "const" to MachineInstr::mayAlias 2019-04-19 09:08:38 +00:00
HexagonInstrInfo.h [CodeGen] Add "const" to MachineInstr::mayAlias 2019-04-19 09:08:38 +00:00
HexagonIntrinsics.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonIntrinsicsV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonIntrinsicsV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonLoopIdiomRecognition.cpp [opaque pointer types] Pass function types to CallInst creation. 2019-02-01 20:43:25 +00:00
HexagonMCInstLower.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineFunctionInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineFunctionInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineScheduler.cpp Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
HexagonMachineScheduler.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMapAsm2IntrinV62.gen.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMapAsm2IntrinV65.gen.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonNewValueJump.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonOperands.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonOptAddrMode.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonOptimizeSZextends.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonPatterns.td Change some dyn_cast to more apropriate isa. NFC 2019-04-05 16:16:23 +00:00
HexagonPatternsHVX.td [Hexagon] Remove 'T' from HasVNN predicates, NFC 2018-06-20 13:56:09 +00:00
HexagonPatternsV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonPeephole.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonPseudo.td [Hexagon] Use misaligned load instead of trap0(#0) for __builtin_trap 2019-02-21 19:42:39 +00:00
HexagonRDFOpt.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonRegisterInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonRegisterInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonRegisterInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSchedule.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV55.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV62.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV66.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSelectionDAGInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSelectionDAGInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSplitConst32AndConst64.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSplitDouble.cpp [Hexagon, SystemZ] Be super conservative about atomics 2019-02-24 00:45:09 +00:00
HexagonStoreWidening.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSubtarget.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSubtarget.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetMachine.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetMachine.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetObjectFile.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetObjectFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetStreamer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetTransformInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetTransformInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonVExtract.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonVLIWPacketizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonVLIWPacketizer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonVectorLoopCarriedReuse.cpp [Hexagon] Fix reuse bug in Vector Loop Carried Reuse pass 2019-04-12 16:37:12 +00:00
HexagonVectorPrint.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFCopy.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFCopy.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFDeadCode.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFDeadCode.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFGraph.cpp Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFGraph.h Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFLiveness.cpp Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFLiveness.h Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFRegisters.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFRegisters.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00