llvm-6502/lib/Target/R600
Tom Stellard 82d3d4524f R600: Proper insert S_WAITCNT instructions
Some instructions like memory reads/writes are executed
asynchronously, so we need to insert S_WAITCNT instructions
to block before accessing their results. Previously we have
just inserted S_WAITCNT instructions after each async
instruction, this patch fixes this and adds a prober
insertion pass.

Patch by: Christian König

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Christian König <deathsimple@vodafone.de>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172846 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-18 21:15:53 +00:00
..
InstPrinter
MCTargetDesc Renamed MCInstFragment to MCRelaxableFragment and added some comments. 2013-01-08 00:22:56 +00:00
TargetInfo
AMDGPU.h R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
AMDGPU.td
AMDGPUAsmPrinter.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDGPUAsmPrinter.h
AMDGPUCodeEmitter.h
AMDGPUConvertToISA.cpp
AMDGPUInstrInfo.cpp
AMDGPUInstrInfo.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDGPUInstrInfo.td
AMDGPUInstructions.td
AMDGPUIntrinsics.td
AMDGPUISelLowering.cpp
AMDGPUISelLowering.h
AMDGPUMCInstLower.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDGPUMCInstLower.h R600: BB operand support for SI 2012-12-17 15:14:54 +00:00
AMDGPURegisterInfo.cpp
AMDGPURegisterInfo.h
AMDGPURegisterInfo.td
AMDGPUStructurizeCFG.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDGPUSubtarget.cpp
AMDGPUSubtarget.h Remove redundant 'llvm::' qualifications 2013-01-13 16:01:15 +00:00
AMDGPUTargetMachine.cpp R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
AMDGPUTargetMachine.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDIL7XXDevice.cpp
AMDIL7XXDevice.h
AMDIL.h
AMDILBase.td
AMDILCFGStructurizer.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDILDevice.cpp
AMDILDevice.h Remove redundant 'llvm::' qualifications 2013-01-13 16:01:15 +00:00
AMDILDeviceInfo.cpp
AMDILDeviceInfo.h
AMDILDevices.h
AMDILEvergreenDevice.cpp
AMDILEvergreenDevice.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDILFrameLowering.cpp
AMDILFrameLowering.h
AMDILInstrInfo.td R600: New control flow for SI v2 2012-12-19 22:10:31 +00:00
AMDILIntrinsicInfo.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDILIntrinsicInfo.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDILIntrinsics.td
AMDILISelDAGToDAG.cpp
AMDILISelLowering.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AMDILNIDevice.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDILNIDevice.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDILPeepholeOptimizer.cpp Remove redundant 'llvm::' qualifications 2013-01-13 16:01:15 +00:00
AMDILRegisterInfo.td
AMDILSIDevice.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
AMDILSIDevice.h
CMakeLists.txt R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
LLVMBuild.txt
Makefile
Processors.td
R600Defines.h
R600ExpandSpecialInstrs.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
R600InstrInfo.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
R600InstrInfo.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
R600Instructions.td R600: Fix MAX_UINT definition 2012-12-21 20:12:01 +00:00
R600Intrinsics.td
R600ISelLowering.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
R600ISelLowering.h
R600MachineFunctionInfo.cpp
R600MachineFunctionInfo.h
R600RegisterInfo.cpp
R600RegisterInfo.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
R600RegisterInfo.td
R600Schedule.td
SIAnnotateControlFlow.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SIAssignInterpRegs.cpp
SIInsertWaits.cpp R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
SIInstrFormats.td
SIInstrInfo.cpp Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
SIInstrInfo.h R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
SIInstrInfo.td R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
SIInstructions.td R600: Optimize and cleanup KILL on SI 2013-01-18 21:15:50 +00:00
SIIntrinsics.td R600: New control flow for SI v2 2012-12-19 22:10:31 +00:00
SIISelLowering.cpp R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
SIISelLowering.h R600: Proper insert S_WAITCNT instructions 2013-01-18 21:15:53 +00:00
SILowerControlFlow.cpp R600: Optimize and cleanup KILL on SI 2013-01-18 21:15:50 +00:00
SILowerLiteralConstants.cpp Avoid setIsInsideBundle in Target/R600. 2012-12-13 00:59:38 +00:00
SIMachineFunctionInfo.cpp
SIMachineFunctionInfo.h
SIRegisterInfo.cpp
SIRegisterInfo.h
SIRegisterInfo.td R600: Remove unecessary VREG alignment. 2012-12-19 22:10:34 +00:00
SISchedule.td