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(¶ms->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]
