Go to the documentation of this file.
21 #ifndef SWSCALE_AARCH64_OPS_IMPL_H
22 #define SWSCALE_AARCH64_OPS_IMPL_H
111 #define MASK_GET(mask, idx) (((mask) >> ((idx) << 2)) & 0xf)
112 #define MASK_SET(mask, idx, val) do { (mask) |= (((val) & 0xf) << ((idx) << 2)); } while (0)
114 #define LOOP(mask, idx) \
115 for (int idx = 0; idx < 4; idx++) \
116 if (MASK_GET(mask, idx))
117 #define LOOP_BWD(mask, idx) \
118 for (int idx = 3; idx >= 0; idx--) \
119 if (MASK_GET(mask, idx))
121 #define LOOP_MASK(p, idx) LOOP(p->mask, idx)
122 #define LOOP_MASK_BWD(p, idx) LOOP_BWD(p->mask, idx)
124 #define LINEAR_MASK_GET(mask, idx, jdx) (((mask) >> (2 * ((5 * (idx) + (jdx))))) & 3)
125 #define LINEAR_MASK_SET(mask, idx, jdx, val) do { \
126 (mask) |= ((((SwsAArch64LinearOpMask) (val)) & 3) << (2 * ((5 * (idx) + (jdx))))); \
128 #define LINEAR_MASK_0 0
129 #define LINEAR_MASK_1 1
130 #define LINEAR_MASK_X 3
132 #define LOOP_LINEAR_MASK(p, idx, jdx) \
134 for (int jdx = 0; jdx < 5; jdx++) \
135 if (LINEAR_MASK_GET(p->linear.mask, idx, jdx))
143 return (count + 3) / 4;
148 const int reorder_col[5] = { 4, 0, 1, 2, 3 };
149 return reorder_col[idx];
171 #define offsetof_exec_in 0
172 #define offsetof_exec_out 32
173 #define offsetof_exec_in_bump 128
174 #define offsetof_exec_out_bump 160
175 #define offsetof_impl_cont 0
176 #define offsetof_impl_priv 16
177 #define sizeof_impl 32
179 #if ARCH_AARCH64 && HAVE_NEON
static int linear_index_to_vx(int idx)
static int linear_index_to_sws_op(int idx)
@ AARCH64_SWS_OP_READ_NIBBLE
@ AARCH64_SWS_OP_SWAP_BYTES
@ AARCH64_SWS_OP_READ_BIT
SwsAArch64PixelType to_type
uint64_t SwsAArch64LinearOpMask
Affine coefficient mask for linear op.
@ AARCH64_SWS_OP_WRITE_NIBBLE
uint16_t SwsAArch64OpMask
#define offsetof_impl_cont
Copyright (C) 2026 Niklas Haas.
#define offsetof_exec_out_bump
SwsAArch64DitherOp dither
@ AARCH64_SWS_OP_READ_PACKED
#define offsetof_exec_out
@ AARCH64_SWS_OP_WRITE_PLANAR
#define i(width, name, range_min, range_max)
@ AARCH64_SWS_OP_WRITE_BIT
@ AARCH64_SWS_OP_READ_PLANAR
SwsAArch64LinearOp linear
#define offsetof_impl_priv
#define offsetof_exec_in
These values will be used by ops_asmgen to access fields inside of SwsOpExec and SwsOpImpl.
SwsAArch64LinearOpMask mask
#define LOOP_LINEAR_MASK(p, idx, jdx)
@ AARCH64_SWS_OP_WRITE_PACKED
SwsAArch64OpImplParams describes the parameters for an SwsAArch64OpType operation.
@ AARCH64_SWS_OP_PROCESS_RETURN
#define offsetof_exec_in_bump
static int linear_index_is_offset(int idx)
static int linear_num_vregs(const SwsAArch64OpImplParams *params)