mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 01:40:14 +01:00
ir3/a7xx: Fix load_global_ir3 with immediate offset
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26934>
This commit is contained in:
parent
45c71803f9
commit
513fa1873c
1 changed files with 9 additions and 6 deletions
|
|
@ -338,18 +338,21 @@ emit_intrinsic_load_global_ir3(struct ir3_context *ctx,
|
|||
|
||||
struct ir3_instruction *load;
|
||||
|
||||
bool const_offset_in_bounds = nir_src_is_const(intr->src[1]) &&
|
||||
nir_src_as_int(intr->src[1]) < (1 << 10) &&
|
||||
nir_src_as_int(intr->src[1]) > -(1 << 10);
|
||||
unsigned shift = ctx->compiler->gen >= 7 ? 2 : 0;
|
||||
bool const_offset_in_bounds =
|
||||
nir_src_is_const(intr->src[1]) &&
|
||||
nir_src_as_int(intr->src[1]) < ((1 << 10) >> shift) &&
|
||||
nir_src_as_int(intr->src[1]) > -((1 << 10) >> shift);
|
||||
|
||||
if (const_offset_in_bounds) {
|
||||
load = ir3_LDG(b, addr, 0, create_immed(b, nir_src_as_int(intr->src[1])),
|
||||
load = ir3_LDG(b, addr, 0,
|
||||
create_immed(b, nir_src_as_int(intr->src[1]) << shift),
|
||||
0, create_immed(b, dest_components), 0);
|
||||
} else {
|
||||
offset = ir3_get_src(ctx, &intr->src[1])[0];
|
||||
if (ctx->compiler->gen >= 7) {
|
||||
if (shift) {
|
||||
/* A7XX TODO: Move to NIR for it to be properly optimized? */
|
||||
offset = ir3_SHL_B(b, offset, 0, create_immed(b, 2), 0);
|
||||
offset = ir3_SHL_B(b, offset, 0, create_immed(b, shift), 0);
|
||||
}
|
||||
load =
|
||||
ir3_LDG_A(b, addr, 0, offset, 0, create_immed(b, 0), 0,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue