From: Georg Lehmann Date: Mon, 7 Aug 2023 09:32:04 +0000 (+0200) Subject: ac/nir: handle more special cases in ac_nir_unpack_arg X-Git-Tag: upstream/23.3.3~3609 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42ab786e52986c9302d79f532e65fd31b24419be;p=platform%2Fupstream%2Fmesa.git ac/nir: handle more special cases in ac_nir_unpack_arg Foz-DB Navi21: Totals from 60972 (45.96% of 132657) affected shaders: CodeSize: 158371336 -> 158127376 (-0.15%) Reviewed-by: Rhys Perry Part-of: --- diff --git a/src/amd/common/ac_nir.c b/src/amd/common/ac_nir.c index bf58a79..63e73c5 100644 --- a/src/amd/common/ac_nir.c +++ b/src/amd/common/ac_nir.c @@ -40,10 +40,14 @@ ac_nir_unpack_arg(nir_builder *b, const struct ac_shader_args *ac_args, struct a unsigned rshift, unsigned bitwidth) { nir_ssa_def *value = ac_nir_load_arg(b, ac_args, arg); - if (rshift) - return nir_ubfe_imm(b, value, rshift, bitwidth); - else + if (rshift == 0 && bitwidth == 32) + return value; + else if (rshift == 0) return nir_iand_imm(b, value, BITFIELD_MASK(bitwidth)); + else if ((32 - rshift) <= bitwidth) + return nir_ushr_imm(b, value, rshift); + else + return nir_ubfe_imm(b, value, rshift, bitwidth); } static bool