ebe69fe11e48d322045d5949c83283927a0d790b |
|
23-Mar-2015 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r230699. Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
37ed9c199ca639565f6ce88105f9e39e898d82d0 |
|
01-Dec-2014 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r222494. Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for rebase to r212749. Includes a cherry-pick of: r212948 - fixes a small issue with atomic calls Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Target/R600/R600MachineScheduler.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/R600MachineScheduler.cpp
|
ac779b8494ad3d2f2ea40cb566552c0fb1b17363 |
|
12-Sep-2013 |
Tom Stellard <thomas.stellard@amd.com> |
R600: Don't use trans slot for instructions that read LDS source registers This fixes some regressions in the piglit local memory store tests introduced by recent commits which made the scheduler aware of the trans slot. It's not possible to test this using lit, because there is no way to determine from the assembly dumps whether or not an instruction is in the trans slot. Even if this were possible, the test would be highly sensitive to changes in the scheduler and might generate confusing false negatives. Reviewed-by: Vincent Lejeune<vljn at ovi.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190574 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
bb25a01d232257b134f1f6a5810116cbb04b95b1 |
|
04-Sep-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Non vector only instruction can be scheduled on trans unit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189980 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
6b3f6a744a6d16c5d62dc3477186035e8a74a8e9 |
|
31-Jul-2013 |
Tom Stellard <thomas.stellard@amd.com> |
Revert "R600: Non vector only instruction can be scheduled on trans unit" This reverts commit 98ce62780ea7185ba710868bf83c8077e8d7f6d6. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187526 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
98ce62780ea7185ba710868bf83c8077e8d7f6d6 |
|
31-Jul-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Non vector only instruction can be scheduled on trans unit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
8f9fbd67c3f803f7397843fdf4b2a7b7ca10189e |
|
29-Jun-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Support schedule and packetization of trans-only inst git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
e3d4cbc7d25061441adafa47450a31571c87bf85 |
|
28-Jun-2013 |
Tom Stellard <thomas.stellard@amd.com> |
R600: Add local memory support via LDS Reviewed-by: Vincent Lejeune<vljn at ovi.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185162 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.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/R600MachineScheduler.cpp
|
843c6c2d0e83bcd52a215d768bacaa7b5ffe16a4 |
|
08-Jun-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Use a refined heuristic to choose when switching clause This is using a hint from AMD APP OpenCL Programming Guide with empirically tweaked parameters. I used Unigine Heaven 3.0 to determine best parameters on my system (i7 2600/Radeon 6950/Kernel 3.9.4) the benchmark : it went from 38.8 average fps to 39.6, which is ~3% gain. (Lightmark 2008.2 gain is much more marginal: from 537 to 539) There is no lit test provided as the parameter were determined empirically and it it would be nearly impossiblet to find a test program that check for optimal behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
3ff0abfaabc2c7f604d490be587b9c27e7c91ac0 |
|
07-Jun-2013 |
Tom Stellard <thomas.stellard@amd.com> |
R600: Rework subtarget info and remove AMDILDevice classes This should simplify the subtarget definitions and make it easier to add new ones. Reviewed-by: Vincent Lejeune <vljn@ovi.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
5f035d048e4ae04a30075e75d919fe023452ab0b |
|
06-Jun-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Remove leftover code in R600MachineScheduler.cpp Spotted by Benjamin Kramer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183413 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
512119770e9c32eb0b9e6196ce51917fb2e30d9f |
|
05-Jun-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Schedule copy from phys register at beginning of block It allows regalloc pass to remove them by trivially assigning associated reg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
ad7ecc65b1b1d6466ff035168c86f208a91aa1b4 |
|
05-Jun-2013 |
Tom Stellard <thomas.stellard@amd.com> |
R600: Make sure to schedule AR register uses and defs in the same clause Reviewed-by: vljn at ovi.com git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.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/R600MachineScheduler.cpp
|
76fc2d077f955174c14e658bf179620ef49dd792 |
|
17-May-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Use bottom up scheduling algorithm git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182129 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
21ca0b3ea45549f6f16c5b2d0e96ad49256baa1d |
|
17-May-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Use depth first scheduling algorithm It should increase PV substitution opportunities and lower gpr usage (pending computations path are "flushed" sooner) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182128 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
f63f85affa943d3257f91640b15d4e0d1e4a22d1 |
|
17-May-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Replace big texture opcode switch in scheduler by usesTC/usesVC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.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/R600MachineScheduler.cpp
|
dcfcf1d1ffe72d9c25564a2b8b53763a28648e97 |
|
17-May-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Factorize Fetch size limit inside AMDGPUSubTarget git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.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/R600MachineScheduler.cpp
|
3ab0ba3cd8a499ebcc7eda3d7585c5ab4e7f0711 |
|
14-Mar-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: Factorize code handling Const Read Port limitation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
3f179b59e53a8a6d5dfb509857d972461027b809 |
|
11-Mar-2013 |
NAKAMURA Takumi <geek4civic@gmail.com> |
R600MachineScheduler.cpp: Fix use cases of dbgs(). Don't include <iostream> here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|
62f38ca141f87ff3ed9334fbe6a5e1c45d40ca86 |
|
05-Mar-2013 |
Vincent Lejeune <vljn@ovi.com> |
R600: initial scheduler code This is a skeleton for a pre-RA MachineInstr scheduler strategy. Currently it only tries to expose more parallelism for ALU instructions (this also makes the distribution of GPR channels more uniform and increases the chances of ALU instructions to be packed together in a single VLIW group). Also it tries to reduce clause switching by grouping instruction of the same kind (ALU/FETCH/CF) together. Vincent Lejeune: - Support for VLIW4 Slot assignement - Recomputation of ScheduleDAG to get more parallelism opportunities Tom Stellard: - Fix assertion failure when trying to determine an instruction's slot based on its destination register's class - Fix some compiler warnings Vincent Lejeune: [v2] - Remove recomputation of ScheduleDAG (will be provided in a later patch) - Improve estimation of an ALU clause size so that heuristic does not emit cf instructions at the wrong position. - Make schedule heuristic smarter using SUnit Depth - Take constant read limitations into account Vincent Lejeune: [v3] - Fix some uninitialized values in ConstPair - Add asserts to ensure an ALU slot is always populated git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176498 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/R600/R600MachineScheduler.cpp
|