| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Tom Stellard <[email protected]>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This function assumes that lp_build_context::type is a vector type,
which is not true for r600 or radeonsi.
This fixes an assertion failure using glamor 2D accel.
|
|
|
|
|
|
|
| |
The original strategy for handling floating point loads, which was to
lower (f32 load) to (f32 bitcast (i32 load)) wasn't really working. The
main problem was that the DAG legalizer couldn't handle replacing a node
with two results (load) with a node with only one result (bitcast).
|
|
|
|
| |
The IMM bit is already being set in SICodeEmitter.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Thie BitExtract optimization folds a mask and shift operation together
into a single instruction (BFE_UINT).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's not optimal, but it's better than the register pressure scheduler
that was previously being used. The VLIW scheduler currently ignores
all the complicated instruction groups restrictions and just tries to
fill the instruction groups with as many instructions as possible.
Though, it does know enough not to put two trans only instructions in
the same group.
We are able to ignore the instruction group restrictions in the LLVM
backend, because the finalizer in r600_asm.c will fix any illegal
instruction groups the backend generates.
Enabling the VLIW scheduler improved the run time for a sha1 compute
shader by about 50%. I'm not sure what the impact will be for graphics
shaders. I tested Lightsmark with the VLIW scheduler enabled and the
framerate was about the same, but it might help apps that use really
big shaders.
|
|
|
|
| |
Signed-off-by: Tom Stellard <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Based on https://bugs.freedesktop.org/show_bug.cgi?id=50317#c4
Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=50316
https://bugs.freedesktop.org/show_bug.cgi?id=50317
Signed-off-by: Tom Stellard <[email protected]>
|
| |
|
| |
|
|
|
|
| |
We can use TargetLowering::getRegClassFor() instead.
|
| |
|
|
|
|
|
| |
Signed-off-by: Thomas Stellard <[email protected]>
Signed-off-by: Michel Dänzer <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
| |
I tried to update all the old Makefiles that included the default
config to be sure they had a default target if they didn't previously
have one, since this new all target will always point at it. Almost
everything had one.
Reviewed-by: Kenneth Graunke <[email protected]>
|
| |
|
| |
|
|
|
|
|
| |
On Cayman, the MULLO* instructions must fill all slots in an
instruction group.
|
| |
|
|
|
|
|
|
| |
We can't remove this pass yet, because we need it to convert AMDIL
registers in BRANCH* instructions, but we don't need it for
instruction conversion any more.
|
| |
|
|
|
|
|
| |
This enables the CFGStructurizer to work without the AMDIL::MOV*
instructions.
|
| |
|
|
|
|
|
| |
Instead create an S_ENDPGM instruction in the CodeEmitter and emit
it after all the other instructions.
|
|
|
|
| |
This obsoletes the AMDGPULowerInstruction pass.
|
|
|
|
| |
This obsoletes the R600LowerInstruction and SIPropagateImmReads passes.
|
|
|
|
|
|
|
|
|
| |
The VTX_READ instructions were using the ADDRParam ComplexPattern which
allows a load instruction's offset to be a register, but VTX_READ
instructions can only handle an immediate offset.
Also, the load_param pattern fragment had an erroneous return true;
statement that was causing it to match the wrong load instructions.
|
| |
|
|
|
|
|
|
| |
Kernel parameters can only be retrieved via vertex fetchs. Direct
parameters (i.e parameters stored in the constant buffer) are not
supported yet.
|
|
|
|
|
|
| |
Add some hooks to the R600,SI InstrInfo and RegisterInfo classes, so
that the CFGStructurizer pass can run without any relying on AMDIL
instructions.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We now model loading uses sgpr values with LLVM IR load instructions that
use the USER_SGPR address space.
The definition of the sgpr parameter to the use_sgpr() helper function
in radeonsi_shader.c has changed so that you can pass raw sgpr values
rather than having to divide the sgpr value you want to use by the dword
width of the type you want to load.
|
|
|
|
|
| |
We now emit LLVM load instructions for TGSI CONST register reads,
which are lowered in the backend to S_LOAD_DWORD* instructions.
|
|
|
|
|
|
|
| |
This function was causing compile errors in the tablegen'd code for
some intrinsic definitions. I don't think we really need this function,
so I'm removing the function body just as a temporary solution. I'll
look into removing the entire AMDILIntrinsicInfo class later.
|
| |
|
| |
|