Mesa (master): ac/nir: add ARB_shader_group_vote support

Timothy Arceri tarceri at kemper.freedesktop.org
Mon Jan 22 22:16:00 UTC 2018


Module: Mesa
Branch: master
Commit: 4a9643413f897d1f6d43abf690d8b74b82646deb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4a9643413f897d1f6d43abf690d8b74b82646deb

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Mon Jan 22 10:51:58 2018 +1100

ac/nir: add ARB_shader_group_vote support

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/amd/common/ac_nir_to_llvm.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 3d9cb249ad..53940e2c9e 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -4439,6 +4439,21 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
 	case nir_intrinsic_load_patch_vertices_in:
 		result = ctx->abi->load_patch_vertices_in(ctx->abi);
 		break;
+	case nir_intrinsic_vote_all: {
+		LLVMValueRef tmp = ac_build_vote_all(&ctx->ac, get_src(ctx, instr->src[0]));
+		result = LLVMBuildSExt(ctx->ac.builder, tmp, ctx->ac.i32, "");
+		break;
+	}
+	case nir_intrinsic_vote_any: {
+		LLVMValueRef tmp = ac_build_vote_any(&ctx->ac, get_src(ctx, instr->src[0]));
+		result = LLVMBuildSExt(ctx->ac.builder, tmp, ctx->ac.i32, "");
+		break;
+	}
+	case nir_intrinsic_vote_eq: {
+		LLVMValueRef tmp = ac_build_vote_eq(&ctx->ac, get_src(ctx, instr->src[0]));
+		result = LLVMBuildSExt(ctx->ac.builder, tmp, ctx->ac.i32, "");
+		break;
+	}
 	default:
 		fprintf(stderr, "Unknown intrinsic: ");
 		nir_print_instr(&instr->instr, stderr);




More information about the mesa-commit mailing list