freedreno/ir3/nir: add more opcodes
authorRob Clark <robclark@freedesktop.org>
Fri, 12 Jun 2015 18:27:44 +0000 (14:27 -0400)
committerRob Clark <robclark@freedesktop.org>
Sun, 21 Jun 2015 12:01:06 +0000 (08:01 -0400)
Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index a9a8df3..0c2600b 100644 (file)
@@ -1076,9 +1076,15 @@ emit_alu(struct ir3_compile *ctx, nir_alu_instr *alu)
        case nir_op_imax:
                dst[0] = ir3_MAX_S(b, src[0], 0, src[1], 0);
                break;
+       case nir_op_umax:
+               dst[0] = ir3_MAX_U(b, src[0], 0, src[1], 0);
+               break;
        case nir_op_imin:
                dst[0] = ir3_MIN_S(b, src[0], 0, src[1], 0);
                break;
+       case nir_op_umin:
+               dst[0] = ir3_MIN_U(b, src[0], 0, src[1], 0);
+               break;
        case nir_op_imul:
                /*
                 * dst = (al * bl) + (ah * bl << 16) + (al * bh << 16)
@@ -2451,7 +2457,8 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
 
 out:
        if (ret) {
-               ir3_destroy(so->ir);
+               if (so->ir)
+                       ir3_destroy(so->ir);
                so->ir = NULL;
        }
        compile_free(ctx);