History log of /external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
19a99df130f5747da950faf4ca5170d71f05594c 15-Nov-2013 Tom Stellard <thomas.stellard@amd.com> 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
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
de28bdadff78ceea6bb05e23dc3b4cc92fa359ed 10-Oct-2013 Tom Stellard <thomas.stellard@amd.com> R600: Use StructurizeCFGPass for non SI targets

StructurizeCFG pass allows to make complex cfg reducible ; it allows a lot of
shader from shadertoy (which exhibits complex control flow constructs) to works
correctly with respect to CFG handling (and allow us to detect potential bug in
other part of the backend).

We provide a cmd line argument to disable the pass for debug purpose.

Patch by: Vincent Lejeune

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
c6c37d74a272f49f811fe747aa71f372600dfd9e 01-Oct-2013 Vincent Lejeune <vljn@ovi.com> R600: Put PRED_X instruction in its own clause

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
a0ec3f9b7b826b9b40b80199923b664bad808cce 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
f2cfef8172fd2eceb036b8caff50623a189ba2ff 09-Jul-2013 Vincent Lejeune <vljn@ovi.com> R600: Do not predicated basic block with multiple alu clause

Test is not included as it is several 1000 lines long.
To test this functionnality, a test case must generate at least 2 ALU clauses,
where an ALU clause is ~110 instructions long.

NOTE: This is a candidate for the stable branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
cedcfee405a22b245e869abe8609f094df34085a 28-Jun-2013 Tom Stellard <thomas.stellard@amd.com> R600: Add support for GROUP_BARRIER instruction

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
b5632b5b456db647b42239cbd4d8b58c82290c4e 07-Jun-2013 Bill Wendling <isanbard@gmail.com> Don't cache the instruction and register info from the TargetMachine, because
the internals of TargetMachine could change.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
e67a4afb5da59c02338622eea68e096ba143113f 05-Jun-2013 Vincent Lejeune <vljn@ovi.com> R600: Const/Neg/Abs can be folded to dot4

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
5c35290fa35ae234fed02496404cb0fc37e1c8a5 23-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Move passes from namespace llvm into anonymous namespaces. Sort includes while there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182594 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
4ed9917147b1d1f2616f7c941bbe6999b979f510 17-May-2013 Vincent Lejeune <vljn@ovi.com> R600: Relax some vector constraints on Dot4.

Dot4 now uses 8 scalar operands instead of 2 vectors one which allows register
coalescer to remove some unneeded COPY.
This patch also defines some structures/functions that can be used to handle
every vector instructions (CUBE, Cayman special instructions...) in a similar
fashion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
25c209e9a262b623deca60fb6b886907e22c941b 17-May-2013 Vincent Lejeune <vljn@ovi.com> R600: Some factorization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182123 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
5417223f98145d8e2de442da10ace621cae613de 03-Apr-2013 Vincent Lejeune <vljn@ovi.com> R600: Fix last ALU of a clause being emitted in a separate clause

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178675 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
dae2a20a56b28b4685249982a80a0043b7673e09 03-Apr-2013 Vincent Lejeune <vljn@ovi.com> R600: Factorize maximum alu per clause in a single location

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
795ecc36692feedc62260a19a8655f4934758689 03-Apr-2013 Vincent Lejeune <vljn@ovi.com> R600: Consider KILLGT as an ALU instruction

Mesa does not override llvm behavior wrt KILLGT anymore so llvm
has to handle KILLGT on its own.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp
8e59191eb8033133f5b2923d2056d4362af913ce 01-Apr-2013 Vincent Lejeune <vljn@ovi.com> R600: Emit CF_ALU and use true kcache register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp