This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 7c0e5d4682cdb9daeb2e359c41b44e5921a447cd
Author:     Ramiro Polla <[email protected]>
AuthorDate: Wed Jun 17 17:37:25 2026 +0200
Commit:     Ramiro Polla <[email protected]>
CommitDate: Sun Jul 19 15:07:03 2026 +0200

    swscale/aarch64/ops: use SwsMoveUOp for SwsAArch64OpImplParams.move
    
    This is one more step to eventually replace the parameter fields in
    SwsAArch64OpImplParams by generic structs from libswscale/uops.h.
    
    The function names and ordering in ops_entries.c is maintained to
    simplify the gradual move to uops.h.
    
    Sponsored-by: Sovereign Tech Fund
    Signed-off-by: Ramiro Polla <[email protected]>
---
 libswscale/aarch64/ops_asmgen.c    |  20 ++---
 libswscale/aarch64/ops_entries.c   | 170 ++++++++++++++++++-------------------
 libswscale/aarch64/ops_impl.h      |   6 +-
 libswscale/aarch64/ops_impl_conv.c |  16 ++--
 libswscale/tests/sws_ops_aarch64.c |  30 +++++--
 5 files changed, 126 insertions(+), 116 deletions(-)

diff --git a/libswscale/aarch64/ops_asmgen.c b/libswscale/aarch64/ops_asmgen.c
index a0a660adb5..89f9c542e1 100644
--- a/libswscale/aarch64/ops_asmgen.c
+++ b/libswscale/aarch64/ops_asmgen.c
@@ -614,9 +614,9 @@ static void asmgen_op_swap_bytes(SwsAArch64Context *s, 
const SwsAArch64OpImplPar
 /* SWS_UOP_PERMUTE */
 /* SWS_UOP_COPY */
 
-static const char *print_swizzle_v(char buf[8], uint8_t n, uint8_t vh)
+static const char *print_swizzle_v(char buf[8], int8_t n, uint8_t vh)
 {
-    if (n == AARCH64_MOVE_TMP)
+    if (n == -1)
         snprintf(buf, sizeof(char[8]), "vtmp%c", vh ? 'h' : 'l');
     else
         snprintf(buf, sizeof(char[8]), "v%c[%u]", vh ? 'h' : 'l', n);
@@ -624,14 +624,14 @@ static const char *print_swizzle_v(char buf[8], uint8_t 
n, uint8_t vh)
 }
 #define PRINT_SWIZZLE_V(n, vh) print_swizzle_v((char[8]){ 0 }, n, vh)
 
-static RasmOp swizzle_a64op(SwsAArch64Context *s, uint8_t n, uint8_t vh)
+static RasmOp swizzle_a64op(SwsAArch64Context *s, int8_t n, uint8_t vh)
 {
-    if (n == AARCH64_MOVE_TMP)
+    if (n == -1)
         return s->vt[vh];
     return vh ? s->vh[n] : s->vl[n];
 }
 
-static void swizzle_emit(SwsAArch64Context *s, uint8_t dst, uint8_t src)
+static void swizzle_emit(SwsAArch64Context *s, int8_t dst, int8_t src)
 {
     RasmContext *r = s->rctx;
     RasmOp src_op[2] = { swizzle_a64op(s, src, 0), swizzle_a64op(s, src, 1) };
@@ -645,14 +645,8 @@ static void swizzle_emit(SwsAArch64Context *s, uint8_t 
dst, uint8_t src)
 
 static void asmgen_op_move(SwsAArch64Context *s, const SwsAArch64OpImplParams 
*p)
 {
-    SwsAArch64MoveOp move = p->move;
-
-    while (move) {
-        uint8_t src = (move     ) & 0xf;
-        uint8_t dst = (move >> 4) & 0xf;
-        swizzle_emit(s, dst, src);
-        move >>= 8;
-    }
+    for (int i = 0; i < p->move.num_moves; i++)
+        swizzle_emit(s, p->move.dst[i], p->move.src[i]);
 }
 
 /*********************************************************************/
diff --git a/libswscale/aarch64/ops_entries.c b/libswscale/aarch64/ops_entries.c
index 75f7261527..0260f080f3 100644
--- a/libswscale/aarch64/ops_entries.c
+++ b/libswscale/aarch64/ops_entries.c
@@ -76,91 +76,91 @@ ENTRY(ff_sws_write_packed_16_u16_1111_neon, { .uop = 
SWS_UOP_WRITE_PACKED, .bloc
 ENTRY(ff_sws_write_nibble_8_u8_0001_neon, { .uop = SWS_UOP_WRITE_NIBBLE, 
.block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0001 })
 ENTRY(ff_sws_write_nibble_16_u8_0001_neon, { .uop = SWS_UOP_WRITE_NIBBLE, 
.block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0001 })
 ENTRY(ff_sws_write_bit_8_u8_0001_neon, { .uop = SWS_UOP_WRITE_BIT, .block_size 
= 8, .type = SWS_PIXEL_U8, .mask = 0x0001 })
-ENTRY(ff_sws_permute_000000000001_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000001ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0001 })
-ENTRY(ff_sws_permute_000000000002_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000002ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0001 })
-ENTRY(ff_sws_permute_000000000003_8_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000003ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0001 })
-ENTRY(ff_sws_permute_000000000003_16_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000003ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0001 })
-ENTRY(ff_sws_permute_000000000003_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000003ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0001 })
-ENTRY(ff_sws_permute_000000000010_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000010ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000010_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000010ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000010_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000010ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000013_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000013ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000013_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000013ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000013_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000013ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0010 })
-ENTRY(ff_sws_permute_000000000020_8_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000020ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0100 })
-ENTRY(ff_sws_permute_000000000020_32_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000020ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0100 })
-ENTRY(ff_sws_permute_000000000030_8_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000030ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1000 })
-ENTRY(ff_sws_permute_000000000030_16_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000030ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1000 })
-ENTRY(ff_sws_permute_000000000030_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000030ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1000 })
-ENTRY(ff_sws_permute_000000000031_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000031ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1000 })
-ENTRY(ff_sws_permute_000000000130_32_u8_1001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000130ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1001 })
-ENTRY(ff_sws_permute_000000000310_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000310ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_000000000310_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000310ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_000000000320_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000000320ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_000000001031_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000001031ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1010 })
-ENTRY(ff_sws_permute_000000001301_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000001301ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_000000002032_8_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000002032ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1100 })
-ENTRY(ff_sws_permute_000000002032_32_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000002032ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1100 })
-ENTRY(ff_sws_permute_000000002302_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000002302ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_000000002302_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000002302ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_000000102132_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000102132ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_000000102132_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000102132ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_000000102132_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000102132ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_000000132102_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000132102ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_0000001f01f0_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000001f01f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_0000001f01f0_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000001f01f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_0000001f01f0_32_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000001f01f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0011 })
-ENTRY(ff_sws_permute_000000201231_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000201231ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_000000201231_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000201231ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_000000231201_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000231201ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_000000231201_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000231201ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_000000231201_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x000000231201ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_0000002f02f0_8_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f02f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_0000002f02f0_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f02f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_0000002f02f0_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f02f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0101 })
-ENTRY(ff_sws_permute_0000002f12f1_8_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f12f1ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0110 })
-ENTRY(ff_sws_permute_0000002f12f1_16_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f12f1ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0110 })
-ENTRY(ff_sws_permute_0000002f12f1_32_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000002f12f1ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0110 })
-ENTRY(ff_sws_permute_0000003f13f1_8_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000003f13f1ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1010 })
-ENTRY(ff_sws_permute_0000003f13f1_16_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000003f13f1ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1010 })
-ENTRY(ff_sws_permute_0000003f13f1_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x0000003f13f1ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1010 })
-ENTRY(ff_sws_permute_00001f2102f0_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00001f2102f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00001f2102f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00001f2102f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00001f2102f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00001f2102f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f1201f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f1201f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f1201f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f1201f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f12f103_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f103ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f12f103_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f103ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f12f103_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f103ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x0111 })
-ENTRY(ff_sws_permute_00002f12f130_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f130ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_00002f12f130_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f130ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_00002f12f130_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f12f130ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_00002f3203f0_8_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f3203f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1101 })
-ENTRY(ff_sws_permute_00002f3203f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00002f3203f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1101 })
-ENTRY(ff_sws_permute_00003f2302f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00003f2302f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1101 })
-ENTRY(ff_sws_permute_00003f2312f1_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00003f2312f1ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_00003f2312f1_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x00003f2312f1ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1110 })
-ENTRY(ff_sws_permute_001f213203f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x001f213203f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_001f213203f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x001f213203f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_001f213203f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x001f213203f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_002f123103f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x002f123103f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_002f123103f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x002f123103f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_003f231201f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x003f231201f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_003f231201f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x003f231201f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_2f12f13f03f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x2f12f13f03f0ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_2f12f13f03f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x2f12f13f03f0ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_permute_2f12f13f03f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = 0x2f12f13f03f0ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 
0x1111 })
-ENTRY(ff_sws_copy_000000002010_8_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000002010ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0110 })
-ENTRY(ff_sws_copy_000000002010_16_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000002010ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0110 })
-ENTRY(ff_sws_copy_000000002010_32_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000002010ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0110 })
-ENTRY(ff_sws_copy_000000103120_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000103120ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_000000103120_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000103120ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_000000103120_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000103120ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_000000302010_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000302010ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_000000302010_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000302010ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_000000302010_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
0x000000302010ULL, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
-ENTRY(ff_sws_copy_001f01f03020_8_u8_1111_neon, { .uop = SWS_UOP_COPY, .move = 
0x001f01f03020ULL, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1111 })
-ENTRY(ff_sws_copy_001f01f03020_16_u8_1111_neon, { .uop = SWS_UOP_COPY, .move = 
0x001f01f03020ULL, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_000000000001_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {0, 0, 0, 0, 0, 0}, .src = {1, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0001 })
+ENTRY(ff_sws_permute_000000000002_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {0, 0, 0, 0, 0, 0}, .src = {2, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0001 })
+ENTRY(ff_sws_permute_000000000003_8_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {0, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0001 })
+ENTRY(ff_sws_permute_000000000003_16_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {0, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0001 })
+ENTRY(ff_sws_permute_000000000003_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {0, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0001 })
+ENTRY(ff_sws_permute_000000000010_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000010_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000010_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000013_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000013_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000013_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {1, 0, 0, 0, 0, 0}, .src = {3, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0010 })
+ENTRY(ff_sws_permute_000000000020_8_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {2, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0100 })
+ENTRY(ff_sws_permute_000000000020_32_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {2, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0100 })
+ENTRY(ff_sws_permute_000000000030_8_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {3, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1000 })
+ENTRY(ff_sws_permute_000000000030_16_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {3, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1000 })
+ENTRY(ff_sws_permute_000000000030_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {3, 0, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1000 })
+ENTRY(ff_sws_permute_000000000031_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 1, .dst = {3, 0, 0, 0, 0, 0}, .src = {1, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1000 })
+ENTRY(ff_sws_permute_000000000130_32_u8_1001_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {3, 0, 0, 0, 0, 0}, .src = {0, 1, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1001 })
+ENTRY(ff_sws_permute_000000000310_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {1, 0, 0, 0, 0, 0}, .src = {0, 3, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_000000000310_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {1, 0, 0, 0, 0, 0}, .src = {0, 3, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_000000000320_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {2, 0, 0, 0, 0, 0}, .src = {0, 3, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_000000001031_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {3, 1, 0, 0, 0, 0}, .src = {1, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1010 })
+ENTRY(ff_sws_permute_000000001301_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {0, 1, 0, 0, 0, 0}, .src = {1, 3, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_000000002032_8_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {3, 2, 0, 0, 0, 0}, .src = {2, 0, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1100 })
+ENTRY(ff_sws_permute_000000002032_32_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {3, 2, 0, 0, 0, 0}, .src = {2, 0, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1100 })
+ENTRY(ff_sws_permute_000000002302_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {0, 2, 0, 0, 0, 0}, .src = {2, 3, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_000000002302_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 2, .dst = {0, 2, 0, 0, 0, 0}, .src = {2, 3, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_000000102132_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {3, 2, 1, 0, 0, 0}, .src = {2, 1, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_000000102132_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {3, 2, 1, 0, 0, 0}, .src = {2, 1, 0, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_000000102132_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {3, 2, 1, 0, 0, 0}, .src = {2, 1, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_000000132102_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {0, 2, 1, 0, 0, 0}, .src = {2, 1, 3, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_0000001f01f0_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 1, 0, 0, 0}, .src = {0, 1, -1, 0, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_0000001f01f0_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 1, 0, 0, 0}, .src = {0, 1, -1, 0, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_0000001f01f0_32_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 1, 0, 0, 0}, .src = {0, 1, -1, 0, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0011 })
+ENTRY(ff_sws_permute_000000201231_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {3, 1, 2, 0, 0, 0}, .src = {1, 2, 0, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_000000201231_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {3, 1, 2, 0, 0, 0}, .src = {1, 2, 0, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_000000231201_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {0, 1, 2, 0, 0, 0}, .src = {1, 2, 3, 0, 0, 0} 
}, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_000000231201_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {0, 1, 2, 0, 0, 0}, .src = {1, 2, 3, 0, 0, 0} 
}, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_000000231201_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {0, 1, 2, 0, 0, 0}, .src = {1, 2, 3, 0, 0, 0} 
}, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_0000002f02f0_8_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 2, 0, 0, 0}, .src = {0, 2, -1, 0, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_0000002f02f0_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 2, 0, 0, 0}, .src = {0, 2, -1, 0, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_0000002f02f0_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 0, 2, 0, 0, 0}, .src = {0, 2, -1, 0, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0101 })
+ENTRY(ff_sws_permute_0000002f12f1_8_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 2, 0, 0, 0}, .src = {1, 2, -1, 0, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_permute_0000002f12f1_16_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 2, 0, 0, 0}, .src = {1, 2, -1, 0, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_permute_0000002f12f1_32_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 2, 0, 0, 0}, .src = {1, 2, -1, 0, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_permute_0000003f13f1_8_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 3, 0, 0, 0}, .src = {1, 3, -1, 0, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1010 })
+ENTRY(ff_sws_permute_0000003f13f1_16_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 3, 0, 0, 0}, .src = {1, 3, -1, 0, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1010 })
+ENTRY(ff_sws_permute_0000003f13f1_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 3, .dst = {-1, 1, 3, 0, 0, 0}, .src = {1, 3, -1, 0, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1010 })
+ENTRY(ff_sws_permute_00001f2102f0_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 2, 1, 0, 0}, .src = {0, 2, 1, -1, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00001f2102f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 2, 1, 0, 0}, .src = {0, 2, 1, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00001f2102f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 2, 1, 0, 0}, .src = {0, 2, 1, -1, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f1201f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 1, 2, 0, 0}, .src = {0, 1, 2, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f1201f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 1, 2, 0, 0}, .src = {0, 1, 2, -1, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f12f103_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {0, -1, 1, 2, 0, 0}, .src = {3, 1, 2, -1, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f12f103_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {0, -1, 1, 2, 0, 0}, .src = {3, 1, 2, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f12f103_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {0, -1, 1, 2, 0, 0}, .src = {3, 1, 2, -1, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0111 })
+ENTRY(ff_sws_permute_00002f12f130_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {3, -1, 1, 2, 0, 0}, .src = {0, 1, 2, -1, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_00002f12f130_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {3, -1, 1, 2, 0, 0}, .src = {0, 1, 2, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_00002f12f130_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {3, -1, 1, 2, 0, 0}, .src = {0, 1, 2, -1, 0, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_00002f3203f0_8_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 3, 2, 0, 0}, .src = {0, 3, 2, -1, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1101 })
+ENTRY(ff_sws_permute_00002f3203f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 3, 2, 0, 0}, .src = {0, 3, 2, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1101 })
+ENTRY(ff_sws_permute_00003f2302f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 0, 2, 3, 0, 0}, .src = {0, 2, 3, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1101 })
+ENTRY(ff_sws_permute_00003f2312f1_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 1, 2, 3, 0, 0}, .src = {1, 2, 3, -1, 0, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_00003f2312f1_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 4, .dst = {-1, 1, 2, 3, 0, 0}, .src = {1, 2, 3, -1, 0, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_permute_001f213203f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 3, 2, 1, 0}, .src = {0, 3, 2, 1, -1, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_001f213203f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 3, 2, 1, 0}, .src = {0, 3, 2, 1, -1, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_001f213203f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 3, 2, 1, 0}, .src = {0, 3, 2, 1, -1, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_002f123103f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 3, 1, 2, 0}, .src = {0, 3, 1, 2, -1, 
0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_002f123103f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 3, 1, 2, 0}, .src = {0, 3, 1, 2, -1, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_003f231201f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 1, 2, 3, 0}, .src = {0, 1, 2, 3, -1, 
0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_003f231201f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 5, .dst = {-1, 0, 1, 2, 3, 0}, .src = {0, 1, 2, 3, -1, 
0} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_2f12f13f03f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 6, .dst = {-1, 0, 3, -1, 1, 2}, .src = {0, 3, -1, 1, 2, 
-1} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_2f12f13f03f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 6, .dst = {-1, 0, 3, -1, 1, 2}, .src = {0, 3, -1, 1, 2, 
-1} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_permute_2f12f13f03f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, 
.move = { .num_moves = 6, .dst = {-1, 0, 3, -1, 1, 2}, .src = {0, 3, -1, 1, 2, 
-1} }, .block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_copy_000000002010_8_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 2, .dst = {1, 2, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_copy_000000002010_16_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 2, .dst = {1, 2, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_copy_000000002010_32_u8_0110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 2, .dst = {1, 2, 0, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x0110 })
+ENTRY(ff_sws_copy_000000103120_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {2, 3, 1, 0, 0, 0}, .src = {0, 1, 0, 0, 0, 0} }, 
.block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_000000103120_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {2, 3, 1, 0, 0, 0}, .src = {0, 1, 0, 0, 0, 0} }, 
.block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_000000103120_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {2, 3, 1, 0, 0, 0}, .src = {0, 1, 0, 0, 0, 0} }, 
.block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_000000302010_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {1, 2, 3, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_000000302010_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {1, 2, 3, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_000000302010_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 3, .dst = {1, 2, 3, 0, 0, 0}, .src = {0, 0, 0, 0, 0, 0} }, 
.block_size = 32, .type = SWS_PIXEL_U8, .mask = 0x1110 })
+ENTRY(ff_sws_copy_001f01f03020_8_u8_1111_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 5, .dst = {2, 3, -1, 0, 1, 0}, .src = {0, 0, 0, 1, -1, 0} }, 
.block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1111 })
+ENTRY(ff_sws_copy_001f01f03020_16_u8_1111_neon, { .uop = SWS_UOP_COPY, .move = 
{ .num_moves = 5, .dst = {2, 3, -1, 0, 1, 0}, .src = {0, 0, 0, 1, -1, 0} }, 
.block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1111 })
 ENTRY(ff_sws_swap_bytes_8_u16_0001_neon, { .uop = SWS_UOP_SWAP_BYTES, 
.block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 })
 ENTRY(ff_sws_swap_bytes_8_u16_0010_neon, { .uop = SWS_UOP_SWAP_BYTES, 
.block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0010 })
 ENTRY(ff_sws_swap_bytes_8_u16_0011_neon, { .uop = SWS_UOP_SWAP_BYTES, 
.block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0011 })
diff --git a/libswscale/aarch64/ops_impl.h b/libswscale/aarch64/ops_impl.h
index 5b9046807c..96c0510a7f 100644
--- a/libswscale/aarch64/ops_impl.h
+++ b/libswscale/aarch64/ops_impl.h
@@ -30,10 +30,6 @@
 /* Each nibble in the mask corresponds to one component. */
 typedef uint16_t SwsAArch64OpMask;
 
-/* Each byte is an LSB src|dst pair until 00 is reached. */
-typedef uint64_t SwsAArch64MoveOp;
-#define AARCH64_MOVE_TMP 0xf
-
 /**
  * Affine coefficient mask for linear op. Packs a 4x5 matrix in execution
  * order, where the offset is the first element, with 2 bits per element:
@@ -65,7 +61,7 @@ typedef struct SwsAArch64OpImplParams {
     union {
         SwsShiftUOp         shift;
         SwsClearUOp         clear;
-        SwsAArch64MoveOp    move;
+        SwsMoveUOp          move;
         SwsAArch64OpMask    pack;
         SwsAArch64LinearOp  linear;
         SwsAArch64DitherOp  dither;
diff --git a/libswscale/aarch64/ops_impl_conv.c 
b/libswscale/aarch64/ops_impl_conv.c
index f3eb3e8535..dd095bac60 100644
--- a/libswscale/aarch64/ops_impl_conv.c
+++ b/libswscale/aarch64/ops_impl_conv.c
@@ -41,16 +41,16 @@ static int linear_index_from_sws_op(int idx)
     return reorder_col[idx];
 }
 
-static void swizzle_emit(SwsAArch64OpImplParams *out, uint8_t dst, uint8_t 
src, int idx)
+static void swizzle_emit(SwsAArch64OpImplParams *out, uint8_t dst, uint8_t src)
 {
-    uint64_t pair = src | (dst << 4);
-    out->move |= pair << (idx * 8);
+    int idx = out->move.num_moves++;
+    out->move.dst[idx] = dst;
+    out->move.src[idx] = src;
 }
 
 static void convert_swizzle_to_moves(const SwsOp *op, SwsAArch64OpImplParams 
*out)
 {
     SwsAArch64OpMask swizzle = 0;
-    int num_moves = 0;
 
     MASK_SET(swizzle, 0, op->swizzle.in[0]);
     MASK_SET(swizzle, 1, op->swizzle.in[1]);
@@ -73,7 +73,7 @@ static void convert_swizzle_to_moves(const SwsOp *op, 
SwsAArch64OpImplParams *ou
             if (done[dst] || src_used[dst])
                 continue;
             uint8_t src = MASK_GET(swizzle, dst);
-            swizzle_emit(out, dst, src, num_moves++);
+            swizzle_emit(out, dst, src);
             src_used[src]--;
             done[dst] = true;
             progress = true;
@@ -85,18 +85,18 @@ static void convert_swizzle_to_moves(const SwsOp *op, 
SwsAArch64OpImplParams *ou
         if (done[dst])
             continue;
 
-        swizzle_emit(out, AARCH64_MOVE_TMP, dst, num_moves++);
+        swizzle_emit(out, -1, dst);
 
         uint8_t cur_dst = dst;
         uint8_t src = MASK_GET(swizzle, cur_dst);
         while (src != dst) {
-            swizzle_emit(out, cur_dst, src, num_moves++);
+            swizzle_emit(out, cur_dst, src);
             done[cur_dst] = true;
             cur_dst = src;
             src = MASK_GET(swizzle, cur_dst);
         }
 
-        swizzle_emit(out, cur_dst, AARCH64_MOVE_TMP, num_moves++);
+        swizzle_emit(out, cur_dst, -1);
         done[cur_dst] = true;
     }
 }
diff --git a/libswscale/tests/sws_ops_aarch64.c 
b/libswscale/tests/sws_ops_aarch64.c
index 03166b673c..b7bb2172ae 100644
--- a/libswscale/tests/sws_ops_aarch64.c
+++ b/libswscale/tests/sws_ops_aarch64.c
@@ -53,6 +53,18 @@ static uint16_t clear_to_mask(const SwsClearUOp *clear)
     return mask;
 }
 
+static uint64_t move_to_mask(const SwsMoveUOp *move)
+{
+    uint64_t mask = 0;
+    for (int i = 0; i < move->num_moves; i++) {
+        uint8_t dst = move->dst[i] < 0 ? 0xf : move->dst[i];
+        uint8_t src = move->src[i] < 0 ? 0xf : move->src[i];
+        uint64_t pair = src | (dst << 4);
+        mask |= pair << (i * 8);
+    }
+    return mask;
+}
+
 static int aarch64_op_impl_cmp(const void *a, const void *b)
 {
     const SwsAArch64OpImplParams *pa = (const SwsAArch64OpImplParams *) a;
@@ -63,10 +75,13 @@ static int aarch64_op_impl_cmp(const void *a, const void *b)
 
     switch (pa->uop) {
     case SWS_UOP_PERMUTE:
-    case SWS_UOP_COPY:
-        if (pa->move != pb->move)
-            return (int64_t) (pa->move - pb->move) < 0 ? -1 : 1;
+    case SWS_UOP_COPY: {
+        uint64_t ia = move_to_mask(&pa->move);
+        uint64_t ib = move_to_mask(&pb->move);
+        if (ia != ib)
+            return (int64_t) (ia - ib) < 0 ? -1 : 1;
         break;
+    }
     case SWS_UOP_UNPACK:
     case SWS_UOP_PACK:
         if (pa->pack != pb->pack)
@@ -245,7 +260,7 @@ static void impl_func_name(AVBPrint *bp, const 
SwsAArch64OpImplParams *params)
     switch (params->uop) {
     case SWS_UOP_PERMUTE:
     case SWS_UOP_COPY:
-        av_bprintf(bp, "_%012" PRIx64, params->move);
+        av_bprintf(bp, "_%012" PRIx64, move_to_mask(&params->move));
         break;
     case SWS_UOP_UNPACK:
     case SWS_UOP_PACK:
@@ -315,7 +330,12 @@ static void serialize_op(AVBPrint *bp, const 
SwsAArch64OpImplParams *params)
     switch (params->uop) {
     case SWS_UOP_PERMUTE:
     case SWS_UOP_COPY:
-        av_bprintf(bp, ", .move = 0x%012" PRIx64 "ULL", params->move);
+        av_bprintf(bp, ", .move = { .num_moves = %d, .dst = {%d, %d, %d, %d, 
%d, %d}, .src = {%d, %d, %d, %d, %d, %d} }",
+                   params->move.num_moves,
+                   params->move.dst[0], params->move.dst[1], 
params->move.dst[2],
+                   params->move.dst[3], params->move.dst[4], 
params->move.dst[5],
+                   params->move.src[0], params->move.src[1], 
params->move.src[2],
+                   params->move.src[3], params->move.src[4], 
params->move.src[5]);
         break;
     case SWS_UOP_UNPACK:
     case SWS_UOP_PACK:

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to