From 1b09c6993dc1b1113ff508d158504af90607aa18 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 2 Jun 2020 19:29:25 -0400 Subject: [PATCH] pan/bi: Passthrough second argument of F32_TO_F16 At the NIR level this is a second vector source of the first (only) argument; at the BIR level this is a pair of scalars. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index cb6595a9de8..96ceb78cf07 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -834,6 +834,26 @@ emit_alu(bi_context *ctx, nir_alu_instr *instr) case nir_op_ixor: alu.op.bitwise = BI_BITWISE_XOR; break; + + case nir_op_f2f16: + case nir_op_i2i16: + case nir_op_u2u16: { + if (nir_src_bit_size(instr->src[0].src) != 32) + break; + + /* Should have been const folded */ + assert(!nir_src_is_const(instr->src[0].src)); + + alu.src_types[1] = alu.src_types[0]; + alu.src[1] = alu.src[0]; + + unsigned last = nir_dest_num_components(instr->dest.dest) - 1; + assert(last <= 1); + + alu.swizzle[1][0] = instr->src[0].swizzle[last]; + break; + } + default: break; } -- 2.30.2