| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 199826
|
|
|
|
| |
llvm-svn: 199825
|
|
|
|
|
|
|
| |
This way private memory does not over-write work group information
stored in GPRs 0 and 1.
llvm-svn: 199824
|
|
|
|
| |
llvm-svn: 199823
|
|
|
|
| |
llvm-svn: 199016
|
|
|
|
|
|
|
|
|
|
|
| |
v2: Add ftrunc->TRUNC pattern instead of replacing int_AMDGPU_trunc
v3: move ftrunc pattern next to TRUNC definition, it's available since R600
Patch By: Jan Vesely
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 197783
|
|
|
|
|
|
| |
They are failing in assertions.
llvm-svn: 197669
|
|
|
|
|
|
|
|
| |
Different sized address spaces should theoretically work
most of the time now, and since 64-bit add is currently
disabled, using more 32-bit pointers fixes some cases.
llvm-svn: 197659
|
|
|
|
|
|
| |
Use CHECK-LABEL, add an i64 version, check store instructions.
llvm-svn: 197293
|
|
|
|
| |
llvm-svn: 196960
|
|
|
|
| |
llvm-svn: 196923
|
|
|
|
| |
llvm-svn: 196922
|
|
|
|
| |
llvm-svn: 196634
|
|
|
|
| |
llvm-svn: 196467
|
|
|
|
| |
llvm-svn: 196121
|
|
|
|
|
| |
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195881
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SGPRs are spilled into VGPRs using the {READ,WRITE}LANE_B32 instructions.
v2:
- Fix encoding of Lane Mask
- Use correct register flags, so we don't overwrite the low dword
when restoring multi-dword registers.
v3:
- Register spilling seems to hang the GPU, so replace all shaders
that need spilling with a dummy shader.
v4:
- Fix *LANE definitions
- Change destination reg class for 32-bit SMRD instructions
v5:
- Remove small optimization that was crashing Serious Sam 3.
https://bugs.freedesktop.org/show_bug.cgi?id=68224
https://bugs.freedesktop.org/show_bug.cgi?id=71285
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195880
|
|
|
|
|
|
|
|
| |
Writing to the M0 register from an SMRD instruction hangs the GPU, so
we need to use the SGPR_32 register class, which does not include M0.
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195879
|
|
|
|
|
| |
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195878
|
|
|
|
|
|
|
|
| |
We were ignoring the ordered/onordered bits and also the signed/unsigned
bits of condition codes when lowering the DAG to MachineInstrs.
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195514
|
|
|
|
|
|
|
|
|
| |
The legalizer can now do this type of expansion for more
type combinations without loading and storing to and
from the stack.
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195398
|
|
|
|
|
|
|
| |
Moving into a VSrc doesn't always work, since it could be
replaced with an SGPR later.
llvm-svn: 195042
|
|
|
|
|
|
|
| |
No other SGPR operands are allowed, so if VCC is
used, move the other to a VGPR.
llvm-svn: 195041
|
|
|
|
|
|
|
|
| |
Test doesn't actually check the output. I need
to fix add i64 being matched for the addressing
calculations.
llvm-svn: 195040
|
|
|
|
| |
llvm-svn: 195034
|
|
|
|
| |
llvm-svn: 195031
|
|
|
|
|
|
|
| |
The ifPatternMatch() function was not correctly reporting the number
of matches in some cases.
llvm-svn: 195030
|
|
|
|
| |
llvm-svn: 195026
|
|
|
|
| |
llvm-svn: 195025
|
|
|
|
| |
llvm-svn: 194940
|
|
|
|
| |
llvm-svn: 194934
|
|
|
|
| |
llvm-svn: 194932
|
|
|
|
| |
llvm-svn: 194927
|
|
|
|
|
|
| |
This fixes a crash with GNOME settings manager.
llvm-svn: 194836
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is to avoid this transformation in some cases:
fold (conv (load x)) -> (load (conv*)x)
On architectures that don't natively support some vector
loads efficiently casting the load to a smaller vector of
larger types and loading is more efficient.
Patch by Micah Villmow.
llvm-svn: 194783
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
llvm-svn: 194755
|
|
|
|
|
|
| |
with the older version of the moveToVALU changes.
llvm-svn: 194682
|
|
|
|
|
|
|
| |
Private address space is emulated using the register file with
MOVRELS and MOVRELD instructions.
llvm-svn: 194626
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All shift operations will be selected as SALU instructions and then
if necessary lowered to VALU instructions in the SIFixSGPRCopies pass.
This allows us to do more operations on the SALU which will improve
performance and is also required for implementing private memory
using indirect addressing, since the private memory pointers must stay
in the scalar registers.
This patch includes some fixes from Matt Arsenault.
llvm-svn: 194625
|
|
|
|
| |
llvm-svn: 194547
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Print the range of registers used with a single letter prefix.
This better matches what the shader compiler produces and
is overall less obnoxious than concatenating all of the
subregister names together.
Instead of SGPR0, it will print s0. Instead of SGPR0_SGPR1,
it will print s[0:1] and so on.
There doesn't appear to be a straightforward way
to get the actual register info in the InstPrinter,
so this parses the generated name to print with the
new syntax.
The required test changes are pretty nasty, and register
matching regexes are now worse. Since there isn't a way to
add to a variable in FileCheck, some of the tests now don't
check the exact number of registers used, but I don't think that
will be a real problem.
llvm-svn: 194443
|
|
|
|
| |
llvm-svn: 194433
|
|
|
|
| |
llvm-svn: 194425
|
|
|
|
| |
llvm-svn: 194153
|
|
|
|
| |
llvm-svn: 193721
|
|
|
|
| |
llvm-svn: 193701
|
|
|
|
|
|
|
|
| |
v2:
- Fix LDS size calculation
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 193621
|
|
|
|
| |
llvm-svn: 193620
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes piglit:
- shaders/glsl-fs-texture2d-masked
- shaders/glsl-fs-texture2d-masked-4
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 193222
|
|
|
|
|
|
|
|
|
|
| |
The SelectionDAGBuilder was promoting vector kernel arguments to legal
types, but this won't work for R600 and SI since kernel arguments are
stored in memory and can't be promoted. In order to handle vector
arguments correctly we need to look at the original types from the LLVM IR
function.
llvm-svn: 193215
|