From f81b67b857bd941ada721aa77ccbf430456eff0c Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 27 Mar 2020 20:28:09 -0400 Subject: [PATCH] pan/bi: Handle round opcodes in frontend These correspond to various ops routed through BI_ROUND Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 2d137605bf4..f78dfddbcce 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -413,6 +413,12 @@ bi_class_for_nir_alu(nir_op op) case nir_op_mov: return BI_MOV; + case nir_op_fround_even: + case nir_op_fceil: + case nir_op_ffloor: + case nir_op_ftrunc: + return BI_ROUND; + case nir_op_frcp: case nir_op_frsq: case nir_op_fsin: @@ -607,6 +613,22 @@ emit_alu(bi_context *ctx, nir_alu_instr *instr) BI_CASE_CMP(nir_op_ine) alu.op.compare = bi_cond_for_nir(instr->op, false); break; + case nir_op_fround_even: + alu.op.round = BI_ROUND_MODE; + alu.roundmode = BIFROST_RTE; + break; + case nir_op_fceil: + alu.op.round = BI_ROUND_MODE; + alu.roundmode = BIFROST_RTP; + break; + case nir_op_ffloor: + alu.op.round = BI_ROUND_MODE; + alu.roundmode = BIFROST_RTN; + break; + case nir_op_ftrunc: + alu.op.round = BI_ROUND_MODE; + alu.roundmode = BIFROST_RTZ; + break; default: break; } -- 2.30.2