aco: improve jump threading with wave32
authorRhys Perry <pendingchaos02@gmail.com>
Tue, 3 Dec 2019 14:10:45 +0000 (14:10 +0000)
committerTimur Kristóf <timur.kristof@gmail.com>
Sat, 21 Dec 2019 11:38:42 +0000 (12:38 +0100)
Totals from affected shaders:
SGPRS: 748746 -> 748746 (0.00 %)
VGPRS: 636984 -> 636984 (0.00 %)
Spilled SGPRs: 387 -> 387 (0.00 %)
Spilled VGPRs: 15 -> 15 (0.00 %)
Code Size: 61138824 -> 60928620 (-0.34 %) bytes
Max Waves: 48602 -> 48602 (0.00 %)
Instructions: 11967660 -> 11915084 (-0.44 %)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/aco_ssa_elimination.cpp

index 54e691ba476dbf9477e0c14891f5ada84469155a..95e2e842a9c6ae64c4ec35d015ec4af978ab8298 100644 (file)
@@ -153,7 +153,8 @@ void try_remove_invert_block(ssa_elimination_ctx& ctx, Block* block)
    for (aco_ptr<Instruction>& instr : block->instructions) {
       if (instr->opcode != aco_opcode::p_linear_phi &&
           instr->opcode != aco_opcode::p_phi &&
-          instr->opcode != aco_opcode::s_andn2_b64 &&
+          (instr->opcode != aco_opcode::s_andn2_b64 || ctx.program->wave_size != 64) &&
+          (instr->opcode != aco_opcode::s_andn2_b32 || ctx.program->wave_size != 32) &&
           instr->opcode != aco_opcode::p_branch)
          return;
    }