This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 19cc66f02f2926fc2b9246a221015cebc7d5f501 Author: Ramiro Polla <[email protected]> AuthorDate: Wed Jun 17 23:13:55 2026 +0200 Commit: Ramiro Polla <[email protected]> CommitDate: Sun Jul 19 15:07:03 2026 +0200 swscale/aarch64/ops: use SwsUOpParams for SwsAArch64OpImplParams's parameter fields 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.c | 2 +- libswscale/aarch64/ops_asmgen.c | 44 ++-- libswscale/aarch64/ops_entries.c | 488 ++++++++++++++++++------------------- libswscale/aarch64/ops_impl.h | 11 +- libswscale/aarch64/ops_impl_conv.c | 26 +- libswscale/tests/sws_ops_aarch64.c | 76 +++--- 6 files changed, 322 insertions(+), 325 deletions(-) diff --git a/libswscale/aarch64/ops.c b/libswscale/aarch64/ops.c index 1634cf2e49..6e1de6a458 100644 --- a/libswscale/aarch64/ops.c +++ b/libswscale/aarch64/ops.c @@ -86,7 +86,7 @@ static int aarch64_setup_linear(const SwsAArch64OpImplParams *p, for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { const int jj = (j == 0) ? 4 : (j - 1); - if (!(p->linear.zero & SWS_MASK(i, jj))) + if (!(p->par.lin.zero & SWS_MASK(i, jj))) coeffs[i_coeff++] = (float) op->lin.m[i][jj].num / op->lin.m[i][jj].den; } } diff --git a/libswscale/aarch64/ops_asmgen.c b/libswscale/aarch64/ops_asmgen.c index 2c79a85530..5faa8166b8 100644 --- a/libswscale/aarch64/ops_asmgen.c +++ b/libswscale/aarch64/ops_asmgen.c @@ -645,8 +645,8 @@ static void swizzle_emit(SwsAArch64Context *s, int8_t dst, int8_t src) static void asmgen_op_move(SwsAArch64Context *s, const SwsAArch64OpImplParams *p) { - for (int i = 0; i < p->move.num_moves; i++) - swizzle_emit(s, p->move.dst[i], p->move.src[i]); + for (int i = 0; i < p->par.move.num_moves; i++) + swizzle_emit(s, p->par.move.dst[i], p->par.move.src[i]); } /*********************************************************************/ @@ -665,16 +665,16 @@ static void asmgen_op_unpack(SwsAArch64Context *s, const SwsAArch64OpImplParams uint8_t cur_vt = 0; const int offsets[4] = { - p->pack.pattern[3] + p->pack.pattern[2] + p->pack.pattern[1], - p->pack.pattern[3] + p->pack.pattern[2], - p->pack.pattern[3], + p->par.pack.pattern[3] + p->par.pack.pattern[2] + p->par.pack.pattern[1], + p->par.pack.pattern[3] + p->par.pack.pattern[2], + p->par.pack.pattern[3], 0 }; /* Generate masks. */ rasm_add_comment(r, "generate masks"); LOOP_MASK(p, i) { - uint32_t val = (1u << p->pack.pattern[i]) - 1; + uint32_t val = (1u << p->par.pack.pattern[i]) - 1; for (int j = 0; j < 4; j++) { if (mask_val[j] == val) { mask_val[i] = mask_val[j]; @@ -732,9 +732,9 @@ static void asmgen_op_pack(SwsAArch64Context *s, const SwsAArch64OpImplParams *p RasmOp *vh = s->vh; const int offsets[4] = { - p->pack.pattern[3] + p->pack.pattern[2] + p->pack.pattern[1], - p->pack.pattern[3] + p->pack.pattern[2], - p->pack.pattern[3], + p->par.pack.pattern[3] + p->par.pack.pattern[2] + p->par.pack.pattern[1], + p->par.pack.pattern[3] + p->par.pack.pattern[2], + p->par.pack.pattern[3], 0 }; SwsCompMask offset_mask = 0; @@ -765,7 +765,7 @@ 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; + uint8_t shift = p->par.shift.amount; RasmContext *r = s->rctx; RasmOp *vl = s->vl; RasmOp *vh = s->vh; @@ -780,7 +780,7 @@ 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; + uint8_t shift = p->par.shift.amount; RasmContext *r = s->rctx; RasmOp *vl = s->vl; RasmOp *vh = s->vh; @@ -798,9 +798,9 @@ static void emit_clear(SwsAArch64Context *s, const SwsAArch64OpImplParams *p, { RasmContext *r = s->rctx; RasmOp clear_vec = s->vt[0]; - if (p->clear.zero & SWS_COMP(i)) { + if (p->par.clear.zero & SWS_COMP(i)) { i_movi(r, vx[i], IMM(0)); CMTF("%s[%u] = 0;", vx_str, i); - } else if (p->clear.one & SWS_COMP(i)) { + } else if (p->par.clear.one & SWS_COMP(i)) { if (p->block_size * ff_sws_pixel_type_size(p->type) == 8) { i_movi(r, v_8b (vx[i]), IMM(0xff)); } else { @@ -825,7 +825,7 @@ static void asmgen_op_clear(SwsAArch64Context *s, const SwsAArch64OpImplParams * bool load_priv = false; LOOP_MASK(p, i) { - if (!((p->clear.zero | p->clear.one) & SWS_COMP(i))) + if (!((p->par.clear.zero | p->par.clear.one) & SWS_COMP(i))) load_priv = true; } if (load_priv) { @@ -1095,7 +1095,7 @@ static void linear_pass(SwsAArch64Context *s, const SwsAArch64OpImplParams *p, for (int j = 0; j < 5; j++) { bool is_offset = (j == 0); int src_j = is_offset ? 4 : (j - 1); - if (p->linear.zero & SWS_MASK(i, src_j)) + if (p->par.lin.zero & SWS_MASK(i, src_j)) continue; RasmOp vsrc = src_vx[src_j]; uint8_t vc_i = i_coeff / 4; @@ -1105,7 +1105,7 @@ static void linear_pass(SwsAArch64Context *s, const SwsAArch64OpImplParams *p, if (first && is_offset) { i_dup (r, vx[i], vcoeff); CMTF("v%c[%u] = broadcast(vc[%u][%u]);", cvh, i, vc_i, vc_j); } else if (first && !is_offset) { - if (p->linear.one & SWS_MASK(i, src_j)) { + if (p->par.lin.one & SWS_MASK(i, src_j)) { i_mov16b(r, vx[i], vsrc); CMTF("v%c[%u] = vsrc[%u];", cvh, i, src_j); } else { i_fmul (r, vx[i], vsrc, vcoeff); CMTF("v%c[%u] = vsrc[%u] * vc[%u][%u];", cvh, i, src_j, vc_i, vc_j); @@ -1125,7 +1125,7 @@ static void linear_pass(SwsAArch64Context *s, const SwsAArch64OpImplParams *p, * to reduce the dependency chain. * There is no need to perform multiplications by 1. */ - if (!(p->linear.one & SWS_MASK(i, src_j))) { + if (!(p->par.lin.one & SWS_MASK(i, src_j))) { pre_mul = rasm_set_current_node(r, pre_mul); i_fmul(r, vtmp[vc_j], vsrc, vcoeff); CMTF("vtmp[%u] = vsrc[%u] * vc[%u][%u];", vc_j, src_j, vc_i, vc_j); pre_mul = rasm_set_current_node(r, pre_mul); @@ -1167,7 +1167,7 @@ static void asmgen_op_linear(SwsAArch64Context *s, const SwsAArch64OpImplParams for (int j = 0; j < 5; j++) { bool is_offset = (j == 0); int src_j = is_offset ? 4 : (j - 1); - if (p->linear.zero & SWS_MASK(i, src_j)) + if (p->par.lin.zero & SWS_MASK(i, src_j)) continue; if (!is_offset && overwritten[src_j]) save_mask |= SWS_COMP(src_j); @@ -1216,10 +1216,10 @@ static void asmgen_op_dither(SwsAArch64Context *s, const SwsAArch64OpImplParams /* Very cheap bucket sort. */ int max_offset = 0; LOOP_MASK(p, i) - max_offset = FFMAX(max_offset, p->dither.y_offset[i]); + max_offset = FFMAX(max_offset, p->par.dither.y_offset[i]); for (int y_off = 0; y_off <= max_offset; y_off++) { LOOP_MASK(p, i) { - if (p->dither.y_offset[i] == y_off) + if (p->par.dither.y_offset[i] == y_off) sorted[n_comps++] = i; } } @@ -1248,7 +1248,7 @@ static void asmgen_op_dither(SwsAArch64Context *s, const SwsAArch64OpImplParams * lsb = log2(block_size) + log2(sizeof(float)) */ const int block_size_log2 = (p->block_size == 16) ? 4 : 3; - const int dither_size_log2 = p->dither.size_log2; + const int dither_size_log2 = p->par.dither.size_log2; const int sizeof_float_log2 = 2; if (dither_size_log2 != block_size_log2) { RasmOp lsb = IMM(block_size_log2 + sizeof_float_log2); @@ -1261,7 +1261,7 @@ static void asmgen_op_dither(SwsAArch64Context *s, const SwsAArch64OpImplParams int prev_i = 0; for (int sorted_i = 0; sorted_i < n_comps; sorted_i++) { int i = sorted[sorted_i]; - uint8_t y_off = p->dither.y_offset[i]; + uint8_t y_off = p->par.dither.y_offset[i]; bool do_load = (y_off != last_y_off); if (last_y_off < 0) { diff --git a/libswscale/aarch64/ops_entries.c b/libswscale/aarch64/ops_entries.c index 976a91481f..2c226edf0e 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 = 0x1 }) ENTRY(ff_sws_write_nibble_16_u8_0001_neon, { .uop = SWS_UOP_WRITE_NIBBLE, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1 }) ENTRY(ff_sws_write_bit_8_u8_0001_neon, { .uop = SWS_UOP_WRITE_BIT, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1 }) -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 = 0x1 }) -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 = 0x1 }) -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 = 0x1 }) -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 = 0x1 }) -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 = 0x1 }) -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 = 0x2 }) -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 = 0x2 }) -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 = 0x2 }) -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 = 0x2 }) -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 = 0x2 }) -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 = 0x2 }) -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 = 0x4 }) -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 = 0x4 }) -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 = 0x8 }) -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 = 0x8 }) -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 = 0x8 }) -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 = 0x8 }) -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 = 0x9 }) -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 = 0x3 }) -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 = 0x3 }) -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 = 0x5 }) -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 = 0xa }) -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 = 0x3 }) -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 = 0xc }) -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 = 0xc }) -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 = 0x5 }) -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 = 0x5 }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0x7 }) -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 = 0x3 }) -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 = 0x3 }) -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 = 0x3 }) -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 = 0xe }) -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 = 0xe }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x5 }) -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 = 0x5 }) -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 = 0x5 }) -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 = 0x6 }) -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 = 0x6 }) -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 = 0x6 }) -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 = 0xa }) -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 = 0xa }) -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 = 0xa }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0x7 }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0xd }) -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 = 0xd }) -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 = 0xd }) -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 = 0xe }) -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 = 0xe }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0xf }) -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 = 0x6 }) -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 = 0x6 }) -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 = 0x6 }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0xe }) -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 = 0xf }) -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 = 0xf }) +ENTRY(ff_sws_permute_000000000001_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x1 }) +ENTRY(ff_sws_permute_000000000002_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x1 }) +ENTRY(ff_sws_permute_000000000003_8_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x1 }) +ENTRY(ff_sws_permute_000000000003_16_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x1 }) +ENTRY(ff_sws_permute_000000000003_32_u8_0001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x1 }) +ENTRY(ff_sws_permute_000000000010_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000010_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000010_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000013_8_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000013_16_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000013_32_u8_0010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x2 }) +ENTRY(ff_sws_permute_000000000020_8_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x4 }) +ENTRY(ff_sws_permute_000000000020_32_u8_0100_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x4 }) +ENTRY(ff_sws_permute_000000000030_8_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x8 }) +ENTRY(ff_sws_permute_000000000030_16_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x8 }) +ENTRY(ff_sws_permute_000000000030_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x8 }) +ENTRY(ff_sws_permute_000000000031_32_u8_1000_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x8 }) +ENTRY(ff_sws_permute_000000000130_32_u8_1001_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x9 }) +ENTRY(ff_sws_permute_000000000310_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_000000000310_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_000000000320_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_000000001031_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xa }) +ENTRY(ff_sws_permute_000000001301_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_000000002032_8_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xc }) +ENTRY(ff_sws_permute_000000002032_32_u8_1100_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xc }) +ENTRY(ff_sws_permute_000000002302_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_000000002302_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_000000102132_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_000000102132_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_000000102132_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_000000132102_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_0000001f01f0_8_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_0000001f01f0_16_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_0000001f01f0_32_u8_0011_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x3 }) +ENTRY(ff_sws_permute_000000201231_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_000000201231_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_000000231201_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_000000231201_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_000000231201_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_0000002f02f0_8_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_0000002f02f0_16_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_0000002f02f0_32_u8_0101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x5 }) +ENTRY(ff_sws_permute_0000002f12f1_8_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x6 }) +ENTRY(ff_sws_permute_0000002f12f1_16_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x6 }) +ENTRY(ff_sws_permute_0000002f12f1_32_u8_0110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x6 }) +ENTRY(ff_sws_permute_0000003f13f1_8_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xa }) +ENTRY(ff_sws_permute_0000003f13f1_16_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xa }) +ENTRY(ff_sws_permute_0000003f13f1_32_u8_1010_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xa }) +ENTRY(ff_sws_permute_00001f2102f0_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00001f2102f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00001f2102f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f1201f0_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f1201f0_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f12f103_8_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f12f103_16_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f12f103_32_u8_0111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0x7 }) +ENTRY(ff_sws_permute_00002f12f130_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_00002f12f130_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_00002f12f130_32_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_00002f3203f0_8_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xd }) +ENTRY(ff_sws_permute_00002f3203f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xd }) +ENTRY(ff_sws_permute_00003f2302f0_16_u8_1101_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xd }) +ENTRY(ff_sws_permute_00003f2312f1_8_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_00003f2312f1_16_u8_1110_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xe }) +ENTRY(ff_sws_permute_001f213203f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_001f213203f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_001f213203f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_002f123103f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_002f123103f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_003f231201f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_003f231201f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_2f12f13f03f0_8_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_2f12f13f03f0_16_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_permute_2f12f13f03f0_32_u8_1111_neon, { .uop = SWS_UOP_PERMUTE, .par.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 = 0xf }) +ENTRY(ff_sws_copy_000000002010_8_u8_0110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0x6 }) +ENTRY(ff_sws_copy_000000002010_16_u8_0110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0x6 }) +ENTRY(ff_sws_copy_000000002010_32_u8_0110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0x6 }) +ENTRY(ff_sws_copy_000000103120_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_000000103120_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_000000103120_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_000000302010_8_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_000000302010_16_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_000000302010_32_u8_1110_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xe }) +ENTRY(ff_sws_copy_001f01f03020_8_u8_1111_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xf }) +ENTRY(ff_sws_copy_001f01f03020_16_u8_1111_neon, { .uop = SWS_UOP_COPY, .par.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 = 0xf }) ENTRY(ff_sws_swap_bytes_8_u16_0001_neon, { .uop = SWS_UOP_SWAP_BYTES, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) ENTRY(ff_sws_swap_bytes_8_u16_0010_neon, { .uop = SWS_UOP_SWAP_BYTES, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x2 }) ENTRY(ff_sws_swap_bytes_8_u16_0011_neon, { .uop = SWS_UOP_SWAP_BYTES, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x3 }) @@ -253,162 +253,162 @@ ENTRY(ff_sws_max_8_f32_0011_neon, { .uop = SWS_UOP_MAX, .block_size = 8, .type = ENTRY(ff_sws_max_8_f32_0111_neon, { .uop = SWS_UOP_MAX, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) ENTRY(ff_sws_max_8_f32_1001_neon, { .uop = SWS_UOP_MAX, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) ENTRY(ff_sws_max_8_f32_1111_neon, { .uop = SWS_UOP_MAX, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_unpack_0121_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {1, 2, 1, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0121_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {1, 2, 1, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0233_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {3, 3, 2, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0233_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {3, 3, 2, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0332_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {2, 3, 3, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0332_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {2, 3, 3, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0444_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {4, 4, 4, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0444_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {4, 4, 4, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0555_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {5, 5, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0555_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {5, 5, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0565_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {5, 6, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_0565_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {5, 6, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_unpack_2aaa_8_u32_0010_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x2 }) -ENTRY(ff_sws_unpack_2aaa_8_u32_0111_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x7 }) -ENTRY(ff_sws_unpack_aaa2_8_u32_0100_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x4 }) -ENTRY(ff_sws_unpack_aaa2_8_u32_1110_neon, { .uop = SWS_UOP_UNPACK, .pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xe }) -ENTRY(ff_sws_pack_0121_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {1, 2, 1, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0121_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {1, 2, 1, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0233_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {3, 3, 2, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0233_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {3, 3, 2, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0332_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {2, 3, 3, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0332_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {2, 3, 3, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_pack_0444_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {4, 4, 4, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_0444_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {4, 4, 4, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_0555_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {5, 5, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_0555_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {5, 5, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_0565_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {5, 6, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_0565_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {5, 6, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_pack_2aaa_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xf }) -ENTRY(ff_sws_pack_aaa2_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xf }) -ENTRY(ff_sws_lshift_1_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_1_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_1_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_2_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_2_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_2_8_u32_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x7 }) -ENTRY(ff_sws_lshift_2_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_2_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_3_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 3 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_4_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_lshift_4_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_4_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_4_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_lshift_4_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_4_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_5_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 5 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_6_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_lshift_6_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_6_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_6_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_lshift_6_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_6_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_lshift_7_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 7 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_8_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_lshift_8_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) -ENTRY(ff_sws_rshift_4_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_rshift_4_8_u16_0010_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x2 }) -ENTRY(ff_sws_rshift_4_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_rshift_4_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_rshift_6_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_rshift_6_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_rshift_6_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_clear_0fff_8_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x8 }) -ENTRY(ff_sws_clear_0fff_8_u8_1011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xb }) -ENTRY(ff_sws_clear_0fff_8_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x8 }) -ENTRY(ff_sws_clear_0fff_8_u16_1101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xd }) -ENTRY(ff_sws_clear_0fff_16_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x8 }) -ENTRY(ff_sws_clear_0fff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) -ENTRY(ff_sws_clear_1fff_8_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x8 }) -ENTRY(ff_sws_clear_1fff_8_u8_1011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xb }) -ENTRY(ff_sws_clear_1fff_8_u8_1101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xd }) -ENTRY(ff_sws_clear_1fff_8_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x8 }) -ENTRY(ff_sws_clear_1fff_16_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x8 }) -ENTRY(ff_sws_clear_1fff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x8, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) -ENTRY(ff_sws_clear_ff1f_8_u8_0010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x2, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x2 }) -ENTRY(ff_sws_clear_ff1f_8_u16_0010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x2, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x2 }) -ENTRY(ff_sws_clear_ff1f_16_u8_0010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x2, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x2 }) -ENTRY(ff_sws_clear_ff1f_16_u16_0010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x2, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x2 }) -ENTRY(ff_sws_clear_fff0_8_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x1 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff0_16_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x1 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff1_8_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff1_8_u8_1101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xd }) -ENTRY(ff_sws_clear_fff1_8_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff1_8_u16_1101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xd }) -ENTRY(ff_sws_clear_fff1_16_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff1_16_u8_0111_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) -ENTRY(ff_sws_clear_fff1_16_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_clear_fff1_16_u16_0111_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_clear_ffff_8_u8_0011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x3 }) -ENTRY(ff_sws_clear_ffff_8_u8_0101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x5 }) -ENTRY(ff_sws_clear_ffff_8_u8_1100_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xc }) -ENTRY(ff_sws_clear_ffff_8_u16_1100_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xc }) -ENTRY(ff_sws_clear_ffff_8_u32_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x1 }) -ENTRY(ff_sws_clear_ffff_8_u32_0010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x2 }) -ENTRY(ff_sws_clear_ffff_8_u32_0101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x5 }) -ENTRY(ff_sws_clear_ffff_8_u32_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x8 }) -ENTRY(ff_sws_clear_ffff_8_u32_1010_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xa }) -ENTRY(ff_sws_clear_ffff_8_u32_1011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xb }) -ENTRY(ff_sws_clear_ffff_8_u32_1101_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xd }) -ENTRY(ff_sws_clear_ffff_16_u8_0011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x3 }) -ENTRY(ff_sws_clear_ffff_16_u8_0110_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x6 }) -ENTRY(ff_sws_clear_ffff_16_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) -ENTRY(ff_sws_clear_ffff_16_u16_0011_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x3 }) -ENTRY(ff_sws_clear_ffff_16_u16_0111_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) -ENTRY(ff_sws_clear_ffff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) -ENTRY(ff_sws_linear_000000000f_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_00000000fc_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xffff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_00000000ff_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfffe8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_000000c000_8_f32_0010_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfffbf }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) -ENTRY(ff_sws_linear_000373dcc7_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x421, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_0003f3fccf_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_000c00c00c_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_000c30cc0f_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfadae }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_000ff3fcfc_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfa118 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_000ff3fcff_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xfa108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_c000000000_8_f32_1000_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xbffff }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) -ENTRY(ff_sws_linear_c00000000f_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xbffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_linear_c0000000fc_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xbfff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_linear_c003f3fccf_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xbb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_linear_c00c00c00c_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xbefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_linear_c00ff3fcff_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .linear = { .one = 0x0, .zero = 0xba108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_linear_fma_000000000f_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_fma_00000000fc_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xffff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_fma_00000000ff_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfffe8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) -ENTRY(ff_sws_linear_fma_000000c000_8_f32_0010_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfffbf }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) -ENTRY(ff_sws_linear_fma_000373dcc7_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x421, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_0003f3fccf_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_000c00c00c_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_000c30cc0f_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfadae }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_000ff3fcfc_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfa118 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_000ff3fcff_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xfa108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_linear_fma_c000000000_8_f32_1000_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xbffff }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) -ENTRY(ff_sws_linear_fma_c00000000f_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xbffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_linear_fma_c0000000fc_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xbfff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_linear_fma_c003f3fccf_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xbb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_linear_fma_c00c00c00c_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xbefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_linear_fma_c00ff3fcff_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .linear = { .one = 0x0, .zero = 0xba108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_0325_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {5, 2, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_032f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 2, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) -ENTRY(ff_sws_dither_2305_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {5, 0, 3, 2}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_230f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 3, 2}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) -ENTRY(ff_sws_dither_3000_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_302f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 2, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) -ENTRY(ff_sws_dither_3ff0_4_8_f32_1001_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_dither_5023_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {3, 2, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_5032_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {2, 3, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_5230_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 3, 2, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) -ENTRY(ff_sws_dither_5ff0_4_8_f32_1001_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) -ENTRY(ff_sws_dither_5fff_4_8_f32_1000_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) -ENTRY(ff_sws_dither_f023_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {3, 2, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_dither_f032_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {2, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_dither_f203_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {3, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_dither_f230_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 3, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_dither_f2f0_4_8_f32_0101_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x5 }) -ENTRY(ff_sws_dither_f2ff_4_8_f32_0100_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x4 }) -ENTRY(ff_sws_dither_f302_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {2, 0, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) -ENTRY(ff_sws_dither_ff30_4_8_f32_0011_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x3 }) -ENTRY(ff_sws_dither_ff3f_4_8_f32_0010_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) -ENTRY(ff_sws_dither_fff0_4_8_f32_0001_neon, { .uop = SWS_UOP_DITHER, .dither = { .y_offset = {0, 0, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_unpack_0121_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {1, 2, 1, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0121_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {1, 2, 1, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0233_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {3, 3, 2, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0233_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {3, 3, 2, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0332_8_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {2, 3, 3, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0332_16_u8_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {2, 3, 3, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0444_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {4, 4, 4, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0444_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {4, 4, 4, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0555_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {5, 5, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0555_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {5, 5, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0565_8_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {5, 6, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_0565_16_u16_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {5, 6, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_unpack_2aaa_8_u32_0010_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x2 }) +ENTRY(ff_sws_unpack_2aaa_8_u32_0111_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x7 }) +ENTRY(ff_sws_unpack_aaa2_8_u32_0100_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x4 }) +ENTRY(ff_sws_unpack_aaa2_8_u32_1110_neon, { .uop = SWS_UOP_UNPACK, .par.pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xe }) +ENTRY(ff_sws_pack_0121_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {1, 2, 1, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0121_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {1, 2, 1, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0233_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {3, 3, 2, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0233_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {3, 3, 2, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0332_8_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {2, 3, 3, 0} }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0332_16_u8_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {2, 3, 3, 0} }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_pack_0444_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {4, 4, 4, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_0444_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {4, 4, 4, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_0555_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {5, 5, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_0555_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {5, 5, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_0565_8_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {5, 6, 5, 0} }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_0565_16_u16_0111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {5, 6, 5, 0} }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_pack_2aaa_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {10, 10, 10, 2} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xf }) +ENTRY(ff_sws_pack_aaa2_8_u32_1111_neon, { .uop = SWS_UOP_PACK, .par.pack = { .pattern = {2, 10, 10, 10} }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xf }) +ENTRY(ff_sws_lshift_1_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 1 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_1_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_1_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 1 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_2_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_2_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_2_8_u32_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 2 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x7 }) +ENTRY(ff_sws_lshift_2_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_2_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 2 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_3_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 3 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_4_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_lshift_4_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_4_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_4_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_lshift_4_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_4_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_5_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 5 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_6_8_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_lshift_6_8_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_6_8_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_6_16_u16_0001_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_lshift_6_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_6_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_lshift_7_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 7 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_8_16_u16_0111_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_lshift_8_16_u16_1110_neon, { .uop = SWS_UOP_LSHIFT, .par.shift = { .amount = 8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0xe }) +ENTRY(ff_sws_rshift_4_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_rshift_4_8_u16_0010_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x2 }) +ENTRY(ff_sws_rshift_4_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 4 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_rshift_4_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 4 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_rshift_6_8_u16_0001_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_rshift_6_8_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 6 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_rshift_6_16_u16_0111_neon, { .uop = SWS_UOP_RSHIFT, .par.shift = { .amount = 6 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_clear_0fff_8_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x8 }) +ENTRY(ff_sws_clear_0fff_8_u8_1011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xb }) +ENTRY(ff_sws_clear_0fff_8_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x8 }) +ENTRY(ff_sws_clear_0fff_8_u16_1101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xd }) +ENTRY(ff_sws_clear_0fff_16_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x8 }) +ENTRY(ff_sws_clear_0fff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x8 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) +ENTRY(ff_sws_clear_1fff_8_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x8 }) +ENTRY(ff_sws_clear_1fff_8_u8_1011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xb }) +ENTRY(ff_sws_clear_1fff_8_u8_1101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xd }) +ENTRY(ff_sws_clear_1fff_8_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x8 }) +ENTRY(ff_sws_clear_1fff_16_u8_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x8 }) +ENTRY(ff_sws_clear_1fff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x8, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) +ENTRY(ff_sws_clear_ff1f_8_u8_0010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x2, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x2 }) +ENTRY(ff_sws_clear_ff1f_8_u16_0010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x2, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x2 }) +ENTRY(ff_sws_clear_ff1f_16_u8_0010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x2, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x2 }) +ENTRY(ff_sws_clear_ff1f_16_u16_0010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x2, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x2 }) +ENTRY(ff_sws_clear_fff0_8_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x1 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff0_16_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x1 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff1_8_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff1_8_u8_1101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xd }) +ENTRY(ff_sws_clear_fff1_8_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff1_8_u16_1101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xd }) +ENTRY(ff_sws_clear_fff1_16_u8_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff1_16_u8_0111_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x7 }) +ENTRY(ff_sws_clear_fff1_16_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_clear_fff1_16_u16_0111_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x1, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_clear_ffff_8_u8_0011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x3 }) +ENTRY(ff_sws_clear_ffff_8_u8_0101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0x5 }) +ENTRY(ff_sws_clear_ffff_8_u8_1100_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U8, .mask = 0xc }) +ENTRY(ff_sws_clear_ffff_8_u16_1100_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U16, .mask = 0xc }) +ENTRY(ff_sws_clear_ffff_8_u32_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x1 }) +ENTRY(ff_sws_clear_ffff_8_u32_0010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x2 }) +ENTRY(ff_sws_clear_ffff_8_u32_0101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x5 }) +ENTRY(ff_sws_clear_ffff_8_u32_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0x8 }) +ENTRY(ff_sws_clear_ffff_8_u32_1010_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xa }) +ENTRY(ff_sws_clear_ffff_8_u32_1011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xb }) +ENTRY(ff_sws_clear_ffff_8_u32_1101_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 8, .type = SWS_PIXEL_U32, .mask = 0xd }) +ENTRY(ff_sws_clear_ffff_16_u8_0011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x3 }) +ENTRY(ff_sws_clear_ffff_16_u8_0110_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U8, .mask = 0x6 }) +ENTRY(ff_sws_clear_ffff_16_u16_0001_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x1 }) +ENTRY(ff_sws_clear_ffff_16_u16_0011_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x3 }) +ENTRY(ff_sws_clear_ffff_16_u16_0111_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x7 }) +ENTRY(ff_sws_clear_ffff_16_u16_1000_neon, { .uop = SWS_UOP_CLEAR, .par.clear = { .one = 0x0, .zero = 0x0 }, .block_size = 16, .type = SWS_PIXEL_U16, .mask = 0x8 }) +ENTRY(ff_sws_linear_000000000f_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_00000000fc_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xffff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_00000000ff_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfffe8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_000000c000_8_f32_0010_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfffbf }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) +ENTRY(ff_sws_linear_000373dcc7_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x421, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_0003f3fccf_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_000c00c00c_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_000c30cc0f_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfadae }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_000ff3fcfc_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfa118 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_000ff3fcff_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xfa108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_c000000000_8_f32_1000_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xbffff }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) +ENTRY(ff_sws_linear_c00000000f_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xbffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_linear_c0000000fc_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xbfff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_linear_c003f3fccf_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xbb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_linear_c00c00c00c_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xbefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_linear_c00ff3fcff_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR, .par.lin = { .one = 0x0, .zero = 0xba108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_linear_fma_000000000f_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_fma_00000000fc_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xffff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_fma_00000000ff_8_f32_0001_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfffe8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) +ENTRY(ff_sws_linear_fma_000000c000_8_f32_0010_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfffbf }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) +ENTRY(ff_sws_linear_fma_000373dcc7_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x421, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_0003f3fccf_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_000c00c00c_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_000c30cc0f_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfadae }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_000ff3fcfc_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfa118 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_000ff3fcff_8_f32_0111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xfa108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_linear_fma_c000000000_8_f32_1000_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xbffff }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) +ENTRY(ff_sws_linear_fma_c00000000f_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xbffee }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_linear_fma_c0000000fc_8_f32_1001_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xbfff8 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_linear_fma_c003f3fccf_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xbb10a }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_linear_fma_c00c00c00c_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xbefbe }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_linear_fma_c00ff3fcff_8_f32_1111_neon, { .uop = SWS_UOP_LINEAR_FMA, .par.lin = { .one = 0x0, .zero = 0xba108 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_0325_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {5, 2, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_032f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 2, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) +ENTRY(ff_sws_dither_2305_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {5, 0, 3, 2}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_230f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 3, 2}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) +ENTRY(ff_sws_dither_3000_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_302f_4_8_f32_1110_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 2, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xe }) +ENTRY(ff_sws_dither_3ff0_4_8_f32_1001_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 0, 3}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_dither_5023_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {3, 2, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_5032_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {2, 3, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_5230_4_8_f32_1111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 3, 2, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0xf }) +ENTRY(ff_sws_dither_5ff0_4_8_f32_1001_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x9 }) +ENTRY(ff_sws_dither_5fff_4_8_f32_1000_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 0, 5}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x8 }) +ENTRY(ff_sws_dither_f023_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {3, 2, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_dither_f032_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {2, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_dither_f203_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {3, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_dither_f230_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 3, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_dither_f2f0_4_8_f32_0101_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x5 }) +ENTRY(ff_sws_dither_f2ff_4_8_f32_0100_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 2, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x4 }) +ENTRY(ff_sws_dither_f302_4_8_f32_0111_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {2, 0, 3, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x7 }) +ENTRY(ff_sws_dither_ff30_4_8_f32_0011_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x3 }) +ENTRY(ff_sws_dither_ff3f_4_8_f32_0010_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 3, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x2 }) +ENTRY(ff_sws_dither_fff0_4_8_f32_0001_neon, { .uop = SWS_UOP_DITHER, .par.dither = { .y_offset = {0, 0, 0, 0}, .size_log2 = 4 }, .block_size = 8, .type = SWS_PIXEL_F32, .mask = 0x1 }) diff --git a/libswscale/aarch64/ops_impl.h b/libswscale/aarch64/ops_impl.h index 94198835d0..304b68e44c 100644 --- a/libswscale/aarch64/ops_impl.h +++ b/libswscale/aarch64/ops_impl.h @@ -49,14 +49,7 @@ typedef struct SwsAArch64OpImplParams { SwsCompMask mask; SwsPixelType type; uint8_t block_size; - union { - SwsShiftUOp shift; - SwsClearUOp clear; - SwsMoveUOp move; - SwsPackUOp pack; - SwsLinearUOp linear; - SwsDitherUOp dither; - }; + SwsUOpParams par; } SwsAArch64OpImplParams; /* SwsCompMask-related helpers. */ @@ -75,7 +68,7 @@ static inline int linear_num_vregs(const SwsAArch64OpImplParams *params) { int count = 0; for (int i = 0; i < 4 * 5; i++) - if (!(params->linear.zero & (1ULL << i))) + if (!(params->par.lin.zero & (1ULL << i))) count++; return (count + 3) / 4; } diff --git a/libswscale/aarch64/ops_impl_conv.c b/libswscale/aarch64/ops_impl_conv.c index bd4b81f6bc..21360e51c7 100644 --- a/libswscale/aarch64/ops_impl_conv.c +++ b/libswscale/aarch64/ops_impl_conv.c @@ -31,9 +31,9 @@ static void swizzle_emit(SwsAArch64OpImplParams *out, uint8_t dst, uint8_t src) { - int idx = out->move.num_moves++; - out->move.dst[idx] = dst; - out->move.src[idx] = src; + int idx = out->par.move.num_moves++; + out->par.move.dst[idx] = dst; + out->par.move.src[idx] = src; } static void convert_swizzle_to_moves(const SwsOp *op, SwsAArch64OpImplParams *out) @@ -235,18 +235,18 @@ static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, break; case SWS_UOP_UNPACK: for (int i = 0; i < 4; i++) - out->pack.pattern[i] = op->pack.pattern[i]; + out->par.pack.pattern[i] = op->pack.pattern[i]; break; case SWS_UOP_PACK: out->mask = 0; for (int i = 0; i < 4 && op->pack.pattern[i]; i++) out->mask |= SWS_COMP(i); for (int i = 0; i < 4; i++) - out->pack.pattern[i] = op->pack.pattern[i]; + out->par.pack.pattern[i] = op->pack.pattern[i]; break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - out->shift.amount = op->shift.amount; + out->par.shift.amount = op->shift.amount; break; case SWS_UOP_CLEAR: out->mask = 0; @@ -254,13 +254,13 @@ static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, if (op->clear.mask & SWS_COMP(i)) { out->mask |= SWS_COMP(i); if (op->clear.value[i].num == 0) { - out->clear.zero |= SWS_COMP(i); + out->par.clear.zero |= SWS_COMP(i); } else { uint32_t val = op->clear.value[i].num / op->clear.value[i].den; if ((op->type == SWS_PIXEL_U8 && val == UINT8_MAX) || (op->type == SWS_PIXEL_U16 && val == UINT16_MAX) || (op->type == SWS_PIXEL_U32 && val == UINT32_MAX)) - out->clear.one |= SWS_COMP(i); + out->par.clear.one |= SWS_COMP(i); } } } @@ -271,16 +271,16 @@ static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, for (int i = 0; i < 4; i++) { if (!SWS_OP_NEEDED(op, i) || !(op->lin.mask & SWS_MASK_ROW(i))) { for (int j = 0; j < 5; j++) - out->linear.zero |= SWS_MASK(i, j); + out->par.lin.zero |= SWS_MASK(i, j); continue; } out->mask |= SWS_COMP(i); for (int j = 0; j < 5; j++) { const AVRational64 k = op->lin.m[i][j]; if (j < 4 && k.num == k.den) - out->linear.one |= SWS_MASK(i, j); + out->par.lin.one |= SWS_MASK(i, j); else if (k.num == 0) - out->linear.zero |= SWS_MASK(i, j); + out->par.lin.zero |= SWS_MASK(i, j); } } break; @@ -290,9 +290,9 @@ static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, op->dither.y_offset[2] >= 0, op->dither.y_offset[3] >= 0); LOOP(out->mask, i) { - out->dither.y_offset[i] = op->dither.y_offset[i]; + out->par.dither.y_offset[i] = op->dither.y_offset[i]; } - out->dither.size_log2 = op->dither.size_log2; + out->par.dither.size_log2 = op->dither.size_log2; break; } diff --git a/libswscale/tests/sws_ops_aarch64.c b/libswscale/tests/sws_ops_aarch64.c index bcce12da05..4ec024aa7e 100644 --- a/libswscale/tests/sws_ops_aarch64.c +++ b/libswscale/tests/sws_ops_aarch64.c @@ -105,6 +105,8 @@ static int aarch64_op_impl_cmp(const void *a, const void *b) { const SwsAArch64OpImplParams *pa = (const SwsAArch64OpImplParams *) a; const SwsAArch64OpImplParams *pb = (const SwsAArch64OpImplParams *) b; + const SwsUOpParams *para = &pa->par; + const SwsUOpParams *parb = &pb->par; if (pa->uop != pb->uop) return (int) pa->uop - pb->uop; @@ -112,47 +114,47 @@ static int aarch64_op_impl_cmp(const void *a, const void *b) switch (pa->uop) { case SWS_UOP_PERMUTE: case SWS_UOP_COPY: { - uint64_t ia = move_to_mask(&pa->move); - uint64_t ib = move_to_mask(&pb->move); + uint64_t ia = move_to_mask(¶->move); + uint64_t ib = move_to_mask(&parb->move); if (ia != ib) return (int64_t) (ia - ib) < 0 ? -1 : 1; break; } case SWS_UOP_UNPACK: case SWS_UOP_PACK: { - uint16_t ia = pack_to_mask(&pa->pack); - uint16_t ib = pack_to_mask(&pb->pack); + uint16_t ia = pack_to_mask(¶->pack); + uint16_t ib = pack_to_mask(&parb->pack); if (ia != ib) return (int) ia - ib; break; } case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - if (pa->shift.amount != pb->shift.amount) - return (int) pa->shift.amount - pb->shift.amount; + if (para->shift.amount != parb->shift.amount) + return (int) para->shift.amount - parb->shift.amount; break; case SWS_UOP_CLEAR: { - uint16_t ia = clear_to_mask(&pa->clear); - uint16_t ib = clear_to_mask(&pb->clear); + uint16_t ia = clear_to_mask(¶->clear); + uint16_t ib = clear_to_mask(&parb->clear); if (ia != ib) return (int) ia - ib; break; } case SWS_UOP_LINEAR: case SWS_UOP_LINEAR_FMA: { - uint64_t ia = linear_to_mask(&pa->linear); - uint64_t ib = linear_to_mask(&pb->linear); + uint64_t ia = linear_to_mask(¶->lin); + uint64_t ib = linear_to_mask(&parb->lin); if (ia != ib) return (int64_t) (ia - ib) < 0 ? -1 : 1; break; } case SWS_UOP_DITHER: { - uint16_t ia = dither_to_mask(pa, &pa->dither); - uint16_t ib = dither_to_mask(pb, &pb->dither); + uint16_t ia = dither_to_mask(pa, ¶->dither); + uint16_t ib = dither_to_mask(pb, &parb->dither); if (ia != ib) return (int) ia - ib; - if (pa->dither.size_log2 != pb->dither.size_log2) - return (int) pa->dither.size_log2 - pb->dither.size_log2; + if (para->dither.size_log2 != parb->dither.size_log2) + return (int) para->dither.size_log2 - parb->dither.size_log2; break; } } @@ -301,29 +303,30 @@ static const char pixel_type_names[SWS_PIXEL_TYPE_NB][4] = { static void impl_func_name(AVBPrint *bp, const SwsAArch64OpImplParams *params) { + const SwsUOpParams *par = ¶ms->par; av_bprintf(bp, "ff_sws_%s", op_type_names[params->uop]); switch (params->uop) { case SWS_UOP_PERMUTE: case SWS_UOP_COPY: - av_bprintf(bp, "_%012" PRIx64, move_to_mask(¶ms->move)); + av_bprintf(bp, "_%012" PRIx64, move_to_mask(&par->move)); break; case SWS_UOP_UNPACK: case SWS_UOP_PACK: - av_bprintf(bp, "_%04x", pack_to_mask(¶ms->pack)); + av_bprintf(bp, "_%04x", pack_to_mask(&par->pack)); break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - av_bprintf(bp, "_%u", params->shift.amount); + av_bprintf(bp, "_%u", par->shift.amount); break; case SWS_UOP_CLEAR: - av_bprintf(bp, "_%04x", clear_to_mask(¶ms->clear)); + av_bprintf(bp, "_%04x", clear_to_mask(&par->clear)); break; case SWS_UOP_LINEAR: case SWS_UOP_LINEAR_FMA: - av_bprintf(bp, "_%010" PRIx64, linear_to_mask(¶ms->linear)); + av_bprintf(bp, "_%010" PRIx64, linear_to_mask(&par->lin)); break; case SWS_UOP_DITHER: - av_bprintf(bp, "_%04x_%u", dither_to_mask(params, ¶ms->dither), params->dither.size_log2); + av_bprintf(bp, "_%04x_%u", dither_to_mask(params, &par->dither), par->dither.size_log2); break; } av_bprintf(bp, "_%u_%s_%04x_neon", params->block_size, pixel_type_names[params->type], nibble_mask(params->mask)); @@ -369,41 +372,42 @@ static const char pixel_types[SWS_PIXEL_TYPE_NB][32] = { static void serialize_op(AVBPrint *bp, const SwsAArch64OpImplParams *params) { + const SwsUOpParams *par = ¶ms->par; av_bprintf(bp, "ENTRY("); impl_func_name(bp, params); av_bprintf(bp, ", { .uop = %s", op_types[params->uop]); switch (params->uop) { case SWS_UOP_PERMUTE: case SWS_UOP_COPY: - 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]); + av_bprintf(bp, ", .par.move = { .num_moves = %d, .dst = {%d, %d, %d, %d, %d, %d}, .src = {%d, %d, %d, %d, %d, %d} }", + par->move.num_moves, + par->move.dst[0], par->move.dst[1], par->move.dst[2], + par->move.dst[3], par->move.dst[4], par->move.dst[5], + par->move.src[0], par->move.src[1], par->move.src[2], + par->move.src[3], par->move.src[4], par->move.src[5]); break; case SWS_UOP_UNPACK: case SWS_UOP_PACK: - av_bprintf(bp, ", .pack = { .pattern = {%d, %d, %d, %d} }", - params->pack.pattern[0], params->pack.pattern[1], - params->pack.pattern[2], params->pack.pattern[3]); + av_bprintf(bp, ", .par.pack = { .pattern = {%d, %d, %d, %d} }", + par->pack.pattern[0], par->pack.pattern[1], + par->pack.pattern[2], par->pack.pattern[3]); break; case SWS_UOP_LSHIFT: case SWS_UOP_RSHIFT: - av_bprintf(bp, ", .shift = { .amount = %u }", params->shift.amount); + av_bprintf(bp, ", .par.shift = { .amount = %u }", par->shift.amount); break; case SWS_UOP_CLEAR: - av_bprintf(bp, ", .clear = { .one = 0x%0x, .zero = 0x%0x }", params->clear.one, params->clear.zero); + av_bprintf(bp, ", .par.clear = { .one = 0x%0x, .zero = 0x%0x }", par->clear.one, par->clear.zero); break; case SWS_UOP_LINEAR: case SWS_UOP_LINEAR_FMA: - av_bprintf(bp, ", .linear = { .one = 0x%x, .zero = 0x%x }", params->linear.one, params->linear.zero); + av_bprintf(bp, ", .par.lin = { .one = 0x%x, .zero = 0x%x }", par->lin.one, par->lin.zero); break; case SWS_UOP_DITHER: - av_bprintf(bp, ", .dither = { .y_offset = {%u, %u, %u, %u}, .size_log2 = %u }", - params->dither.y_offset[0], params->dither.y_offset[1], - params->dither.y_offset[2], params->dither.y_offset[3], - params->dither.size_log2); + av_bprintf(bp, ", .par.dither = { .y_offset = {%u, %u, %u, %u}, .size_log2 = %u }", + par->dither.y_offset[0], par->dither.y_offset[1], + par->dither.y_offset[2], par->dither.y_offset[3], + par->dither.size_log2); break; } av_bprintf(bp, ", .block_size = %u, .type = %s, .mask = 0x%x })", params->block_size, pixel_types[params->type], params->mask); _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
