Mesa (master): pan/bit: Interpret ROUND
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri May 1 00:49:38 UTC 2020
Module: Mesa
Branch: master
Commit: 6bbedf8359a0dfb0c6165277eea2635e73e845f8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6bbedf8359a0dfb0c6165277eea2635e73e845f8
Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date: Thu Apr 30 17:32:56 2020 -0400
pan/bit: Interpret ROUND
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4844>
---
src/panfrost/bifrost/test/bi_interpret.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/panfrost/bifrost/test/bi_interpret.c b/src/panfrost/bifrost/test/bi_interpret.c
index f858b812d95..ec319650e68 100644
--- a/src/panfrost/bifrost/test/bi_interpret.c
+++ b/src/panfrost/bifrost/test/bi_interpret.c
@@ -189,6 +189,10 @@ bit_make_float(fma, (a * b) + c);
bit_make_poly(mov, a);
bit_make_poly(min, MIN2(a, b));
bit_make_poly(max, MAX2(a, b));
+bit_make_float_2(floor, floorf(a), floor(a));
+bit_make_float_2(ceil, ceilf(a), ceil(a));
+bit_make_float_2(trunc, truncf(a), trunc(a));
+bit_make_float_2(nearbyint, nearbyintf(a), nearbyint(a));
/* Modifiers */
@@ -606,8 +610,22 @@ bit_step(struct bit_state *s, bi_instruction *ins, bool FMA)
}
case BI_SHIFT:
- case BI_ROUND:
unreachable("Unsupported op");
+
+ case BI_ROUND: {
+ if (ins->roundmode == BIFROST_RTP) {
+ bfloat(bit_f64ceil, bit_f32ceil);
+ } else if (ins->roundmode == BIFROST_RTN) {
+ bfloat(bit_f64floor, bit_f32floor);
+ } else if (ins->roundmode == BIFROST_RTE) {
+ bfloat(bit_f64nearbyint, bit_f32nearbyint);
+ } else if (ins->roundmode == BIFROST_RTZ) {
+ bfloat(bit_f64trunc, bit_f32trunc);
+ } else
+ unreachable("Invalid");
+
+ break;
+ }
/* We only interpret vertex shaders */
case BI_DISCARD:
More information about the mesa-commit
mailing list