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]

Reply via email to