| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
| |
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
|
|
| |
Add 32 bit lo and hi variants, and binary encodings.
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
| |
Fixes build bug introduced by
cebbdd4ac23725963207bf6f8fc7101150e6065f
|
|
|
|
|
| |
Hopefully, this will fix all the parallel make problems people have
been having.
|
|
|
|
| |
This fixes several hundred piglit tests.
|
|
|
|
|
| |
V_CVT_I32_F32 converts floats to signed integers, but we were using
V_CVT_F32_I32 which convertes signed integers to float.
|
|
|
|
|
| |
SREG_LIT_0 is a scalar register, so it can only be used in the
first argument of vector instructoins.
|
|
|
|
|
|
|
| |
The CodeEmitter was not setting the VGPR bit for src0, because the
instruction definition had the VCC register in the src0 slot, instead of
the actual src0 register. This has been fixed by moving the VCC
register to the end of the operand list.
|
|
|
|
|
|
| |
v2:-use camel coding style
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
|
| |
v2:-wrap line at 80 characters
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
| |
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
| |
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
| |
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
|
|
| |
The offset is unsigned, not signed.
Signed-off-by: Christian König <[email protected]>
Reviewed-by: Michel Dänzer <[email protected]>
|
|
|
|
|
|
|
| |
Immediate operands were previously handled in the CodeEmitter, but that
code was buggy and very confusing. This commit adds a pass that simplifies
the handling of immediate operands by spliting the loading of the
immediate into a sperate insruction that is bundled with the original.
|
| |
|
|
|
|
|
| |
This predicate incorrectly included SI GPUs, so some Evergreen
instructions were being emmitted on SI.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The Common Subexpression Elimination pass will not operate on
instructions with physical register defs, so we end up with
several redundant copies to M0 when using interpolation.
Adding a register class that only contains the M0 register allows
use to use a virtual register to represent M0, and makes it possible
for the Common Subexpression Elimination pass to remove the extra
copies.
|
|
|
|
|
| |
This flag makes these instructions candidates for the dead code
elimination and common subexpression elimination.
|
|
|
|
|
| |
This signals to the Dead Code Elimination pass that it is safe to
remove these instructions when they are dead.
|
| |
|
|
|
|
|
|
|
| |
Fixes piglit fp-kil and glBitmap() with radeonsi.
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
| |
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Fixes piglit fbo-blending-formats.
Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
Reviewed-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
|
| |
|
|
|
|
| |
This code was accidently dropped during the MCCodeEmitter conversion.
|
|
|
|
|
| |
This should fix an assertion failure that was happening in some compute
shaders.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This new operand replaces the MachineOperand flags in LLVM, which
will be deprecated soon. Eventually all instructions should have a flag
operand, but for now this operand has only been added to instructions
that need it.
|
|
|
|
|
| |
MachineOperand flags will be removed soon, so it is convienent to
have only one function that modifies them.
|
| |
|
| |
|
|
|
|
|
| |
This pass expends reduction instructions into a MachineInstrBundle that
contains 4 instruction, one for each instruction slot.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is required to make some of llvm's api calls
thread save. In particular the PassRegistry, which is
implicitly accessed while compiling shader programs.
The PassRegistry uses a mutex that is only active if
the llvm_is_multithreaded() returns true.
Calling llvm_start_multithreading() makes this happen
and by calling this function we try to make sure that
we can savely compile shaders in paralell.
Since there is also a call llvm_stop_multithreading()
in the llvm api, we cannot guarantee that this does
not get switched off while we are relying on this being
set, but for the easier use cases this fixes a race with
the radeon llvm compiler we have as of today.
Signed-off-by: Mathias Froehlich <[email protected]>
Signed-off-by: Tom Stellard <[email protected]>
|
| |
|