This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 3332e5e27895051a2bacfe63064d19831281768b Author: Ramiro Polla <[email protected]> AuthorDate: Wed Jun 17 16:54:46 2026 +0200 Commit: Ramiro Polla <[email protected]> CommitDate: Sun Jul 19 15:07:02 2026 +0200 swscale/aarch64/ops: use SwsShiftUOp for SwsAArch64OpImplParams.shift 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 | 10 +++--- libswscale/aarch64/ops_entries.c | 64 +++++++++++++++++++------------------- libswscale/aarch64/ops_impl.h | 2 +- libswscale/aarch64/ops_impl_conv.c | 2 +- libswscale/tests/sws_ops_aarch64.c | 8 ++--- 5 files changed, 44 insertions(+), 42 deletions(-) diff --git a/libswscale/aarch64/ops_asmgen.c b/libswscale/aarch64/ops_asmgen.c index 3cbbcae60b..06f1a028a7 100644 --- a/libswscale/aarch64/ops_asmgen.c +++ b/libswscale/aarch64/ops_asmgen.c @@ -771,12 +771,13 @@ static void asmgen_op_pack(SwsAArch64Context *s, const SwsAArch64OpImplParams *p static void asmgen_op_lshift(SwsAArch64Context *s, const SwsAArch64OpImplParams *p) { + uint8_t shift = p->shift.amount; RasmContext *r = s->rctx; RasmOp *vl = s->vl; RasmOp *vh = s->vh; - LOOP_MASK (p, i) { i_shl(r, vl[i], vl[i], IMM(p->shift)); CMTF("vl[%u] <<= %u;", i, p->shift); } - LOOP_MASK_VH(s, p, i) { i_shl(r, vh[i], vh[i], IMM(p->shift)); CMTF("vh[%u] <<= %u;", i, p->shift); } + LOOP_MASK (p, i) { i_shl(r, vl[i], vl[i], IMM(shift)); CMTF("vl[%u] <<= %u;", i, shift); } + LOOP_MASK_VH(s, p, i) { i_shl(r, vh[i], vh[i], IMM(shift)); CMTF("vh[%u] <<= %u;", i, shift); } } /*********************************************************************/ @@ -785,12 +786,13 @@ static void asmgen_op_lshift(SwsAArch64Context *s, const SwsAArch64OpImplParams static void asmgen_op_rshift(SwsAArch64Context *s, const SwsAArch64OpImplParams *p) { + uint8_t shift = p->shift.amount; RasmContext *r = s->rctx; RasmOp *vl = s->vl; RasmOp *vh = s->vh; - LOOP_MASK (p, i) { i_ushr(r, vl[i], vl[i], IMM(p->shift)); CMTF("vl[%u] >>= %u;", i, p->shift); } - LOOP_MASK_VH(s, p, i) { i_ushr(r, vh[i], vh[i], IMM(p->shift)); CMTF("vh[%u] >>= %u;", i, p->shift); } + LOOP_MASK (p, i) { i_ushr(r, vl[i], vl[i], IMM(shift)); CMTF("vl[%u] >>= %u;", i, shift); } + LOOP_MASK_VH(s, p, i) { i_ushr(r, vh[i], vh[i], IMM(shift)); CMTF("vh[%u] >>= %u;", i, shift); } } /*********************************************************************/ diff --git a/libswscale/aarch64/ops_entries.c b/libswscale/aarch64/ops_entries.c index 092ed6ab60..66f9044c98 100644 --- a/libswscale/aarch64/ops_entries.c +++ b/libswscale/aarch64/ops_entries.c @@ -283,38 +283,38 @@ ENTRY(ff_sws_pack_0565_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = 0x0565, . ENTRY(ff_sws_pack_0565_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = 0x0565, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) ENTRY(ff_sws_pack_2aaa_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .pack = 0x2aaa, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x1111 }) ENTRY(ff_sws_pack_aaa2_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .pack = 0xaaa2, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x1111 }) -ENTRY(ff_sws_lshift_1_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 1, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_1_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 1, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_1_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 1, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_2_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 2, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_2_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 2, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_2_8_u32_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 2, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_2_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 2, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_2_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 2, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_3_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 3, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_4_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_lshift_4_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_4_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_4_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_lshift_4_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_4_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 4, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_5_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 5, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_6_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_lshift_6_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_6_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_6_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_lshift_6_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_6_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 6, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_lshift_7_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 7, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_8_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = 8, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_lshift_8_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = 8, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) -ENTRY(ff_sws_rshift_4_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_rshift_4_8_u16_0010_neon, { .uop = SWS_UOP_RSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0010 }) -ENTRY(ff_sws_rshift_4_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = 4, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_rshift_4_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = 4, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_rshift_6_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = 6, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) -ENTRY(ff_sws_rshift_6_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = 6, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) -ENTRY(ff_sws_rshift_6_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = 6, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_1_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_1_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_1_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_2_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_2_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_2_8_u32_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_2_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_2_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_3_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 3 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_4_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_lshift_4_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_4_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_4_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_lshift_4_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_4_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_5_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 5 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_6_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_lshift_6_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_6_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_6_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_lshift_6_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_6_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_lshift_7_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 7 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_8_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_lshift_8_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1110 }) +ENTRY(ff_sws_rshift_4_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_rshift_4_8_u16_0010_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0010 }) +ENTRY(ff_sws_rshift_4_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_rshift_4_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_rshift_6_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0001 }) +ENTRY(ff_sws_rshift_6_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x0111 }) +ENTRY(ff_sws_rshift_6_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x0111 }) ENTRY(ff_sws_clear_0fff_8_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = 0x0fff, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1000 }) ENTRY(ff_sws_clear_0fff_8_u8_1011_neon, { .uop = SWS_UOP_CLEAR, .clear = 0x0fff, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1011 }) ENTRY(ff_sws_clear_0fff_8_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = 0x0fff, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1000 }) diff --git a/libswscale/aarch64/ops_impl.h b/libswscale/aarch64/ops_impl.h index 7a5e87a0c2..3e3fa13b73 100644 --- a/libswscale/aarch64/ops_impl.h +++ b/libswscale/aarch64/ops_impl.h @@ -69,7 +69,7 @@ typedef struct SwsAArch64OpImplParams { SwsPixelType type; uint8_t block_size; union { - uint8_t shift; + SwsShiftUOp shift; SwsAArch64ClearMask clear; SwsAArch64MoveOp move; SwsAArch64OpMask pack; diff --git a/libswscale/aarch64/ops_impl_conv.c b/libswscale/aarch64/ops_impl_conv.c index 24cb6a0075..73b4a9dcb2 100644 --- a/libswscale/aarch64/ops_impl_conv.c +++ b/libswscale/aarch64/ops_impl_conv.c @@ -260,7 +260,7 @@ static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - out->shift = op->shift.amount; + out->shift.amount = op->shift.amount; break; case SWS_UOP_CLEAR: out->mask = 0; diff --git a/libswscale/tests/sws_ops_aarch64.c b/libswscale/tests/sws_ops_aarch64.c index cda3140abc..10034016bb 100644 --- a/libswscale/tests/sws_ops_aarch64.c +++ b/libswscale/tests/sws_ops_aarch64.c @@ -59,8 +59,8 @@ static int aarch64_op_impl_cmp(const void *a, const void *b) break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - if (pa->shift != pb->shift) - return (int) pa->shift - pb->shift; + if (pa->shift.amount != pb->shift.amount) + return (int) pa->shift.amount - pb->shift.amount; break; case SWS_UOP_CLEAR: if (pa->clear != pb->clear) @@ -235,7 +235,7 @@ static void impl_func_name(AVBPrint *bp, const SwsAArch64OpImplParams *params) break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - av_bprintf(bp, "_%u", params->shift); + av_bprintf(bp, "_%u", params->shift.amount); break; case SWS_UOP_CLEAR: av_bprintf(bp, "_%04x", params->clear); @@ -305,7 +305,7 @@ static void serialize_op(AVBPrint *bp, const SwsAArch64OpImplParams *params) break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - av_bprintf(bp, ", .shift = %u", params->shift); + av_bprintf(bp, ", .shift = { .amount = %u }", params->shift.amount); break; case SWS_UOP_CLEAR: av_bprintf(bp, ", .clear = 0x%04x", params->clear); _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
