Mesa (master): freedreno/ir3: set even bit for f2f16_rtne

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 24 13:22:54 UTC 2020


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

Author: Jonathan Marek <jonathan at marek.ca>
Date:   Wed Apr 22 23:21:20 2020 -0400

freedreno/ir3: set even bit for f2f16_rtne

Signed-off-by: Jonathan Marek <jonathan at marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4708>

---

 src/freedreno/ir3/ir3_compiler_nir.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c
index 553b772b8ec..c6ed65550a0 100644
--- a/src/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/freedreno/ir3/ir3_compiler_nir.c
@@ -236,7 +236,6 @@ create_cov(struct ir3_context *ctx, struct ir3_instruction *src,
 	case nir_op_f2f16_rtne:
 	case nir_op_f2f16_rtz:
 	case nir_op_f2f16:
-		/* TODO how to handle rounding mode? */
 	case nir_op_i2f16:
 	case nir_op_u2f16:
 		dst_type = TYPE_F16;
@@ -276,7 +275,13 @@ create_cov(struct ir3_context *ctx, struct ir3_instruction *src,
 		ir3_context_error(ctx, "invalid conversion op: %u", op);
 	}
 
-	return ir3_COV(ctx->block, src, src_type, dst_type);
+	struct ir3_instruction *cov =
+		ir3_COV(ctx->block, src, src_type, dst_type);
+
+	if (op == nir_op_f2f16_rtne)
+		cov->regs[0]->flags |= IR3_REG_EVEN;
+
+	return cov;
 }
 
 static void



More information about the mesa-commit mailing list