From 77e7168ae2d454ce2ae496caf0fea690143e7468 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sat, 17 Apr 2021 16:57:01 -0400 Subject: [PATCH] agx: Implement limited case of i2i16/i2i32 as iadd Signed-off-by: Alyssa Rosenzweig Acked-by: Jason Ekstrand Acked-by: Bas Nieuwenhuizen Part-of: --- src/asahi/compiler/agx_compile.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index 94617e8ca04..30df9cee1e4 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -267,6 +267,22 @@ agx_emit_alu(agx_builder *b, nir_alu_instr *instr) case nir_op_ushr: return agx_bfeil_to(b, dst, agx_zero(), s0, s1, 0); case nir_op_ishr: return agx_asr_to(b, dst, s0, s1); + case nir_op_i2i32: + { + if (s0.size != AGX_SIZE_16) + unreachable("todo: more conversions"); + + return agx_iadd_to(b, dst, s0, agx_zero(), 0); + } + + case nir_op_i2i16: + { + if (s0.size != AGX_SIZE_32) + unreachable("todo: more conversions"); + + return agx_iadd_to(b, dst, s0, agx_zero(), 0); + } + case nir_op_iadd_sat: { agx_instr *I = agx_iadd_to(b, dst, s0, s1, 0);