Mesa (master): ac: replace llvm.AMDGPU.kilp by llvm.amdgcn.kill with LLVM 6

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Tue Jan 16 20:58:51 UTC 2018


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Jan 11 16:45:11 2018 +0100

ac: replace llvm.AMDGPU.kilp by llvm.amdgcn.kill with LLVM 6

This also replaces llvm.AMDGPU.kilp by llvm.AMDGPU.kill with
LLVM < 6. Similar to RadeonSI codepath.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/common/ac_nir_to_llvm.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 2034039543..aca9a0a260 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3867,14 +3867,20 @@ static void emit_barrier(struct ac_llvm_context *ac, gl_shader_stage stage)
 			   ac->voidt, NULL, 0, AC_FUNC_ATTR_CONVERGENT);
 }
 
-static void emit_discard_if(struct ac_nir_context *ctx,
-			    const nir_intrinsic_instr *instr)
+static void emit_discard(struct ac_nir_context *ctx,
+			 const nir_intrinsic_instr *instr)
 {
 	LLVMValueRef cond;
 
-	cond = LLVMBuildICmp(ctx->ac.builder, LLVMIntEQ,
-			     get_src(ctx, instr->src[0]),
-			     ctx->ac.i32_0, "");
+	if (instr->intrinsic == nir_intrinsic_discard_if) {
+		cond = LLVMBuildICmp(ctx->ac.builder, LLVMIntEQ,
+				     get_src(ctx, instr->src[0]),
+				     ctx->ac.i32_0, "");
+	} else {
+		assert(instr->intrinsic == nir_intrinsic_discard);
+		cond = LLVMConstInt(ctx->ac.i1, false, 0);
+	}
+
 	ac_build_kill_if_false(&ctx->ac, cond);
 }
 
@@ -4348,12 +4354,8 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
 		result = visit_image_size(ctx, instr);
 		break;
 	case nir_intrinsic_discard:
-		ac_build_intrinsic(&ctx->ac, "llvm.AMDGPU.kilp",
-				   LLVMVoidTypeInContext(ctx->ac.context),
-				   NULL, 0, AC_FUNC_ATTR_LEGACY);
-		break;
 	case nir_intrinsic_discard_if:
-		emit_discard_if(ctx, instr);
+		emit_discard(ctx, instr);
 		break;
 	case nir_intrinsic_memory_barrier:
 	case nir_intrinsic_group_memory_barrier:




More information about the mesa-commit mailing list