nir: fix bit_size in lower indirect derefs.
authorDave Airlie <airlied@redhat.com>
Fri, 26 Apr 2019 02:50:11 +0000 (12:50 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 26 Apr 2019 02:59:43 +0000 (12:59 +1000)
This fixes a case where we are expecting 64-bit but generate
32-bit consts and validate gets angry.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/compiler/nir/nir_lower_indirect_derefs.c

index 1e1e84fb3b0e54faaaa5524da11a270c02246ad1..58365628885ffb0a63ba27a37d3254e8d0e52c6d 100644 (file)
@@ -51,7 +51,7 @@ emit_indirect_load_store_deref(nir_builder *b, nir_intrinsic_instr *orig_instr,
       nir_deref_instr *deref = *deref_arr;
       assert(deref->deref_type == nir_deref_type_array);
 
-      nir_push_if(b, nir_ilt(b, deref->arr.index.ssa, nir_imm_int(b, mid)));
+      nir_push_if(b, nir_ilt(b, deref->arr.index.ssa, nir_imm_intN_t(b, mid, parent->dest.ssa.bit_size)));
       emit_indirect_load_store_deref(b, orig_instr, parent, deref_arr,
                                      start, mid, &then_dest, src);
       nir_push_else(b, NULL);