mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 03:23:01 +02:00
b3d988ed66
It is better to return arguments directly in registers if we are making a call rather than introducing expensive stack usage. In one of sample compile from one of Blender's many kernel variants, this fires on about ~20 different functions. Future improvements may be to recognize simple cases where the pointer is indexing a small array. This also fails when the store to the out argument is in a separate block from the return, which happens in a few of the Blender functions. This should also probably be using MemorySSA which might help with that. I'm not sure this is correct as a FunctionPass, but MemoryDependenceAnalysis seems to not work with a ModulePass. I'm also not sure where it should run.I think it should run before DeadArgumentElimination, so maybe either EP_CGSCCOptimizerLate or EP_ScalarOptimizerLate. llvm-svn: 309416
116 lines
3.3 KiB
CMake
116 lines
3.3 KiB
CMake
set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
|
|
|
|
tablegen(LLVM AMDGPUGenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM AMDGPUGenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM AMDGPUGenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM AMDGPUGenCallingConv.inc -gen-callingconv)
|
|
tablegen(LLVM AMDGPUGenSubtargetInfo.inc -gen-subtarget)
|
|
tablegen(LLVM AMDGPUGenIntrinsics.inc -gen-tgt-intrinsic)
|
|
tablegen(LLVM AMDGPUGenMCCodeEmitter.inc -gen-emitter)
|
|
tablegen(LLVM AMDGPUGenDFAPacketizer.inc -gen-dfa-packetizer)
|
|
tablegen(LLVM AMDGPUGenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM AMDGPUGenAsmMatcher.inc -gen-asm-matcher)
|
|
tablegen(LLVM AMDGPUGenDisassemblerTables.inc -gen-disassembler)
|
|
tablegen(LLVM AMDGPUGenMCPseudoLowering.inc -gen-pseudo-lowering)
|
|
if(LLVM_BUILD_GLOBAL_ISEL)
|
|
tablegen(LLVM AMDGPUGenRegisterBank.inc -gen-register-bank)
|
|
endif()
|
|
add_public_tablegen_target(AMDGPUCommonTableGen)
|
|
|
|
# List of all GlobalISel files.
|
|
set(GLOBAL_ISEL_FILES
|
|
AMDGPUCallLowering.cpp
|
|
AMDGPUInstructionSelector.cpp
|
|
AMDGPULegalizerInfo.cpp
|
|
AMDGPURegisterBankInfo.cpp
|
|
)
|
|
|
|
# Add GlobalISel files to the dependencies if the user wants to build it.
|
|
if(LLVM_BUILD_GLOBAL_ISEL)
|
|
set(GLOBAL_ISEL_BUILD_FILES ${GLOBAL_ISEL_FILES})
|
|
else()
|
|
set(GLOBAL_ISEL_BUILD_FILES"")
|
|
set(LLVM_OPTIONAL_SOURCES LLVMGlobalISel ${GLOBAL_ISEL_FILES})
|
|
endif()
|
|
|
|
|
|
add_llvm_target(AMDGPUCodeGen
|
|
AMDILCFGStructurizer.cpp
|
|
AMDGPUAliasAnalysis.cpp
|
|
AMDGPUAlwaysInlinePass.cpp
|
|
AMDGPUAnnotateKernelFeatures.cpp
|
|
AMDGPUAnnotateUniformValues.cpp
|
|
AMDGPUAsmPrinter.cpp
|
|
AMDGPUCodeGenPrepare.cpp
|
|
AMDGPUFrameLowering.cpp
|
|
AMDGPUTargetObjectFile.cpp
|
|
AMDGPUIntrinsicInfo.cpp
|
|
AMDGPUISelDAGToDAG.cpp
|
|
AMDGPULowerIntrinsics.cpp
|
|
AMDGPUMacroFusion.cpp
|
|
AMDGPUMCInstLower.cpp
|
|
AMDGPUMachineCFGStructurizer.cpp
|
|
AMDGPUMachineFunction.cpp
|
|
AMDGPUMachineModuleInfo.cpp
|
|
AMDGPUUnifyMetadata.cpp
|
|
AMDGPUOpenCLImageTypeLoweringPass.cpp
|
|
AMDGPUSubtarget.cpp
|
|
AMDGPUTargetMachine.cpp
|
|
AMDGPUTargetTransformInfo.cpp
|
|
AMDGPUISelLowering.cpp
|
|
AMDGPUInstrInfo.cpp
|
|
AMDGPUPromoteAlloca.cpp
|
|
AMDGPURegAsmNames.inc.cpp
|
|
AMDGPURegisterInfo.cpp
|
|
AMDGPURewriteOutArguments.cpp
|
|
AMDGPUUnifyDivergentExitNodes.cpp
|
|
GCNHazardRecognizer.cpp
|
|
GCNSchedStrategy.cpp
|
|
R600ClauseMergePass.cpp
|
|
R600ControlFlowFinalizer.cpp
|
|
R600EmitClauseMarkers.cpp
|
|
R600ExpandSpecialInstrs.cpp
|
|
R600FrameLowering.cpp
|
|
R600InstrInfo.cpp
|
|
R600ISelLowering.cpp
|
|
R600MachineFunctionInfo.cpp
|
|
R600MachineScheduler.cpp
|
|
R600OptimizeVectorRegisters.cpp
|
|
R600Packetizer.cpp
|
|
R600RegisterInfo.cpp
|
|
SIAnnotateControlFlow.cpp
|
|
SIDebuggerInsertNops.cpp
|
|
SIFixControlFlowLiveIntervals.cpp
|
|
SIFixSGPRCopies.cpp
|
|
SIFixVGPRCopies.cpp
|
|
SIFoldOperands.cpp
|
|
SIFrameLowering.cpp
|
|
SIInsertSkips.cpp
|
|
SIInsertWaits.cpp
|
|
SIInsertWaitcnts.cpp
|
|
SIInstrInfo.cpp
|
|
SIISelLowering.cpp
|
|
SILoadStoreOptimizer.cpp
|
|
SILowerControlFlow.cpp
|
|
SILowerI1Copies.cpp
|
|
SIMachineFunctionInfo.cpp
|
|
SIMachineScheduler.cpp
|
|
SIMemoryLegalizer.cpp
|
|
SIOptimizeExecMasking.cpp
|
|
SIPeepholeSDWA.cpp
|
|
SIRegisterInfo.cpp
|
|
SIShrinkInstructions.cpp
|
|
SIWholeQuadMode.cpp
|
|
GCNIterativeScheduler.cpp
|
|
GCNMinRegStrategy.cpp
|
|
GCNRegPressure.cpp
|
|
${GLOBAL_ISEL_BUILD_FILES}
|
|
)
|
|
|
|
add_subdirectory(AsmParser)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(Disassembler)
|
|
add_subdirectory(TargetInfo)
|
|
add_subdirectory(MCTargetDesc)
|
|
add_subdirectory(Utils)
|