llvm-6502/lib
Tom Stellard 19a99df130 R600: Fix scheduling of instructions that use the LDS output queue
The LDS output queue is accessed via the OQAP register.  The OQAP
register cannot be live across clauses, so if value is written to the
output queue, it must be retrieved before the end of the clause.
With the machine scheduler, we cannot statisfy this constraint, because
it lacks proper alias analysis and it will mark some LDS accesses as
having a chain dependency on vertex fetches.  Since vertex fetches
require a new clauses, the dependency may end up spiltting OQAP uses and
defs so the end up in different clauses.  See the lds-output-queue.ll
test for a more detailed explanation.

To work around this issue, we now combine the LDS read and the OQAP
copy into one instruction and expand it after register allocation.

This patch also adds some checks to the EmitClauseMarker pass, so that
it doesn't end a clause with a value still in the output queue and
removes AR.X and OQAP handling from the scheduler (AR.X uses and defs
were already being expanded post-RA, so the scheduler will never see
them).

Reviewed-by: Vincent Lejeune <vljn at ovi.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194755 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-15 00:12:45 +00:00
..
Analysis Added BlockFrequencyInfo::view for displaying the block frequency propagation graph via graphviz. 2013-11-14 02:27:46 +00:00
AsmParser [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic. 2013-11-08 23:28:16 +00:00
Bitcode Extract a bc attr parsing helper that returns Attribute::None on error 2013-11-12 01:31:00 +00:00
CodeGen When folding memory operands, preserve existing MachineMemOperands. 2013-11-14 23:45:04 +00:00
DebugInfo DebugInfo: Make pubnames header printing similar to unit header printing 2013-11-01 17:53:30 +00:00
ExecutionEngine Fixing a problem with iterator validity in RuntimeDyldImpl::resolveExternalSymbols 2013-11-11 19:55:10 +00:00
IR IR/GCOV.cpp: Use PRIu64 as format string with uint64_t. 2013-11-14 11:45:04 +00:00
IRReader [llvm-c] Expose IRReader interface 2013-11-06 09:21:15 +00:00
Linker Revert "Move copying of global initializers below the cloning of functions." 2013-11-09 00:43:18 +00:00
LTO Protect user-supplied runtime library functions in LTO 2013-11-12 21:44:01 +00:00
MC Don't mangle \n and " 2013-11-14 06:05:49 +00:00
Object Support for microMIPS branch instructions. 2013-11-04 14:53:22 +00:00
Option Use startswith_lower() where possible. 2013-11-04 19:22:50 +00:00
Support Recognize 0x0000 as a COFF file magic. 2013-11-14 22:09:08 +00:00
TableGen Fix most memory leaks in tablegen. 2013-10-31 04:07:41 +00:00
Target R600: Fix scheduling of instructions that use the LDS output queue 2013-11-15 00:12:45 +00:00
Transforms [asan] Poor man's coverage that works with ASan 2013-11-14 13:27:41 +00:00
CMakeLists.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
LLVMBuild.txt Move LTO support library to a component, allowing it to be tested 2013-09-24 23:52:22 +00:00
Makefile Reformat Makefile. No other changes. 2013-10-30 04:03:03 +00:00