From: Alyssa Rosenzweig Date: Sat, 28 Mar 2020 00:28:09 +0000 (-0400) Subject: pan/bi: Handle round opcodes in frontend X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f81b67b857bd941ada721aa77ccbf430456eff0c;p=mesa.git pan/bi: Handle round opcodes in frontend These correspond to various ops routed through BI_ROUND Signed-off-by: Alyssa Rosenzweig Part-of: --- 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; }