From bab6f2a1ec3c6b94f490000d6ca130715704f8c3 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner <cgmeiner@igalia.com> Date: Thu, 22 Aug 2024 19:32:14 +0200 Subject: [PATCH] etnaviv: isa: Add conv instruction This instruction is used to implement float type conversion. The source type is defined via src1 immed (0: f32, 1: f16) and the dest type is defined via the instruction type. Blob generates such conv's for piglit's tests/cl/program/execute/mad-mix.cl Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30797> --- src/etnaviv/isa/etnaviv.xml | 5 +++++ src/etnaviv/isa/tests/disasm.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/etnaviv/isa/etnaviv.xml b/src/etnaviv/isa/etnaviv.xml index 3574a552c8a1e..b5cf8629fa7bb 100644 --- a/src/etnaviv/isa/etnaviv.xml +++ b/src/etnaviv/isa/etnaviv.xml @@ -1448,6 +1448,11 @@ SPDX-License-Identifier: MIT <pattern pos="80">1</pattern> <!-- OPCODE_BIT6 --> </bitset> +<bitset name="conv" extends="#instruction-alu-src0-src1"> + <pattern low="0" high="5">110010</pattern> <!-- OPC --> + <pattern pos="80">1</pattern> <!-- OPCODE_BIT6 --> +</bitset> + <bitset name="dp2" extends="#instruction-alu-src0-src1"> <pattern low="0" high="5">110011</pattern> <!-- OPC --> <pattern pos="80">1</pattern> <!-- OPCODE_BIT6 --> diff --git a/src/etnaviv/isa/tests/disasm.cpp b/src/etnaviv/isa/tests/disasm.cpp index 779f71333e9c2..62131353eb2ff 100644 --- a/src/etnaviv/isa/tests/disasm.cpp +++ b/src/etnaviv/isa/tests/disasm.cpp @@ -359,3 +359,14 @@ INSTANTIATE_TEST_SUITE_P(LoadStoreVariants, DisasmTest, ) ); // clang-format on + +// clang-format off +INSTANTIATE_TEST_SUITE_P(ConvVariants, DisasmTest, + testing::Values( + // seen on GC7000 + disasm_state{ {0x01001032, 0x15400800, 0x100100c0, 0x00000007}, "conv.pack t0._y__, t0.yyyy, 1, void\n"}, + disasm_state{ {0x01001032, 0x15600800, 0x10010040, 0x00000007}, "conv.f16.pack t0._y__, t0.yyyy, 0, void\n"}, + disasm_state{ {0x01001832, 0x15400800, 0x100100c0, 0x00000007}, "conv.sat.pack t0._y__, t0.yyyy, 1, void\n"} + ) +); +// clang-format on -- GitLab