mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-04 07:32:13 +00:00
e459c0bf65
This works around the limitation that PTX does not allow .param space loads/stores with arbitrary pointers. If a function has a by-val struct ptr arg, say foo(%struct.x *byval %d), then add the following instructions to the first basic block : %temp = alloca %struct.x, align 8 %tt1 = bitcast %struct.x * %d to i8 * %tt2 = llvm.nvvm.cvt.gen.to.param %tt2 %tempd = bitcast i8 addrspace(101) * to %struct.x addrspace(101) * %tv = load %struct.x addrspace(101) * %tempd store %struct.x %tv, %struct.x * %temp, align 8 The above code allocates some space in the stack and copies the incoming struct from param space to local space. Then replace all occurences of %d by %temp. Fixes PR21465. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221377 91177308-0d34-0410-b5e6-96231b3b80d8
40 lines
1.0 KiB
CMake
40 lines
1.0 KiB
CMake
set(LLVM_TARGET_DEFINITIONS NVPTX.td)
|
|
|
|
|
|
tablegen(LLVM NVPTXGenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM NVPTXGenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM NVPTXGenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM NVPTXGenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM NVPTXGenSubtargetInfo.inc -gen-subtarget)
|
|
add_public_tablegen_target(NVPTXCommonTableGen)
|
|
|
|
set(NVPTXCodeGen_sources
|
|
NVPTXFavorNonGenericAddrSpaces.cpp
|
|
NVPTXFrameLowering.cpp
|
|
NVPTXInstrInfo.cpp
|
|
NVPTXISelDAGToDAG.cpp
|
|
NVPTXISelLowering.cpp
|
|
NVPTXRegisterInfo.cpp
|
|
NVPTXSubtarget.cpp
|
|
NVPTXTargetMachine.cpp
|
|
NVPTXLowerAggrCopies.cpp
|
|
NVPTXutil.cpp
|
|
NVPTXAllocaHoisting.cpp
|
|
NVPTXAsmPrinter.cpp
|
|
NVPTXUtilities.cpp
|
|
NVVMReflect.cpp
|
|
NVPTXGenericToNVVM.cpp
|
|
NVPTXAssignValidGlobalNames.cpp
|
|
NVPTXPrologEpilogPass.cpp
|
|
NVPTXMCExpr.cpp
|
|
NVPTXReplaceImageHandles.cpp
|
|
NVPTXImageOptimizer.cpp
|
|
NVPTXLowerStructArgs.cpp
|
|
)
|
|
|
|
add_llvm_target(NVPTXCodeGen ${NVPTXCodeGen_sources})
|
|
|
|
add_subdirectory(TargetInfo)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(MCTargetDesc)
|