aco/isel: avoid unnecessary calls to nir_unsigned_upper_bound()
authorDaniel Schürmann <daniel@schuermann.dev>
Wed, 14 Jul 2021 11:47:01 +0000 (13:47 +0200)
committerDaniel Schürmann <daniel@schuermann.dev>
Wed, 14 Jul 2021 16:10:40 +0000 (18:10 +0200)
These were responsible for ~20% of the time
spent in instruction selection.
Reduces overall compile times by ~0.5%.

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11879>

src/amd/compiler/aco_instruction_selection.cpp

index 85f5ae2..d5a4826 100644 (file)
@@ -855,8 +855,8 @@ emit_vop2_instruction(isel_context* ctx, nir_alu_instr* instr, aco_opcode op, Te
    Operand op1(src1);
 
    for (int i = 0; i < 2; i++) {
-      uint32_t src_ub = get_alu_src_ub(ctx, instr, swap_srcs ? !i : i);
       if (uses_ub & (1 << i)) {
+         uint32_t src_ub = get_alu_src_ub(ctx, instr, swap_srcs ? !i : i);
          if (src_ub <= 0xffff)
             bld.set16bit(i ? op1 : op0);
          else if (src_ub <= 0xffffff)