Mesa (master): amd/common: add support for AMD_shader_ballot functions

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 13 13:50:12 UTC 2019


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

Author: Daniel Schürmann <daniel.schuermann at campus.tu-berlin.de>
Date:   Wed May  9 20:42:09 2018 +0200

amd/common: add support for AMD_shader_ballot functions

Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>

---

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

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 67dca7cabde..f26e74cb63e 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3458,6 +3458,26 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
 	case nir_intrinsic_quad_swap_diagonal:
 		result = ac_build_quad_swizzle(&ctx->ac, get_src(ctx, instr->src[0]), 3, 2, 1 ,0);
 		break;
+	case nir_intrinsic_quad_swizzle_amd: {
+		uint32_t mask = nir_intrinsic_swizzle_mask(instr);
+		result = ac_build_quad_swizzle(&ctx->ac, get_src(ctx, instr->src[0]),
+					       mask & 0x3, (mask >> 2) & 0x3,
+					       (mask >> 4) & 0x3, (mask >> 6) & 0x3);
+		break;
+	}
+	case nir_intrinsic_masked_swizzle_amd: {
+		uint32_t mask = nir_intrinsic_swizzle_mask(instr);
+		result = ac_build_ds_swizzle(&ctx->ac, get_src(ctx, instr->src[0]), mask);
+		break;
+	}
+	case nir_intrinsic_write_invocation_amd:
+		result = ac_build_writelane(&ctx->ac, get_src(ctx, instr->src[0]),
+					    get_src(ctx, instr->src[1]),
+					    get_src(ctx, instr->src[2]));
+		break;
+	case nir_intrinsic_mbcnt_amd:
+		result = ac_build_mbcnt(&ctx->ac, get_src(ctx, instr->src[0]));
+		break;
 	default:
 		fprintf(stderr, "Unknown intrinsic: ");
 		nir_print_instr(&instr->instr, stderr);




More information about the mesa-commit mailing list