mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 06:30:11 +01:00
aco/gfx11: use v_cvt_i32_i16/v_cvt_u32_u16
fossil-db (gfx1100): Totals from 52753 (39.07% of 135032) affected shaders: CodeSize: 153603860 -> 153163384 (-0.29%) Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19933>
This commit is contained in:
parent
8f0177b334
commit
ce5838599d
2 changed files with 8 additions and 1 deletions
|
|
@ -1478,6 +1478,8 @@ do_pack_2x16(lower_context* ctx, Builder& bld, Definition def, Operand lo, Opera
|
|||
/* move lo and zero high bits */
|
||||
if (lo.physReg().byte() == 2)
|
||||
bld.vop2(aco_opcode::v_lshrrev_b32, def_lo, Operand::c32(16u), lo);
|
||||
else if (ctx->program->gfx_level >= GFX11)
|
||||
bld.vop1(aco_opcode::v_cvt_u32_u16, def, lo);
|
||||
else
|
||||
bld.vop2(aco_opcode::v_and_b32, def_lo, Operand::c32(0xFFFFu), lo);
|
||||
bld.vop2(aco_opcode::v_or_b32, def, Operand::c32(hi.constantValue() << 16u),
|
||||
|
|
@ -2237,6 +2239,9 @@ lower_to_hw_instr(Program* program)
|
|||
if (offset == (32 - bits) && op.regClass() != s1) {
|
||||
bld.vop2(signext ? aco_opcode::v_ashrrev_i32 : aco_opcode::v_lshrrev_b32, dst,
|
||||
Operand::c32(offset), op);
|
||||
} else if (offset == 0 && bits == 16 && ctx.program->gfx_level >= GFX11) {
|
||||
bld.vop1(signext ? aco_opcode::v_cvt_i32_i16 : aco_opcode::v_cvt_u32_u16, dst,
|
||||
op);
|
||||
} else {
|
||||
bld.vop3(signext ? aco_opcode::v_bfe_i32 : aco_opcode::v_bfe_u32, dst, op,
|
||||
Operand::c32(offset), Operand::c32(bits));
|
||||
|
|
|
|||
|
|
@ -626,7 +626,9 @@ BEGIN_TEST(to_hw_instr.extract)
|
|||
EXT(2, 8)
|
||||
//! v1: %_:v[0] = @v_shr 24, %_:v[1]
|
||||
EXT(3, 8)
|
||||
//! v1: %_:v[0] = @v_bfe %_:v[1], 0, 16
|
||||
//~gfx(7|8|9)_.*! v1: %_:v[0] = @v_bfe %_:v[1], 0, 16
|
||||
//~gfx11_unsigned! v1: %_:v[0] = v_cvt_u32_u16 %_:v[1]
|
||||
//~gfx11_signed! v1: %_:v[0] = v_cvt_i32_i16 %_:v[1]
|
||||
EXT(0, 16)
|
||||
//! v1: %_:v[0] = @v_shr 16, %_:v[1]
|
||||
EXT(1, 16)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue