agx: Add extr instruction to AGX backend

Encoding is similar to bfeil, in particular the immidiate has the
same encoding as BFI_MASK hence its reuse.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20628>
This commit is contained in:
Hampus Linander
2023-01-13 00:06:00 +01:00
committed by Alyssa Rosenzweig
parent 4ffc7c3ff4
commit f3d6524a2d
2 changed files with 7 additions and 0 deletions

View File

@@ -908,6 +908,9 @@ agx_emit_alu(agx_builder *b, nir_alu_instr *instr)
case nir_op_ishr:
return agx_asr_to(b, dst, s0, s1);
case nir_op_extr_agx:
return agx_extr_to(b, dst, s0, s1, s2, nir_src_as_uint(instr->src[3].src));
case nir_op_bcsel:
return agx_icmpsel_to(b, dst, s0, i0, s2, s1, AGX_ICOND_UEQ);

View File

@@ -213,6 +213,10 @@ op("bfeil",
encoding_32 = (0x2E | L, 0x7F | L | (0x3 << 26), 8, _),
srcs = 3, imms = [BFI_MASK])
op("extr",
encoding_32 = (0x2E | (0x1 << 26), 0x7F | L | (0x3 << 26), 8, _),
srcs = 3, imms = [BFI_MASK])
op("asr",
encoding_32 = (0x2E | L | (0x1 << 26), 0x7F | L | (0x3 << 26), 8, _),
srcs = 2)