radv: add parameter to emit_waitcnt.
authorDave Airlie <airlied@redhat.com>
Mon, 27 Mar 2017 22:46:35 +0000 (08:46 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 28 Mar 2017 07:40:03 +0000 (17:40 +1000)
This is just a precursor for tess support, which needs to
pass different values here.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_nir_to_llvm.c

index cfbdeae..5a25487 100644 (file)
@@ -2818,10 +2818,15 @@ static LLVMValueRef visit_image_size(struct nir_to_llvm_context *ctx,
        return res;
 }
 
-static void emit_waitcnt(struct nir_to_llvm_context *ctx)
+#define NOOP_WAITCNT 0xf7f
+#define LGKM_CNT 0x07f
+#define VM_CNT 0xf70
+
+static void emit_waitcnt(struct nir_to_llvm_context *ctx,
+                        unsigned simm16)
 {
        LLVMValueRef args[1] = {
-               LLVMConstInt(ctx->i32, 0xf70, false),
+               LLVMConstInt(ctx->i32, simm16, false),
        };
        ac_build_intrinsic(&ctx->ac, "llvm.amdgcn.s.waitcnt",
                           ctx->voidt, args, 1, 0);
@@ -3297,7 +3302,7 @@ static void visit_intrinsic(struct nir_to_llvm_context *ctx,
                emit_discard_if(ctx, instr);
                break;
        case nir_intrinsic_memory_barrier:
-               emit_waitcnt(ctx);
+               emit_waitcnt(ctx, VM_CNT);
                break;
        case nir_intrinsic_barrier:
                emit_barrier(ctx);