intel/fs: don't spill a register, set by undef
authorYevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Wed, 9 Dec 2020 19:16:37 +0000 (21:16 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 21 Dec 2020 21:18:01 +0000 (21:18 +0000)
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3941
Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8185>

src/intel/compiler/brw_fs_reg_allocate.cpp

index 978f908..52da2be 100644 (file)
@@ -1208,7 +1208,8 @@ fs_reg_alloc::spill_reg(unsigned spill_reg)
       }
 
       if (inst->dst.file == VGRF &&
-          inst->dst.nr == spill_reg) {
+          inst->dst.nr == spill_reg &&
+          inst->opcode != SHADER_OPCODE_UNDEF) {
          int subset_spill_offset = spill_offset +
             ROUND_DOWN_TO(inst->dst.offset, REG_SIZE);
          fs_reg spill_src = alloc_spill_reg(regs_written(inst), ip);