ffmpeg/libswscale/aarch64
DROOdotFOO 30595cbc5d swscale/aarch64/yuv2rgb_neon: aggregate 16bpp predicates
The six .ifc cascades that gate 16bpp behavior in yuv2rgb_neon.S
(linesize padding in three load_args macros, d8/d9 save/restore,
main-loop pack dispatch) all branch on the same four output formats.
Aggregate the predicate into four GAS .set symbols emitted once per
declare_func via a new set_rgb16_predicates macro:

  rgb16   - 1 for *565le and *555le outputs; 0 otherwise
  r_first - 1 for rgb*le (R high); 0 for bgr*le (B high)
  gshift  - 2 for 565, 3 for 555 (passed as pack_rgb16's g_shr)
  hshift  - 11 for 565, 10 for 555 (passed as pack_rgb16's high_shl)

Call sites become a flat ".if rgb16" gate (five places) plus a 2-way
".if r_first" inside ".if rgb16" for the pack dispatch (one place).
.if/.endif count drops from 46 to 33; -88/+49 lines net.

Pure source-level refactor: the full object disassembly is byte-for-byte
identical to the pre-refactor build (MD5 2a6ac497cabc81849e0c80ec0fde0550
on Apple M1, clang). checkasm --test=sw_yuv2rgb 110/110, full checkasm
7657/7657.

Signed-off-by: DROOdotFOO <drew@axol.io>
2026-05-26 19:26:28 +02:00
..
.gitignore swscale/aarch64: introduce ops_asmgen for NEON backend 2026-03-30 11:38:35 +00:00
asm-offsets.h swscale: Add AArch64 Neon path for xyz12Torgb48 LE 2025-12-05 10:28:18 +00:00
hscale.S all: fix typos found by codespell 2025-08-03 13:48:47 +02:00
input.S swscale/aarch64: dotprod implementation of rgba32_to_Y 2025-03-04 10:16:44 +02:00
Makefile swscale/aarch64: add NEON sws_ops backend 2026-03-30 11:38:35 +00:00
ops.c swscale/ops_chain: split generic setup helpers into op-specific helpers 2026-04-02 11:48:15 +00:00
ops_asmgen.c swscale/ops: split SwsConst up into op-specific structs 2026-04-02 11:48:15 +00:00
ops_entries.c swscale/aarch64: introduce tool to enumerate sws_ops for NEON backend 2026-03-30 11:38:35 +00:00
ops_impl.c swscale/aarch64: introduce ops_asmgen for NEON backend 2026-03-30 11:38:35 +00:00
ops_impl.h swscale/aarch64: add NEON sws_ops backend 2026-03-30 11:38:35 +00:00
ops_impl_conv.c swscale/aarch64/ops: compute SWS_OP_PACK mask directly 2026-04-16 23:25:17 +02:00
ops_lookup.h swscale/aarch64: add NEON sws_ops backend 2026-03-30 11:38:35 +00:00
output.S swscale/output: Implement yuv2nv12cx neon assembly 2025-08-12 09:05:00 +00:00
range_convert_neon.S swscale/aarch64: add neon {lum,chr}ConvertRange16 2024-12-05 21:10:29 +01:00
rasm.c swscale/aarch64: mark CPS kernel functions as indirect branch targets 2026-03-31 11:48:52 +00:00
rasm.h swscale/aarch64: mark CPS kernel functions as indirect branch targets 2026-03-31 11:48:52 +00:00
rasm_print.c swscale/aarch64: mark CPS kernel functions as indirect branch targets 2026-03-31 11:48:52 +00:00
rgb2rgb.c swscale/aarch64: add NEON rgb32tobgr24 and rgb24tobgr32 conversions 2026-03-04 10:30:08 +00:00
rgb2rgb_neon.S swscale/aarch64: add NEON rgb32tobgr24 and rgb24tobgr32 conversions 2026-03-04 10:30:08 +00:00
swscale.c swscale: Add AArch64 Neon path for xyz12Torgb48 LE 2025-12-05 10:28:18 +00:00
swscale_unscaled.c swscale/aarch64: add NEON yuv->rgb16 fast paths 2026-05-22 10:03:07 +00:00
swscale_unscaled_neon.S swscale/aarch64: cosmetics fix (spaces inside curly braces) 2024-08-26 11:07:49 +02:00
xyz2rgb_neon.S swscale: Add AArch64 Neon path for xyz12Torgb48 LE 2025-12-05 10:28:18 +00:00
yuv2rgb_neon.S swscale/aarch64/yuv2rgb_neon: aggregate 16bpp predicates 2026-05-26 19:26:28 +02:00