[Mesa-dev] [PATCH] amd/common: use llvm.amdgcn.wqm for explicit derivatives

Nicolai Hähnle nhaehnle at gmail.com
Thu May 3 15:18:41 UTC 2018


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

To comply with an upcoming change in LLVM, see
https://reviews.llvm.org/D46051
---
 src/amd/common/ac_llvm_build.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index f21a5d2623c..c9b2e36b632 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -1241,20 +1241,27 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
 		trbl = ac_build_intrinsic(ctx,
 					"llvm.amdgcn.ds.swizzle", ctx->i32,
 					args, 2,
 					AC_FUNC_ATTR_READNONE |
 					AC_FUNC_ATTR_CONVERGENT);
 	}
 
 	tl = LLVMBuildBitCast(ctx->builder, tl, ctx->f32, "");
 	trbl = LLVMBuildBitCast(ctx->builder, trbl, ctx->f32, "");
 	result = LLVMBuildFSub(ctx->builder, trbl, tl, "");
+
+	if (HAVE_LLVM >= 0x0700) {
+		result = ac_build_intrinsic(ctx,
+			"llvm.amdgcn.wqm.f32", ctx->f32,
+			&result, 1, 0);
+	}
+
 	return result;
 }
 
 void
 ac_build_sendmsg(struct ac_llvm_context *ctx,
 		 uint32_t msg,
 		 LLVMValueRef wave_id)
 {
 	LLVMValueRef args[2];
 	args[0] = LLVMConstInt(ctx->i32, msg, false);
-- 
2.14.1



More information about the mesa-dev mailing list