i965/vec4: Stop pretending to support indirect output stores
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 26 Nov 2015 08:05:32 +0000 (00:05 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 4 Dec 2015 04:58:12 +0000 (20:58 -0800)
Since we're using nir_lower_outputs_to_temporaries to shadow all our
outputs, it's impossible to actually get an indirect store.  The code we
had to "handle" this was pretty bogus as it created a register with a
reladdr and then stuffed it in a fixed varying slot without so much as a
MOV.  Not only does this not do the MOV, it also puts the indirect on the
wrong side of the transaction.  Let's just delete the broken dead code.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp

index 86fcc97ed643cc59a6a7944a40078984100f7b94..1e0302290cac932076f1ec78e6259dd31a1a9b74 100644 (file)
@@ -393,21 +393,15 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
    }
 
    case nir_intrinsic_store_output_indirect:
-      has_indirect = true;
-      /* fallthrough */
+      unreachable("nir_lower_outputs_to_temporaries should prevent this");
+
    case nir_intrinsic_store_output: {
       int varying = instr->const_index[0];
 
       src = get_nir_src(instr->src[0], BRW_REGISTER_TYPE_F,
                         instr->num_components);
-      dest = dst_reg(src);
 
-      if (has_indirect) {
-         dest.reladdr = new(mem_ctx) src_reg(get_nir_src(instr->src[1],
-                                                         BRW_REGISTER_TYPE_D,
-                                                         1));
-      }
-      output_reg[varying] = dest;
+      output_reg[varying] = dst_reg(src);
       break;
    }