freedreno/ir3: correct # of dest components for intrinsics
authorRob Clark <robdclark@gmail.com>
Thu, 9 Nov 2017 15:50:44 +0000 (10:50 -0500)
committerRob Clark <robdclark@gmail.com>
Fri, 10 Nov 2017 13:57:33 +0000 (08:57 -0500)
Don't rely on intr->num_components having a valid value.  It doesn't
seem to anymore for non-vectorized intrinsics.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index d5db8e57ffb4fb632852f1dce0e5fdc26fb95f7d..ef7a752014d9809f6adf00d41fa07c7f78a549dc 100644 (file)
@@ -1418,7 +1418,12 @@ emit_intrinsic(struct ir3_compile *ctx, nir_intrinsic_instr *intr)
        int idx;
 
        if (info->has_dest) {
-               dst = get_dst(ctx, &intr->dest, intr->num_components);
+               unsigned n;
+               if (info->dest_components)
+                       n = info->dest_components;
+               else
+                       n = intr->num_components;
+               dst = get_dst(ctx, &intr->dest, n);
        } else {
                dst = NULL;
        }