Mesa (master): radv/ac: Add integer->integer casts.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Sun Feb 26 19:01:04 UTC 2017


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sun Feb 26 02:37:27 2017 +0100

radv/ac: Add integer->integer casts.

Signed-off-by: Bas Nieuwenhuizen <basni at google.com>
Reviewed-by: Dave Airlie <airlied at redhat.com>
Acked-by: Edward O'Callaghan <funfunctor at folklore1984.net>

---

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

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 9778581..4f3d689 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -1476,6 +1476,24 @@ static void visit_alu(struct nir_to_llvm_context *ctx, nir_alu_instr *instr)
 	case nir_op_d2f:
 		result = LLVMBuildFPTrunc(ctx->builder, src[0], to_float_type(ctx, def_type), "");
 		break;
+	case nir_op_u2u32:
+	case nir_op_u2u64:
+	case nir_op_u2i32:
+	case nir_op_u2i64:
+		if (get_elem_bits(ctx, LLVMTypeOf(src[0])) < get_elem_bits(ctx, def_type))
+			result = LLVMBuildZExt(ctx->builder, src[0], def_type, "");
+		else
+			result = LLVMBuildTrunc(ctx->builder, src[0], def_type, "");
+		break;
+	case nir_op_i2u32:
+	case nir_op_i2u64:
+	case nir_op_i2i32:
+	case nir_op_i2i64:
+		if (get_elem_bits(ctx, LLVMTypeOf(src[0])) < get_elem_bits(ctx, def_type))
+			result = LLVMBuildSExt(ctx->builder, src[0], def_type, "");
+		else
+			result = LLVMBuildTrunc(ctx->builder, src[0], def_type, "");
+		break;
 	case nir_op_bcsel:
 		result = emit_bcsel(ctx, src[0], src[1], src[2]);
 		break;




More information about the mesa-commit mailing list