Commit 0e49820959 for ffmpeg
commit 0e49820959bf914413ccb8dbf1b7b1a36272bb65
Author: Niklas Haas <git@haasn.dev>
Date: Thu Oct 22 20:15:54 2026 +0200
swscale: generate disjoint uop macros for the C and x86 backends
Previously, the uop macros were generated from the union of uops over all
backends, so each backend would also instantiate uops that only the other
one can ever use. Split off a separate "x86" backend, and generate a separate
C header for it, together with its NASM macros in a single pass.
The x86 backend only enables SWS_UOP_FLAG_FMA on CPUs with FMA3, so generate
its uops both with and without FMA.
This does not reduce the checkasm coverage: the uops removed from
uops_macros.h are all LINEAR_FMA, READ_PLANAR_FV_FMA or RW_SHUFFLE, which
checkasm does not test, since the C reference backend cannot run them. The
only tests that disappear are the SSE4 and AVX2 variants of two U8 PERMUTE
kernels, which the x86 backend no longer builds because it never uses them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/libswscale/uops_macros.h b/libswscale/uops_macros.h
index 9e300fbac1..5082b45237 100644
--- a/libswscale/uops_macros.h
+++ b/libswscale/uops_macros.h
@@ -49,16 +49,8 @@
MACRO(__VA_ARGS__, u8_read_planar_fv_xy_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, u8_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, u8_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
-#define SWS_FOR_U8_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_x_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xy_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
-#define SWS_FOR_STRUCT_U8_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U8_READ_PLANAR_FV_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_READ_PLANAR_FV_FMA(MACRO, ...)
#define SWS_FOR_U8_READ_PACKED(MACRO, ...) \
MACRO(__VA_ARGS__, u8_read_packed_xy , SWS_PIXEL_U8 , SWS_UOP_READ_PACKED , 0x3) \
MACRO(__VA_ARGS__, u8_read_packed_xyz , SWS_PIXEL_U8 , SWS_UOP_READ_PACKED , 0x7) \
@@ -105,52 +97,8 @@
MACRO(__VA_ARGS__, u8_write_bit_x , SWS_PIXEL_U8 , SWS_UOP_WRITE_BIT , 0x1)
#define SWS_FOR_STRUCT_U8_WRITE_BIT(MACRO, ...) \
MACRO(__VA_ARGS__, u8_write_bit_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_BIT , .mask = 0x1)
-#define SWS_FOR_U8_RW_SHUFFLE(MACRO, ...) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_2_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 2, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 4, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 4, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_5_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 5, 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_6_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 6, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 8, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 8, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_10_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 10, 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 12, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 12, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_5 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 15, 5) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 15, 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_4 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 4) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_8 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 8) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_2_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 2, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_4_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 4, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_6_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 6, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_8_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 8, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_12_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 12, 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_16_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 16, 16)
-#define SWS_FOR_STRUCT_U8_RW_SHUFFLE(MACRO, ...) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_2_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 2, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 4, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 4, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_5_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 5, .par.shuffle.write_size = 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_6_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 6, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 8, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 8, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_10_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 10, .par.shuffle.write_size = 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 12, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 12, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_5 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 15, .par.shuffle.write_size = 5) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 15, .par.shuffle.write_size = 15) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_4 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 4) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_8 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 8) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 12) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_2_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 2, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_4_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 4, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_6_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 6, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_8_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 8, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_12_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 12, .par.shuffle.write_size = 16) \
- MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_16_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 16, .par.shuffle.write_size = 16)
+#define SWS_FOR_U8_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_RW_SHUFFLE(MACRO, ...)
#define SWS_FOR_U8_PERMUTE(MACRO, ...) \
MACRO(__VA_ARGS__, u8_permute_xy_xy_zw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x3, 2, 0, 1, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0) \
MACRO(__VA_ARGS__, u8_permute_xyz_x_w , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
@@ -385,16 +333,8 @@
MACRO(__VA_ARGS__, u16_read_planar_fv_xy_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, u16_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, u16_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
-#define SWS_FOR_U16_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_x_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xy_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
-#define SWS_FOR_STRUCT_U16_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U16_READ_PLANAR_FV_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_READ_PLANAR_FV_FMA(MACRO, ...)
#define SWS_FOR_U16_READ_PACKED(MACRO, ...) \
MACRO(__VA_ARGS__, u16_read_packed_xy , SWS_PIXEL_U16, SWS_UOP_READ_PACKED , 0x3) \
MACRO(__VA_ARGS__, u16_read_packed_xyz , SWS_PIXEL_U16, SWS_UOP_READ_PACKED , 0x7) \
@@ -897,16 +837,8 @@
MACRO(__VA_ARGS__, f32_read_planar_fv_xy_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, f32_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
MACRO(__VA_ARGS__, f32_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
-#define SWS_FOR_F32_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_x_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xy_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
-#define SWS_FOR_STRUCT_F32_READ_PLANAR_FV_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
- MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_F32_READ_PLANAR_FV_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_PLANAR_FV_FMA(MACRO, ...)
#define SWS_FOR_F32_READ_PACKED(MACRO, ...)
#define SWS_FOR_STRUCT_F32_READ_PACKED(MACRO, ...)
#define SWS_FOR_F32_READ_NIBBLE(MACRO, ...)
@@ -1089,64 +1021,8 @@
MACRO(__VA_ARGS__, f32_linear_xyzw_xxx0x_xxx0x_xxx0x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108) \
MACRO(__VA_ARGS__, f32_linear_xyzw_x0x0x_xxx0x_xx00x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbb10a) \
MACRO(__VA_ARGS__, f32_linear_xyzw_x0000_0x000_00x00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbefbe)
-#define SWS_FOR_F32_LINEAR_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffe8, 0xfffe8) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffe8, 0xfffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_x000x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffee, 0xfffee) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_X000x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffee, 0xfffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxx00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffff8) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xXx00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffa) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxX00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffc) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xXX00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffe) \
- MACRO(__VA_ARGS__, f32_linear_fma_y_0x000 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x2, 0x00000, 0xfffbf, 0xfffbf) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx0x_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfa108) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XxX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfbdaf) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XXX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_X0X0x_XXX0x_XX00x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfb10a, 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx00_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfa118) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XxX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfbdbe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XXX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfbdfe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_X000x_0X00x_00X0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfadae, 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_x0000_0x000_00x00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfefbe, 0xfefbe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_10X0x_1XX0x_1X00x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00421, 0xfb10a, 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_w_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x8, 0x00000, 0xbffff, 0xbffff) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_x000x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbffee, 0xbffee) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_X000x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbffee, 0xbffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_xxx00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbfff8, 0xbfff8) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_xXX00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbfff8, 0xbfffe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_xxx0x_xxx0x_xxx0x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xba108, 0xba108) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_XXX0x_XXX0x_XXX0x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xba108, 0xbbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_X0X0x_XXX0x_XX00x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xbb10a, 0xbbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_x0000_0x000_00x00_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xbefbe, 0xbefbe)
-#define SWS_FOR_STRUCT_F32_LINEAR_FMA(MACRO, ...) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffe8, .par.lin.exact = 0xfffe8) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffe8, .par.lin.exact = 0xfffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_x000x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee, .par.lin.exact = 0xfffee) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_X000x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee, .par.lin.exact = 0xfffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxx00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffff8) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xXx00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffa) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xxX00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffc) \
- MACRO(__VA_ARGS__, f32_linear_fma_x_xXX00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffe) \
- MACRO(__VA_ARGS__, f32_linear_fma_y_0x000 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x2, .par.lin.one = 0x00000, .par.lin.zero = 0xfffbf, .par.lin.exact = 0xfffbf) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx0x_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfa108) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XxX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfbdaf) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XXX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_X0X0x_XXX0x_XX00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfb10a, .par.lin.exact = 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx00_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfa118) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XxX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfbdbe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XXX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfbdfe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_X000x_0X00x_00X0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae, .par.lin.exact = 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe, .par.lin.exact = 0xfefbe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyz_10X0x_1XX0x_1X00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00421, .par.lin.zero = 0xfb10a, .par.lin.exact = 0xfbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_w_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x8, .par.lin.one = 0x00000, .par.lin.zero = 0xbffff, .par.lin.exact = 0xbffff) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_x000x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbffee, .par.lin.exact = 0xbffee) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_X000x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbffee, .par.lin.exact = 0xbffef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_xxx00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbfff8, .par.lin.exact = 0xbfff8) \
- MACRO(__VA_ARGS__, f32_linear_fma_xw_xXX00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbfff8, .par.lin.exact = 0xbfffe) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_xxx0x_xxx0x_xxx0x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108, .par.lin.exact = 0xba108) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_XXX0x_XXX0x_XXX0x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108, .par.lin.exact = 0xbbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_X0X0x_XXX0x_XX00x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbb10a, .par.lin.exact = 0xbbdef) \
- MACRO(__VA_ARGS__, f32_linear_fma_xyzw_x0000_0x000_00x00_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbefbe, .par.lin.exact = 0xbefbe)
+#define SWS_FOR_F32_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_LINEAR_FMA(MACRO, ...)
#define SWS_FOR_F32_DITHER(MACRO, ...) \
MACRO(__VA_ARGS__, f32_dither_x_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x1, 0, 0, 0, 0, 4) \
MACRO(__VA_ARGS__, f32_dither_y_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x2, 0, 3, 0, 0, 4) \
diff --git a/libswscale/uops_macros_gen.c b/libswscale/uops_macros_gen.c
index 6985451168..40d3e888b9 100644
--- a/libswscale/uops_macros_gen.c
+++ b/libswscale/uops_macros_gen.c
@@ -228,12 +228,15 @@ typedef struct Backend {
static const Backend backends[] = {
{
- /* Currently also covers all uops used by the x86 backend */
.name = "c",
.guard = "SWSCALE_UOPS_MACROS_H",
+ .flags = { COMMON_FLAGS },
+ }, {
+ .name = "x86",
+ .guard = "SWSCALE_X86_UOPS_MACROS_H",
.flags = {
- COMMON_FLAGS,
- COMMON_FLAGS | SWS_UOP_FLAG_PSHUFB | SWS_UOP_FLAG_FMA,
+ COMMON_FLAGS | SWS_UOP_FLAG_PSHUFB,
+ COMMON_FLAGS | SWS_UOP_FLAG_PSHUFB | SWS_UOP_FLAG_FMA, /* FMA3 */
},
},
};
@@ -490,7 +493,7 @@ static int usage(void)
{
fprintf(stderr, "Usage: uops_macros_gen [-backend BACKEND] [-nasm FILE]\n"
"Writes C macros to stdout, and optionally NASM macros to FILE\n"
- "BACKEND is one of: c (default)\n");
+ "BACKEND is one of: c (default), x86\n");
return 1;
}
diff --git a/libswscale/x86/ops.c b/libswscale/x86/ops.c
index 23785c58ca..7985b7a026 100644
--- a/libswscale/x86/ops.c
+++ b/libswscale/x86/ops.c
@@ -26,7 +26,7 @@
#include "../ops_chain.h"
#include "../uops.h"
-#include "../uops_macros.h"
+#include "uops_macros.h"
static int setup_rw_packed(const SwsImplParams *params, SwsImplResult *out)
{
diff --git a/libswscale/x86/uops_macros.asm b/libswscale/x86/uops_macros.asm
index 6df56d0e8f..d7d539f286 100644
--- a/libswscale/x86/uops_macros.asm
+++ b/libswscale/x86/uops_macros.asm
@@ -108,8 +108,6 @@
DECL_OP %1, u8_permute_xyz_yx_xw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 2, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0
DECL_OP %1, u8_permute_xyz_xyz_yzw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 3, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 0
DECL_OP %1, u8_permute_xyz_xtyz_wyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 4, 0, -1, 1, 2, 0, 0, 3, 1, 2, -1, 0, 0
- DECL_OP %1, u8_permute_xyw_x_z , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xb, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0
- DECL_OP %1, u8_permute_xzw_x_y , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xd, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
DECL_OP %1, u8_permute_yzw_y_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DECL_OP %1, u8_permute_yzw_z_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DECL_OP %1, u8_permute_yzw_w_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/libswscale/x86/uops_macros.h b/libswscale/x86/uops_macros.h
new file mode 100644
index 0000000000..91499a1d86
--- /dev/null
+++ b/libswscale/x86/uops_macros.h
@@ -0,0 +1,1207 @@
+/**
+ * This file is automatically generated. Do not edit manually.
+ * To regenerate, run: make fate-sws-uops-macros GEN=1
+ */
+
+#ifndef SWSCALE_X86_UOPS_MACROS_H
+#define SWSCALE_X86_UOPS_MACROS_H
+
+/**
+ * Boilerplate helper macros, for template-based backends. These will be
+ * instantiated like this, with parameters in struct order:
+ * MACRO(__VA_ARGS__, NAME, UOP, TYPE, MASK, [PARAMS,])
+ * The _STRUCT variants pass all arguments in C struct syntax, while the
+ * plain variants give them as separate C values (e.g. for use in calls)
+ */
+#define SWS_GLUE3(x, y, z) x ## _ ## y ## _ ## z
+#define SWS_FOR(TYPE, UOP, MACRO, ...) \
+ SWS_GLUE3(SWS_FOR, TYPE, UOP)(MACRO, __VA_ARGS__)
+#define SWS_FOR_STRUCT(TYPE, UOP, MACRO, ...) \
+ SWS_GLUE3(SWS_FOR_STRUCT, TYPE, UOP)(MACRO, __VA_ARGS__)
+
+#define SWS_FOR_U8_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_x , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u8_read_planar_xy , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR , 0x3) \
+ MACRO(__VA_ARGS__, u8_read_planar_xyz , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u8_read_planar_xyzw , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U8_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_read_planar_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_read_planar_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_read_planar_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR , .mask = 0xf)
+#define SWS_FOR_U8_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_x_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FH , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xy_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FH , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xyz_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FH , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xyzw_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FH , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U8_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_x_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xy_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xyz_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fh_xyzw_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U8_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_x_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xy_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xyz_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xyzw_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U8_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_x_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xy_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U8_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_x_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xy_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_U8 , SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U8_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u8_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U8_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_packed_xy , SWS_PIXEL_U8 , SWS_UOP_READ_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u8_read_packed_xyz , SWS_PIXEL_U8 , SWS_UOP_READ_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u8_read_packed_xyzw , SWS_PIXEL_U8 , SWS_UOP_READ_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U8_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_packed_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_read_packed_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_read_packed_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PACKED , .mask = 0xf)
+#define SWS_FOR_U8_READ_NIBBLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_nibble_x , SWS_PIXEL_U8 , SWS_UOP_READ_NIBBLE , 0x1)
+#define SWS_FOR_STRUCT_U8_READ_NIBBLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_nibble_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_NIBBLE , .mask = 0x1)
+#define SWS_FOR_U8_READ_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_bit_x , SWS_PIXEL_U8 , SWS_UOP_READ_BIT , 0x1)
+#define SWS_FOR_STRUCT_U8_READ_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_bit_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_BIT , .mask = 0x1)
+#define SWS_FOR_U8_READ_PALETTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_palette_xyzw , SWS_PIXEL_U8 , SWS_UOP_READ_PALETTE , 0xf)
+#define SWS_FOR_STRUCT_U8_READ_PALETTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_read_palette_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_READ_PALETTE , .mask = 0xf)
+#define SWS_FOR_U8_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_planar_x , SWS_PIXEL_U8 , SWS_UOP_WRITE_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u8_write_planar_xy , SWS_PIXEL_U8 , SWS_UOP_WRITE_PLANAR , 0x3) \
+ MACRO(__VA_ARGS__, u8_write_planar_xyz , SWS_PIXEL_U8 , SWS_UOP_WRITE_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u8_write_planar_xyzw , SWS_PIXEL_U8 , SWS_UOP_WRITE_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U8_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_planar_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_write_planar_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_write_planar_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_write_planar_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PLANAR , .mask = 0xf)
+#define SWS_FOR_U8_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_packed_xy , SWS_PIXEL_U8 , SWS_UOP_WRITE_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u8_write_packed_xyz , SWS_PIXEL_U8 , SWS_UOP_WRITE_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u8_write_packed_xyzw , SWS_PIXEL_U8 , SWS_UOP_WRITE_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U8_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_packed_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_write_packed_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_write_packed_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_PACKED , .mask = 0xf)
+#define SWS_FOR_U8_WRITE_NIBBLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_nibble_x , SWS_PIXEL_U8 , SWS_UOP_WRITE_NIBBLE , 0x1)
+#define SWS_FOR_STRUCT_U8_WRITE_NIBBLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_nibble_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_NIBBLE , .mask = 0x1)
+#define SWS_FOR_U8_WRITE_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_bit_x , SWS_PIXEL_U8 , SWS_UOP_WRITE_BIT , 0x1)
+#define SWS_FOR_STRUCT_U8_WRITE_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_write_bit_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_WRITE_BIT , .mask = 0x1)
+#define SWS_FOR_U8_RW_SHUFFLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_2_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 2, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 4, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 4, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_5_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 5, 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_6_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 6, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 8, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 8, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_10_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 10, 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 12, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 12, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_5 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 15, 5) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_15 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 15, 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_4 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 4) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_8 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 8) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_12 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0x0, 16, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_2_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 2, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_4_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 4, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_6_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 6, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_8_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 8, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_12_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 12, 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_16_16 , SWS_PIXEL_U8 , SWS_UOP_RW_SHUFFLE , 0x1, 0xff, 16, 16)
+#define SWS_FOR_STRUCT_U8_RW_SHUFFLE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_2_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 2, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 4, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_4_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 4, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_5_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 5, .par.shuffle.write_size = 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_6_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 6, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 8, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_8_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 8, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_10_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 10, .par.shuffle.write_size = 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 12, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_12_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 12, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_5 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 15, .par.shuffle.write_size = 5) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_15_15 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 15, .par.shuffle.write_size = 15) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_4 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 4) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_8 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 8) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_12 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 12) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_0_16_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0x0, .par.shuffle.read_size = 16, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_2_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 2, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_4_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 4, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_6_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 6, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_8_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 8, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_12_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 12, .par.shuffle.write_size = 16) \
+ MACRO(__VA_ARGS__, u8_rw_shuffle_x_ff_16_16 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_RW_SHUFFLE , .mask = 0x1, .par.shuffle.clear_value = 0xff, .par.shuffle.read_size = 16, .par.shuffle.write_size = 16)
+#define SWS_FOR_U8_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_permute_xy_xy_zw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x3, 2, 0, 1, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_x_w , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_y_w , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xy_yw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 2, 0, 1, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_yx_xw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 2, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xyz_yzw , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 3, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xtyz_wyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0x7, 4, 0, -1, 1, 2, 0, 0, 3, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_y_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_z_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_w_x , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wz_zx , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 2, 3, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wyz_yzx , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 3, 3, 1, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wzy_zyx , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 3, 3, 2, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wtyz_xyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xe, 4, 3, -1, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txy_xyt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txz_xzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 2, 0, 0, 0, 0, 2, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyz_yzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 3, -1, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyw_ywt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 3, -1, 1, 3, 0, 0, 0, 1, 3, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txyz_xyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txzy_xzyt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 2, 1, 0, 0, 0, 2, 1, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txzw_xzwt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 2, 3, 0, 0, 0, 2, 3, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwz_xwzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 3, 2, 0, 0, 0, 3, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyzw_yzwt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 4, -1, 1, 2, 3, 0, 0, 1, 2, 3, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txyzw_xyzwt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 1, 2, 3, 0, 0, 1, 2, 3, -1, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwyz_xwyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 3, 1, 2, 0, 0, 3, 1, 2, -1, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwzy_xwzyt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 3, 2, 1, 0, 0, 3, 2, 1, -1, 0) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwtyz_xwtyzt , SWS_PIXEL_U8 , SWS_UOP_PERMUTE , 0xf, 6, -1, 0, 3, -1, 1, 2, 0, 3, -1, 1, 2, -1)
+#define SWS_FOR_STRUCT_U8_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_permute_xy_xy_zw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x3, .par.move.num_moves = 2, .par.move.dst = {0, 1, 0, 0, 0, 0}, .par.move.src = {2, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_x_w , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_y_w , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xy_yw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {0, 1, 0, 0, 0, 0}, .par.move.src = {1, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_yx_xw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {0, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xyz_yzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 3, .par.move.dst = {0, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, 3, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyz_xtyz_wyzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 4, .par.move.dst = {0, -1, 1, 2, 0, 0}, .par.move.src = {3, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_y_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_z_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {2, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_w_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {3, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wz_zx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 2, .par.move.dst = {3, 2, 0, 0, 0, 0}, .par.move.src = {2, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wyz_yzx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {3, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wzy_zyx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {3, 2, 1, 0, 0, 0}, .par.move.src = {2, 1, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_yzw_wtyz_xyzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 4, .par.move.dst = {3, -1, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txy_xyt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 1, 0, 0, 0}, .par.move.src = {0, 1, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txz_xzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 2, 0, 0, 0}, .par.move.src = {0, 2, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyz_yzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyw_ywt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 1, 3, 0, 0, 0}, .par.move.src = {1, 3, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txyz_xyzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txzy_xzyt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 2, 1, 0, 0}, .par.move.src = {0, 2, 1, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txzw_xzwt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 2, 3, 0, 0}, .par.move.src = {0, 2, 3, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwz_xwzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 3, 2, 0, 0}, .par.move.src = {0, 3, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_tyzw_yzwt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 1, 2, 3, 0, 0}, .par.move.src = {1, 2, 3, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txyzw_xyzwt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 1, 2, 3, 0}, .par.move.src = {0, 1, 2, 3, -1, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwyz_xwyzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 3, 1, 2, 0}, .par.move.src = {0, 3, 1, 2, -1, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwzy_xwzyt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 3, 2, 1, 0}, .par.move.src = {0, 3, 2, 1, -1, 0}) \
+ MACRO(__VA_ARGS__, u8_permute_xyzw_txwtyz_xwtyzt , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 6, .par.move.dst = {-1, 0, 3, -1, 1, 2}, .par.move.src = {0, 3, -1, 1, 2, -1})
+#define SWS_FOR_U8_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_copy_yzw_yzw_xxx , SWS_PIXEL_U8 , SWS_UOP_COPY , 0xe, 3, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_yz_xx , SWS_PIXEL_U8 , SWS_UOP_COPY , 0xf, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_zwy_xyx , SWS_PIXEL_U8 , SWS_UOP_COPY , 0xf, 3, 2, 3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_zxyw_xyzz , SWS_PIXEL_U8 , SWS_UOP_COPY , 0xf, 4, 2, 0, 1, 3, 0, 0, 0, 1, 2, 2, 0, 0)
+#define SWS_FOR_STRUCT_U8_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_copy_yzw_yzw_xxx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_COPY , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {1, 2, 3, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_yz_xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 2, .par.move.dst = {1, 2, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_zwy_xyx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {2, 3, 1, 0, 0, 0}, .par.move.src = {0, 1, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u8_copy_xyzw_zxyw_xyzz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {2, 0, 1, 3, 0, 0}, .par.move.src = {0, 1, 2, 2, 0, 0})
+#define SWS_FOR_U8_SWAP_BYTES(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_SWAP_BYTES(MACRO, ...)
+#define SWS_FOR_U8_EXPAND_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_expand_bit_x , SWS_PIXEL_U8 , SWS_UOP_EXPAND_BIT , 0x1)
+#define SWS_FOR_STRUCT_U8_EXPAND_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_expand_bit_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_BIT , .mask = 0x1)
+#define SWS_FOR_U8_EXPAND_PAIR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_expand_pair_x , SWS_PIXEL_U8 , SWS_UOP_EXPAND_PAIR , 0x1) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xy , SWS_PIXEL_U8 , SWS_UOP_EXPAND_PAIR , 0x3) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xyz , SWS_PIXEL_U8 , SWS_UOP_EXPAND_PAIR , 0x7) \
+ MACRO(__VA_ARGS__, u8_expand_pair_yzw , SWS_PIXEL_U8 , SWS_UOP_EXPAND_PAIR , 0xe) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xyzw , SWS_PIXEL_U8 , SWS_UOP_EXPAND_PAIR , 0xf)
+#define SWS_FOR_STRUCT_U8_EXPAND_PAIR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_expand_pair_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_PAIR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_PAIR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_PAIR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_expand_pair_yzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_PAIR , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u8_expand_pair_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_EXPAND_PAIR , .mask = 0xf)
+#define SWS_FOR_U8_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_U8_TO_U8(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_TO_U8(MACRO, ...)
+#define SWS_FOR_U8_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_u16_x , SWS_PIXEL_U8 , SWS_UOP_TO_U16 , 0x1) \
+ MACRO(__VA_ARGS__, u8_to_u16_xyz , SWS_PIXEL_U8 , SWS_UOP_TO_U16 , 0x7) \
+ MACRO(__VA_ARGS__, u8_to_u16_yzw , SWS_PIXEL_U8 , SWS_UOP_TO_U16 , 0xe) \
+ MACRO(__VA_ARGS__, u8_to_u16_xyzw , SWS_PIXEL_U8 , SWS_UOP_TO_U16 , 0xf)
+#define SWS_FOR_STRUCT_U8_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_u16_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U16 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_to_u16_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U16 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_to_u16_yzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U16 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u8_to_u16_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U16 , .mask = 0xf)
+#define SWS_FOR_U8_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_u32_x , SWS_PIXEL_U8 , SWS_UOP_TO_U32 , 0x1) \
+ MACRO(__VA_ARGS__, u8_to_u32_xyz , SWS_PIXEL_U8 , SWS_UOP_TO_U32 , 0x7)
+#define SWS_FOR_STRUCT_U8_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_u32_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U32 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_to_u32_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_U32 , .mask = 0x7)
+#define SWS_FOR_U8_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_f32_x , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0x1) \
+ MACRO(__VA_ARGS__, u8_to_f32_y , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0x2) \
+ MACRO(__VA_ARGS__, u8_to_f32_xy , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0x3) \
+ MACRO(__VA_ARGS__, u8_to_f32_z , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0x4) \
+ MACRO(__VA_ARGS__, u8_to_f32_xyz , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0x7) \
+ MACRO(__VA_ARGS__, u8_to_f32_yw , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0xa) \
+ MACRO(__VA_ARGS__, u8_to_f32_zw , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0xc) \
+ MACRO(__VA_ARGS__, u8_to_f32_yzw , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0xe) \
+ MACRO(__VA_ARGS__, u8_to_f32_xyzw , SWS_PIXEL_U8 , SWS_UOP_TO_F32 , 0xf)
+#define SWS_FOR_STRUCT_U8_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_to_f32_x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u8_to_f32_y , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0x2) \
+ MACRO(__VA_ARGS__, u8_to_f32_xy , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u8_to_f32_z , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0x4) \
+ MACRO(__VA_ARGS__, u8_to_f32_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u8_to_f32_yw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0xa) \
+ MACRO(__VA_ARGS__, u8_to_f32_zw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0xc) \
+ MACRO(__VA_ARGS__, u8_to_f32_yzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u8_to_f32_xyzw , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_TO_F32 , .mask = 0xf)
+#define SWS_FOR_U8_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_scale_xyz , SWS_PIXEL_U8 , SWS_UOP_SCALE , 0x7)
+#define SWS_FOR_STRUCT_U8_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_scale_xyz , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_SCALE , .mask = 0x7)
+#define SWS_FOR_U8_ADD(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_ADD(MACRO, ...)
+#define SWS_FOR_U8_MIN(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_MIN(MACRO, ...)
+#define SWS_FOR_U8_MAX(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_MAX(MACRO, ...)
+#define SWS_FOR_U8_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_121 , SWS_PIXEL_U8 , SWS_UOP_UNPACK , 0x7, 1, 2, 1, 0) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_233 , SWS_PIXEL_U8 , SWS_UOP_UNPACK , 0x7, 2, 3, 3, 0) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_332 , SWS_PIXEL_U8 , SWS_UOP_UNPACK , 0x7, 3, 3, 2, 0)
+#define SWS_FOR_STRUCT_U8_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_121 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {1, 2, 1, 0}) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_233 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {2, 3, 3, 0}) \
+ MACRO(__VA_ARGS__, u8_unpack_xyz_332 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {3, 3, 2, 0})
+#define SWS_FOR_U8_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_121 , SWS_PIXEL_U8 , SWS_UOP_PACK , 0x7, 1, 2, 1, 0) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_233 , SWS_PIXEL_U8 , SWS_UOP_PACK , 0x7, 2, 3, 3, 0) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_332 , SWS_PIXEL_U8 , SWS_UOP_PACK , 0x7, 3, 3, 2, 0)
+#define SWS_FOR_STRUCT_U8_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_121 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {1, 2, 1, 0}) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_233 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {2, 3, 3, 0}) \
+ MACRO(__VA_ARGS__, u8_pack_xyz_332 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {3, 3, 2, 0})
+#define SWS_FOR_U8_LSHIFT(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_LSHIFT(MACRO, ...)
+#define SWS_FOR_U8_RSHIFT(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_RSHIFT(MACRO, ...)
+#define SWS_FOR_U8_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_clear_x_0 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x1, 0x00000, 0x00001) \
+ MACRO(__VA_ARGS__, u8_clear_x_1 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x1, 0x00001, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_y_1 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x2, 0x00002, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xy_xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x3, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xz_xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x5, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_yz_xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x6, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xyz_1xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x7, 0x00001, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_w_0 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x8, 0x00000, 0x00008) \
+ MACRO(__VA_ARGS__, u8_clear_w_1 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0x8, 0x00008, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xyw_xx0 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0xb, 0x00000, 0x00008) \
+ MACRO(__VA_ARGS__, u8_clear_xyw_xx1 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0xb, 0x00008, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_zw_xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0xc, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xzw_1xx , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0xd, 0x00001, 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xzw_xx1 , SWS_PIXEL_U8 , SWS_UOP_CLEAR , 0xd, 0x00008, 0x00000)
+#define SWS_FOR_STRUCT_U8_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_clear_x_0 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x1, .par.clear.one = 0x00000, .par.clear.zero = 0x00001) \
+ MACRO(__VA_ARGS__, u8_clear_x_1 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x1, .par.clear.one = 0x00001, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_y_1 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x2, .par.clear.one = 0x00002, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xy_xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x3, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xz_xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x5, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_yz_xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x6, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xyz_1xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x7, .par.clear.one = 0x00001, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_w_0 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00000, .par.clear.zero = 0x00008) \
+ MACRO(__VA_ARGS__, u8_clear_w_1 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00008, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xyw_xx0 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0xb, .par.clear.one = 0x00000, .par.clear.zero = 0x00008) \
+ MACRO(__VA_ARGS__, u8_clear_xyw_xx1 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0xb, .par.clear.one = 0x00008, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_zw_xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0xc, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xzw_1xx , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0xd, .par.clear.one = 0x00001, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u8_clear_xzw_xx1 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_CLEAR , .mask = 0xd, .par.clear.one = 0x00008, .par.clear.zero = 0x00000)
+#define SWS_FOR_U8_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_linear_x_x000x , SWS_PIXEL_U8 , SWS_UOP_LINEAR , 0x1, 0x00000, 0xfffee) \
+ MACRO(__VA_ARGS__, u8_linear_y_0x000 , SWS_PIXEL_U8 , SWS_UOP_LINEAR , 0x2, 0x00000, 0xfffbf) \
+ MACRO(__VA_ARGS__, u8_linear_xyz_x000x_0x00x_00x0x , SWS_PIXEL_U8 , SWS_UOP_LINEAR , 0x7, 0x00000, 0xfadae) \
+ MACRO(__VA_ARGS__, u8_linear_xyz_x0000_0x000_00x00 , SWS_PIXEL_U8 , SWS_UOP_LINEAR , 0x7, 0x00000, 0xfefbe)
+#define SWS_FOR_STRUCT_U8_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u8_linear_x_x000x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee) \
+ MACRO(__VA_ARGS__, u8_linear_y_0x000 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_LINEAR , .mask = 0x2, .par.lin.one = 0x00000, .par.lin.zero = 0xfffbf) \
+ MACRO(__VA_ARGS__, u8_linear_xyz_x000x_0x00x_00x0x , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae) \
+ MACRO(__VA_ARGS__, u8_linear_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_U8 , .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe)
+#define SWS_FOR_U8_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_U8_DITHER(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_DITHER(MACRO, ...)
+#define SWS_FOR_U8_LUT_3D(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_LUT_3D(MACRO, ...)
+#define SWS_FOR_U16_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_x , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u16_read_planar_xy , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR , 0x3) \
+ MACRO(__VA_ARGS__, u16_read_planar_xyz , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u16_read_planar_xyzw , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U16_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_read_planar_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_read_planar_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_read_planar_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR , .mask = 0xf)
+#define SWS_FOR_U16_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_x_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FH , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xy_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FH , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xyz_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FH , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xyzw_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FH , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U16_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_x_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xy_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xyz_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fh_xyzw_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U16_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_x_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xy_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xyz_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xyzw_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U16_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_x_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xy_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U16_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_x_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xy_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_U16, SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_U16_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, u16_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_U16_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_packed_xy , SWS_PIXEL_U16, SWS_UOP_READ_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u16_read_packed_xyz , SWS_PIXEL_U16, SWS_UOP_READ_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u16_read_packed_xyzw , SWS_PIXEL_U16, SWS_UOP_READ_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U16_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_read_packed_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_read_packed_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_read_packed_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_READ_PACKED , .mask = 0xf)
+#define SWS_FOR_U16_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_U16_READ_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_READ_BIT(MACRO, ...)
+#define SWS_FOR_U16_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_U16_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_write_planar_x , SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u16_write_planar_xy , SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR , 0x3) \
+ MACRO(__VA_ARGS__, u16_write_planar_xyz , SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u16_write_planar_xyzw , SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U16_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_write_planar_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_write_planar_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_write_planar_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_write_planar_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0xf)
+#define SWS_FOR_U16_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_write_packed_xy , SWS_PIXEL_U16, SWS_UOP_WRITE_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u16_write_packed_xyz , SWS_PIXEL_U16, SWS_UOP_WRITE_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u16_write_packed_xyzw , SWS_PIXEL_U16, SWS_UOP_WRITE_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U16_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_write_packed_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_write_packed_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_write_packed_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_WRITE_PACKED , .mask = 0xf)
+#define SWS_FOR_U16_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_U16_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_U16_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_U16_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_x_w , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_y_w , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xz_zw , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 2, 0, 2, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_yx_xw , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 2, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xyz_yzw , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 3, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xtyz_wyzt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0x7, 4, 0, -1, 1, 2, 0, 0, 3, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyw_x_z , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xb, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xzw_x_y , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xd, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_y_x , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xe, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_w_x , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xe, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wz_zx , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xe, 2, 3, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wzy_zyx , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xe, 3, 3, 2, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wtyz_xyzt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xe, 4, 3, -1, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txy_xyt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txz_xzt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 2, 0, 0, 0, 0, 2, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txyz_xyzt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txzy_xzyt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 2, 1, 0, 0, 0, 2, 1, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_tyzw_yzwt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 4, -1, 1, 2, 3, 0, 0, 1, 2, 3, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txyzw_xyzwt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 1, 2, 3, 0, 0, 1, 2, 3, -1, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txwzy_xwzyt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 3, 2, 1, 0, 0, 3, 2, 1, -1, 0) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txwtyz_xwtyzt , SWS_PIXEL_U16, SWS_UOP_PERMUTE , 0xf, 6, -1, 0, 3, -1, 1, 2, 0, 3, -1, 1, 2, -1)
+#define SWS_FOR_STRUCT_U16_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_x_w , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_y_w , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xz_zw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {0, 2, 0, 0, 0, 0}, .par.move.src = {2, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_yx_xw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {0, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xyz_yzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 3, .par.move.dst = {0, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, 3, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyz_xtyz_wyzt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 4, .par.move.dst = {0, -1, 1, 2, 0, 0}, .par.move.src = {3, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyw_x_z , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xb, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {2, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xzw_x_y , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xd, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {1, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_y_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_w_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {3, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wz_zx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 2, .par.move.dst = {3, 2, 0, 0, 0, 0}, .par.move.src = {2, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wzy_zyx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {3, 2, 1, 0, 0, 0}, .par.move.src = {2, 1, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_yzw_wtyz_xyzt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 4, .par.move.dst = {3, -1, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txy_xyt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 1, 0, 0, 0}, .par.move.src = {0, 1, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txz_xzt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 2, 0, 0, 0}, .par.move.src = {0, 2, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txyz_xyzt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txzy_xzyt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 2, 1, 0, 0}, .par.move.src = {0, 2, 1, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_tyzw_yzwt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 1, 2, 3, 0, 0}, .par.move.src = {1, 2, 3, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txyzw_xyzwt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 1, 2, 3, 0}, .par.move.src = {0, 1, 2, 3, -1, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txwzy_xwzyt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 3, 2, 1, 0}, .par.move.src = {0, 3, 2, 1, -1, 0}) \
+ MACRO(__VA_ARGS__, u16_permute_xyzw_txwtyz_xwtyzt , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 6, .par.move.dst = {-1, 0, 3, -1, 1, 2}, .par.move.src = {0, 3, -1, 1, 2, -1})
+#define SWS_FOR_U16_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_copy_xyzw_yz_xx , SWS_PIXEL_U16, SWS_UOP_COPY , 0xf, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u16_copy_xyzw_zwy_xyx , SWS_PIXEL_U16, SWS_UOP_COPY , 0xf, 3, 2, 3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0)
+#define SWS_FOR_STRUCT_U16_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_copy_xyzw_yz_xx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 2, .par.move.dst = {1, 2, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u16_copy_xyzw_zwy_xyx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {2, 3, 1, 0, 0, 0}, .par.move.src = {0, 1, 0, 0, 0, 0})
+#define SWS_FOR_U16_SWAP_BYTES(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_x , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0x1) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_y , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0x2) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xy , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0x3) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xyz , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0x7) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xw , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0x9) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_yzw , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0xe) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xyzw , SWS_PIXEL_U16, SWS_UOP_SWAP_BYTES , 0xf)
+#define SWS_FOR_STRUCT_U16_SWAP_BYTES(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_y , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x2) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x9) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_yzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u16_swap_bytes_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SWAP_BYTES , .mask = 0xf)
+#define SWS_FOR_U16_EXPAND_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_expand_bit_x , SWS_PIXEL_U16, SWS_UOP_EXPAND_BIT , 0x1)
+#define SWS_FOR_STRUCT_U16_EXPAND_BIT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_expand_bit_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_EXPAND_BIT , .mask = 0x1)
+#define SWS_FOR_U16_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_U16_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_U16_TO_U8(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_u8_xyz , SWS_PIXEL_U16, SWS_UOP_TO_U8 , 0x7)
+#define SWS_FOR_STRUCT_U16_TO_U8(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_u8_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_U8 , .mask = 0x7)
+#define SWS_FOR_U16_TO_U16(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_TO_U16(MACRO, ...)
+#define SWS_FOR_U16_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_u32_x , SWS_PIXEL_U16, SWS_UOP_TO_U32 , 0x1) \
+ MACRO(__VA_ARGS__, u16_to_u32_xyz , SWS_PIXEL_U16, SWS_UOP_TO_U32 , 0x7)
+#define SWS_FOR_STRUCT_U16_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_u32_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_U32 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_to_u32_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_U32 , .mask = 0x7)
+#define SWS_FOR_U16_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_f32_x , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0x1) \
+ MACRO(__VA_ARGS__, u16_to_f32_y , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0x2) \
+ MACRO(__VA_ARGS__, u16_to_f32_xy , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0x3) \
+ MACRO(__VA_ARGS__, u16_to_f32_xyz , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0x7) \
+ MACRO(__VA_ARGS__, u16_to_f32_yzw , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0xe) \
+ MACRO(__VA_ARGS__, u16_to_f32_xyzw , SWS_PIXEL_U16, SWS_UOP_TO_F32 , 0xf)
+#define SWS_FOR_STRUCT_U16_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_to_f32_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_to_f32_y , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0x2) \
+ MACRO(__VA_ARGS__, u16_to_f32_xy , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u16_to_f32_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u16_to_f32_yzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u16_to_f32_xyzw , .type = SWS_PIXEL_U16, .uop = SWS_UOP_TO_F32 , .mask = 0xf)
+#define SWS_FOR_U16_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_scale_x , SWS_PIXEL_U16, SWS_UOP_SCALE , 0x1) \
+ MACRO(__VA_ARGS__, u16_scale_xyz , SWS_PIXEL_U16, SWS_UOP_SCALE , 0x7)
+#define SWS_FOR_STRUCT_U16_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_scale_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SCALE , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u16_scale_xyz , .type = SWS_PIXEL_U16, .uop = SWS_UOP_SCALE , .mask = 0x7)
+#define SWS_FOR_U16_ADD(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_ADD(MACRO, ...)
+#define SWS_FOR_U16_MIN(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_MIN(MACRO, ...)
+#define SWS_FOR_U16_MAX(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_MAX(MACRO, ...)
+#define SWS_FOR_U16_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_444 , SWS_PIXEL_U16, SWS_UOP_UNPACK , 0x7, 4, 4, 4, 0) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_555 , SWS_PIXEL_U16, SWS_UOP_UNPACK , 0x7, 5, 5, 5, 0) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_565 , SWS_PIXEL_U16, SWS_UOP_UNPACK , 0x7, 5, 6, 5, 0)
+#define SWS_FOR_STRUCT_U16_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_444 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {4, 4, 4, 0}) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_555 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {5, 5, 5, 0}) \
+ MACRO(__VA_ARGS__, u16_unpack_xyz_565 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {5, 6, 5, 0})
+#define SWS_FOR_U16_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_444 , SWS_PIXEL_U16, SWS_UOP_PACK , 0x7, 4, 4, 4, 0) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_555 , SWS_PIXEL_U16, SWS_UOP_PACK , 0x7, 5, 5, 5, 0) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_565 , SWS_PIXEL_U16, SWS_UOP_PACK , 0x7, 5, 6, 5, 0)
+#define SWS_FOR_STRUCT_U16_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_444 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {4, 4, 4, 0}) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_555 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {5, 5, 5, 0}) \
+ MACRO(__VA_ARGS__, u16_pack_xyz_565 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_PACK , .mask = 0x7, .par.pack.pattern = {5, 6, 5, 0})
+#define SWS_FOR_U16_LSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_lshift_x_4 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x1, 4) \
+ MACRO(__VA_ARGS__, u16_lshift_x_6 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x1, 6) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_1 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 1) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_2 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 2) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_3 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 3) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_4 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 4) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_5 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 5) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_6 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 6) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_7 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 7) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_8 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0x7, 8) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_1 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0xe, 1) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_2 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0xe, 2) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_4 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0xe, 4) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_6 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0xe, 6) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_8 , SWS_PIXEL_U16, SWS_UOP_LSHIFT , 0xe, 8)
+#define SWS_FOR_STRUCT_U16_LSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_lshift_x_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x1, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_lshift_x_6 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x1, .par.shift.amount = 6) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_1 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 1) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_2 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 2) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_3 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 3) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_5 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 5) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_6 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 6) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_7 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 7) \
+ MACRO(__VA_ARGS__, u16_lshift_xyz_8 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 8) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_1 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0xe, .par.shift.amount = 1) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_2 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0xe, .par.shift.amount = 2) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0xe, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_6 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0xe, .par.shift.amount = 6) \
+ MACRO(__VA_ARGS__, u16_lshift_yzw_8 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LSHIFT , .mask = 0xe, .par.shift.amount = 8)
+#define SWS_FOR_U16_RSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_rshift_x_4 , SWS_PIXEL_U16, SWS_UOP_RSHIFT , 0x1, 4) \
+ MACRO(__VA_ARGS__, u16_rshift_x_6 , SWS_PIXEL_U16, SWS_UOP_RSHIFT , 0x1, 6) \
+ MACRO(__VA_ARGS__, u16_rshift_y_4 , SWS_PIXEL_U16, SWS_UOP_RSHIFT , 0x2, 4) \
+ MACRO(__VA_ARGS__, u16_rshift_xyz_4 , SWS_PIXEL_U16, SWS_UOP_RSHIFT , 0x7, 4) \
+ MACRO(__VA_ARGS__, u16_rshift_xyz_6 , SWS_PIXEL_U16, SWS_UOP_RSHIFT , 0x7, 6)
+#define SWS_FOR_STRUCT_U16_RSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_rshift_x_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_RSHIFT , .mask = 0x1, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_rshift_x_6 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_RSHIFT , .mask = 0x1, .par.shift.amount = 6) \
+ MACRO(__VA_ARGS__, u16_rshift_y_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_RSHIFT , .mask = 0x2, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_rshift_xyz_4 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_RSHIFT , .mask = 0x7, .par.shift.amount = 4) \
+ MACRO(__VA_ARGS__, u16_rshift_xyz_6 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_RSHIFT , .mask = 0x7, .par.shift.amount = 6)
+#define SWS_FOR_U16_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_clear_x_x , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x1, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_x_1 , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x1, 0x00001, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_y_1 , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x2, 0x00002, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xy_xx , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x3, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xyz_xxx , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x7, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xyz_1xx , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x7, 0x00001, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_w_x , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x8, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_w_0 , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x8, 0x00000, 0x00008) \
+ MACRO(__VA_ARGS__, u16_clear_w_1 , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0x8, 0x00008, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_zw_xx , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0xc, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xzw_xx0 , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0xd, 0x00000, 0x00008) \
+ MACRO(__VA_ARGS__, u16_clear_xzw_1xx , SWS_PIXEL_U16, SWS_UOP_CLEAR , 0xd, 0x00001, 0x00000)
+#define SWS_FOR_STRUCT_U16_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_clear_x_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x1, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_x_1 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x1, .par.clear.one = 0x00001, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_y_1 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x2, .par.clear.one = 0x00002, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xy_xx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x3, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xyz_xxx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x7, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xyz_1xx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x7, .par.clear.one = 0x00001, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_w_x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_w_0 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00000, .par.clear.zero = 0x00008) \
+ MACRO(__VA_ARGS__, u16_clear_w_1 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00008, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_zw_xx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0xc, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u16_clear_xzw_xx0 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0xd, .par.clear.one = 0x00000, .par.clear.zero = 0x00008) \
+ MACRO(__VA_ARGS__, u16_clear_xzw_1xx , .type = SWS_PIXEL_U16, .uop = SWS_UOP_CLEAR , .mask = 0xd, .par.clear.one = 0x00001, .par.clear.zero = 0x00000)
+#define SWS_FOR_U16_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_linear_x_x000x , SWS_PIXEL_U16, SWS_UOP_LINEAR , 0x1, 0x00000, 0xfffee) \
+ MACRO(__VA_ARGS__, u16_linear_xyz_x000x_0x00x_00x0x , SWS_PIXEL_U16, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfadae) \
+ MACRO(__VA_ARGS__, u16_linear_xyz_x0000_0x000_00x00 , SWS_PIXEL_U16, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfefbe) \
+ MACRO(__VA_ARGS__, u16_linear_xyzw_x0000_0x000_00x00_000x0 , SWS_PIXEL_U16, SWS_UOP_LINEAR , 0xf, 0x00000, 0xbefbe)
+#define SWS_FOR_STRUCT_U16_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u16_linear_x_x000x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee) \
+ MACRO(__VA_ARGS__, u16_linear_xyz_x000x_0x00x_00x0x , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae) \
+ MACRO(__VA_ARGS__, u16_linear_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe) \
+ MACRO(__VA_ARGS__, u16_linear_xyzw_x0000_0x000_00x00_000x0 , .type = SWS_PIXEL_U16, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbefbe)
+#define SWS_FOR_U16_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_U16_DITHER(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_DITHER(MACRO, ...)
+#define SWS_FOR_U16_LUT_3D(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_LUT_3D(MACRO, ...)
+#define SWS_FOR_U32_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_read_planar_x , SWS_PIXEL_U32, SWS_UOP_READ_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u32_read_planar_xyz , SWS_PIXEL_U32, SWS_UOP_READ_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u32_read_planar_xyzw , SWS_PIXEL_U32, SWS_UOP_READ_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U32_READ_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_read_planar_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u32_read_planar_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_read_planar_xyzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PLANAR , .mask = 0xf)
+#define SWS_FOR_U32_READ_PLANAR_FH(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_PLANAR_FH(MACRO, ...)
+#define SWS_FOR_U32_READ_PLANAR_FV(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_PLANAR_FV(MACRO, ...)
+#define SWS_FOR_U32_READ_PLANAR_FV_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_PLANAR_FV_FMA(MACRO, ...)
+#define SWS_FOR_U32_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_read_packed_xy , SWS_PIXEL_U32, SWS_UOP_READ_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u32_read_packed_xyz , SWS_PIXEL_U32, SWS_UOP_READ_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u32_read_packed_xyzw , SWS_PIXEL_U32, SWS_UOP_READ_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U32_READ_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_read_packed_xy , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u32_read_packed_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_read_packed_xyzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_READ_PACKED , .mask = 0xf)
+#define SWS_FOR_U32_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_U32_READ_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_BIT(MACRO, ...)
+#define SWS_FOR_U32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_U32_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_write_planar_x , SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR , 0x1) \
+ MACRO(__VA_ARGS__, u32_write_planar_xy , SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR , 0x3) \
+ MACRO(__VA_ARGS__, u32_write_planar_xyz , SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR , 0x7) \
+ MACRO(__VA_ARGS__, u32_write_planar_xyzw , SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR , 0xf)
+#define SWS_FOR_STRUCT_U32_WRITE_PLANAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_write_planar_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u32_write_planar_xy , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u32_write_planar_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_write_planar_xyzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PLANAR , .mask = 0xf)
+#define SWS_FOR_U32_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_write_packed_xy , SWS_PIXEL_U32, SWS_UOP_WRITE_PACKED , 0x3) \
+ MACRO(__VA_ARGS__, u32_write_packed_xyz , SWS_PIXEL_U32, SWS_UOP_WRITE_PACKED , 0x7) \
+ MACRO(__VA_ARGS__, u32_write_packed_xyzw , SWS_PIXEL_U32, SWS_UOP_WRITE_PACKED , 0xf)
+#define SWS_FOR_STRUCT_U32_WRITE_PACKED(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_write_packed_xy , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PACKED , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u32_write_packed_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PACKED , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_write_packed_xyzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_WRITE_PACKED , .mask = 0xf)
+#define SWS_FOR_U32_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_U32_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_U32_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_U32_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_x_w , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_y_w , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xz_zw , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 2, 0, 2, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_zx_xw , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xyz_yzw , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 3, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xzy_zyw , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 3, 0, 2, 1, 0, 0, 0, 2, 1, 3, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xtyz_wyzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0x7, 4, 0, -1, 1, 2, 0, 0, 3, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyw_x_z , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xb, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_x_y , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xd, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_w_y , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xd, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_wx_xy , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xd, 2, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_y_x , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_z_x , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_w_x , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wy_yx , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 2, 3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wz_zx , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 2, 3, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wyz_yzx , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 3, 3, 1, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wzy_zyx , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 3, 3, 2, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wtyz_xyzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xe, 4, 3, -1, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txy_xyt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txz_xzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 3, -1, 0, 2, 0, 0, 0, 0, 2, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_tyz_yzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 3, -1, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_tyw_ywt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 3, -1, 1, 3, 0, 0, 0, 1, 3, -1, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txyz_xyzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txzy_xzyt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 4, -1, 0, 2, 1, 0, 0, 0, 2, 1, -1, 0, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txyzw_xyzwt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 1, 2, 3, 0, 0, 1, 2, 3, -1, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwyz_xwyzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 3, 1, 2, 0, 0, 3, 1, 2, -1, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwzy_xwzyt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 5, -1, 0, 3, 2, 1, 0, 0, 3, 2, 1, -1, 0) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwtyz_xwtyzt , SWS_PIXEL_U32, SWS_UOP_PERMUTE , 0xf, 6, -1, 0, 3, -1, 1, 2, 0, 3, -1, 1, 2, -1)
+#define SWS_FOR_STRUCT_U32_PERMUTE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_x_w , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_y_w , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {3, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xz_zw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {0, 2, 0, 0, 0, 0}, .par.move.src = {2, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_zx_xw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 2, .par.move.dst = {2, 0, 0, 0, 0, 0}, .par.move.src = {0, 3, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xyz_yzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 3, .par.move.dst = {0, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, 3, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xzy_zyw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 3, .par.move.dst = {0, 2, 1, 0, 0, 0}, .par.move.src = {2, 1, 3, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyz_xtyz_wyzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0x7, .par.move.num_moves = 4, .par.move.dst = {0, -1, 1, 2, 0, 0}, .par.move.src = {3, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyw_x_z , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xb, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {2, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_x_y , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xd, .par.move.num_moves = 1, .par.move.dst = {0, 0, 0, 0, 0, 0}, .par.move.src = {1, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_w_y , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xd, .par.move.num_moves = 1, .par.move.dst = {3, 0, 0, 0, 0, 0}, .par.move.src = {1, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xzw_wx_xy , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xd, .par.move.num_moves = 2, .par.move.dst = {3, 0, 0, 0, 0, 0}, .par.move.src = {0, 1, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_y_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {1, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_z_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {2, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_w_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 1, .par.move.dst = {3, 0, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wy_yx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 2, .par.move.dst = {3, 1, 0, 0, 0, 0}, .par.move.src = {1, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wz_zx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 2, .par.move.dst = {3, 2, 0, 0, 0, 0}, .par.move.src = {2, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wyz_yzx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {3, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wzy_zyx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {3, 2, 1, 0, 0, 0}, .par.move.src = {2, 1, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_yzw_wtyz_xyzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xe, .par.move.num_moves = 4, .par.move.dst = {3, -1, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txy_xyt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 1, 0, 0, 0}, .par.move.src = {0, 1, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txz_xzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 0, 2, 0, 0, 0}, .par.move.src = {0, 2, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_tyz_yzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 1, 2, 0, 0, 0}, .par.move.src = {1, 2, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_tyw_ywt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {-1, 1, 3, 0, 0, 0}, .par.move.src = {1, 3, -1, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txyz_xyzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 1, 2, 0, 0}, .par.move.src = {0, 1, 2, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txzy_xzyt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 4, .par.move.dst = {-1, 0, 2, 1, 0, 0}, .par.move.src = {0, 2, 1, -1, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txyzw_xyzwt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 1, 2, 3, 0}, .par.move.src = {0, 1, 2, 3, -1, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwyz_xwyzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 3, 1, 2, 0}, .par.move.src = {0, 3, 1, 2, -1, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwzy_xwzyt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 5, .par.move.dst = {-1, 0, 3, 2, 1, 0}, .par.move.src = {0, 3, 2, 1, -1, 0}) \
+ MACRO(__VA_ARGS__, u32_permute_xyzw_txwtyz_xwtyzt , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PERMUTE , .mask = 0xf, .par.move.num_moves = 6, .par.move.dst = {-1, 0, 3, -1, 1, 2}, .par.move.src = {0, 3, -1, 1, 2, -1})
+#define SWS_FOR_U32_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_copy_yzw_yzw_xxx , SWS_PIXEL_U32, SWS_UOP_COPY , 0xe, 3, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_copy_xyzw_yz_xx , SWS_PIXEL_U32, SWS_UOP_COPY , 0xf, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \
+ MACRO(__VA_ARGS__, u32_copy_xyzw_zwy_xyx , SWS_PIXEL_U32, SWS_UOP_COPY , 0xf, 3, 2, 3, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0)
+#define SWS_FOR_STRUCT_U32_COPY(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_copy_yzw_yzw_xxx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_COPY , .mask = 0xe, .par.move.num_moves = 3, .par.move.dst = {1, 2, 3, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_copy_xyzw_yz_xx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 2, .par.move.dst = {1, 2, 0, 0, 0, 0}, .par.move.src = {0, 0, 0, 0, 0, 0}) \
+ MACRO(__VA_ARGS__, u32_copy_xyzw_zwy_xyx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_COPY , .mask = 0xf, .par.move.num_moves = 3, .par.move.dst = {2, 3, 1, 0, 0, 0}, .par.move.src = {0, 1, 0, 0, 0, 0})
+#define SWS_FOR_U32_SWAP_BYTES(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_x , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0x1) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xy , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0x3) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xyz , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0x7) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xw , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0x9) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_yzw , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0xe) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xyzw , SWS_PIXEL_U32, SWS_UOP_SWAP_BYTES , 0xf)
+#define SWS_FOR_STRUCT_U32_SWAP_BYTES(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xy , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x3) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0x9) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_yzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0xe) \
+ MACRO(__VA_ARGS__, u32_swap_bytes_xyzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SWAP_BYTES , .mask = 0xf)
+#define SWS_FOR_U32_EXPAND_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_EXPAND_BIT(MACRO, ...)
+#define SWS_FOR_U32_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_U32_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_U32_TO_U8(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_TO_U8(MACRO, ...)
+#define SWS_FOR_U32_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_to_u16_y , SWS_PIXEL_U32, SWS_UOP_TO_U16 , 0x2) \
+ MACRO(__VA_ARGS__, u32_to_u16_z , SWS_PIXEL_U32, SWS_UOP_TO_U16 , 0x4) \
+ MACRO(__VA_ARGS__, u32_to_u16_xyz , SWS_PIXEL_U32, SWS_UOP_TO_U16 , 0x7) \
+ MACRO(__VA_ARGS__, u32_to_u16_yzw , SWS_PIXEL_U32, SWS_UOP_TO_U16 , 0xe)
+#define SWS_FOR_STRUCT_U32_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_to_u16_y , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_U16 , .mask = 0x2) \
+ MACRO(__VA_ARGS__, u32_to_u16_z , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_U16 , .mask = 0x4) \
+ MACRO(__VA_ARGS__, u32_to_u16_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_U16 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_to_u16_yzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_U16 , .mask = 0xe)
+#define SWS_FOR_U32_TO_U32(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_TO_U32(MACRO, ...)
+#define SWS_FOR_U32_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_to_f32_y , SWS_PIXEL_U32, SWS_UOP_TO_F32 , 0x2) \
+ MACRO(__VA_ARGS__, u32_to_f32_z , SWS_PIXEL_U32, SWS_UOP_TO_F32 , 0x4) \
+ MACRO(__VA_ARGS__, u32_to_f32_xyz , SWS_PIXEL_U32, SWS_UOP_TO_F32 , 0x7) \
+ MACRO(__VA_ARGS__, u32_to_f32_yzw , SWS_PIXEL_U32, SWS_UOP_TO_F32 , 0xe)
+#define SWS_FOR_STRUCT_U32_TO_F32(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_to_f32_y , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_F32 , .mask = 0x2) \
+ MACRO(__VA_ARGS__, u32_to_f32_z , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_F32 , .mask = 0x4) \
+ MACRO(__VA_ARGS__, u32_to_f32_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_F32 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, u32_to_f32_yzw , .type = SWS_PIXEL_U32, .uop = SWS_UOP_TO_F32 , .mask = 0xe)
+#define SWS_FOR_U32_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_scale_x , SWS_PIXEL_U32, SWS_UOP_SCALE , 0x1) \
+ MACRO(__VA_ARGS__, u32_scale_xyz , SWS_PIXEL_U32, SWS_UOP_SCALE , 0x7)
+#define SWS_FOR_STRUCT_U32_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_scale_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SCALE , .mask = 0x1) \
+ MACRO(__VA_ARGS__, u32_scale_xyz , .type = SWS_PIXEL_U32, .uop = SWS_UOP_SCALE , .mask = 0x7)
+#define SWS_FOR_U32_ADD(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_ADD(MACRO, ...)
+#define SWS_FOR_U32_MIN(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_MIN(MACRO, ...)
+#define SWS_FOR_U32_MAX(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_MAX(MACRO, ...)
+#define SWS_FOR_U32_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_unpack_y_aaa2 , SWS_PIXEL_U32, SWS_UOP_UNPACK , 0x2, 10, 10, 10, 2) \
+ MACRO(__VA_ARGS__, u32_unpack_z_2aaa , SWS_PIXEL_U32, SWS_UOP_UNPACK , 0x4, 2, 10, 10, 10) \
+ MACRO(__VA_ARGS__, u32_unpack_xyz_aaa2 , SWS_PIXEL_U32, SWS_UOP_UNPACK , 0x7, 10, 10, 10, 2) \
+ MACRO(__VA_ARGS__, u32_unpack_yzw_2aaa , SWS_PIXEL_U32, SWS_UOP_UNPACK , 0xe, 2, 10, 10, 10)
+#define SWS_FOR_STRUCT_U32_UNPACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_unpack_y_aaa2 , .type = SWS_PIXEL_U32, .uop = SWS_UOP_UNPACK , .mask = 0x2, .par.pack.pattern = {10, 10, 10, 2}) \
+ MACRO(__VA_ARGS__, u32_unpack_z_2aaa , .type = SWS_PIXEL_U32, .uop = SWS_UOP_UNPACK , .mask = 0x4, .par.pack.pattern = {2, 10, 10, 10}) \
+ MACRO(__VA_ARGS__, u32_unpack_xyz_aaa2 , .type = SWS_PIXEL_U32, .uop = SWS_UOP_UNPACK , .mask = 0x7, .par.pack.pattern = {10, 10, 10, 2}) \
+ MACRO(__VA_ARGS__, u32_unpack_yzw_2aaa , .type = SWS_PIXEL_U32, .uop = SWS_UOP_UNPACK , .mask = 0xe, .par.pack.pattern = {2, 10, 10, 10})
+#define SWS_FOR_U32_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_pack_xyzw_2aaa , SWS_PIXEL_U32, SWS_UOP_PACK , 0xf, 2, 10, 10, 10) \
+ MACRO(__VA_ARGS__, u32_pack_xyzw_aaa2 , SWS_PIXEL_U32, SWS_UOP_PACK , 0xf, 10, 10, 10, 2)
+#define SWS_FOR_STRUCT_U32_PACK(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_pack_xyzw_2aaa , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PACK , .mask = 0xf, .par.pack.pattern = {2, 10, 10, 10}) \
+ MACRO(__VA_ARGS__, u32_pack_xyzw_aaa2 , .type = SWS_PIXEL_U32, .uop = SWS_UOP_PACK , .mask = 0xf, .par.pack.pattern = {10, 10, 10, 2})
+#define SWS_FOR_U32_LSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_lshift_xyz_2 , SWS_PIXEL_U32, SWS_UOP_LSHIFT , 0x7, 2)
+#define SWS_FOR_STRUCT_U32_LSHIFT(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_lshift_xyz_2 , .type = SWS_PIXEL_U32, .uop = SWS_UOP_LSHIFT , .mask = 0x7, .par.shift.amount = 2)
+#define SWS_FOR_U32_RSHIFT(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_RSHIFT(MACRO, ...)
+#define SWS_FOR_U32_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_clear_x_x , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0x1, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_y_x , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0x2, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xz_xx , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0x5, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_w_x , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0x8, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_yw_xx , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0xa, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xyw_xxx , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0xb, 0x00000, 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xzw_xxx , SWS_PIXEL_U32, SWS_UOP_CLEAR , 0xd, 0x00000, 0x00000)
+#define SWS_FOR_STRUCT_U32_CLEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_clear_x_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0x1, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_y_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0x2, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xz_xx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0x5, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_w_x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0x8, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_yw_xx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0xa, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xyw_xxx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0xb, .par.clear.one = 0x00000, .par.clear.zero = 0x00000) \
+ MACRO(__VA_ARGS__, u32_clear_xzw_xxx , .type = SWS_PIXEL_U32, .uop = SWS_UOP_CLEAR , .mask = 0xd, .par.clear.one = 0x00000, .par.clear.zero = 0x00000)
+#define SWS_FOR_U32_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_linear_x_x000x , SWS_PIXEL_U32, SWS_UOP_LINEAR , 0x1, 0x00000, 0xfffee) \
+ MACRO(__VA_ARGS__, u32_linear_xyz_x000x_0x00x_00x0x , SWS_PIXEL_U32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfadae) \
+ MACRO(__VA_ARGS__, u32_linear_xyz_x0000_0x000_00x00 , SWS_PIXEL_U32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfefbe)
+#define SWS_FOR_STRUCT_U32_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, u32_linear_x_x000x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee) \
+ MACRO(__VA_ARGS__, u32_linear_xyz_x000x_0x00x_00x0x , .type = SWS_PIXEL_U32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae) \
+ MACRO(__VA_ARGS__, u32_linear_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_U32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe)
+#define SWS_FOR_U32_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_LINEAR_FMA(MACRO, ...)
+#define SWS_FOR_U32_DITHER(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_DITHER(MACRO, ...)
+#define SWS_FOR_U32_LUT_3D(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_LUT_3D(MACRO, ...)
+#define SWS_FOR_F32_READ_PLANAR(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_PLANAR(MACRO, ...)
+#define SWS_FOR_F32_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_x_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FH , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xy_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FH , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xyz_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FH , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xyzw_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FH , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_F32_READ_PLANAR_FH(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_x_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xy_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xyz_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fh_xyzw_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FH , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_F32_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_x_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV , 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xy_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV , 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xyz_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV , 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xyzw_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV , 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_F32_READ_PLANAR_FV(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_x_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xy_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xyz_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_xyzw_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV , .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_F32_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_x_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x1, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xy_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x3, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyz_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0x7, SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyzw_f32 , SWS_PIXEL_F32, SWS_UOP_READ_PLANAR_FV_FMA, 0xf, SWS_PIXEL_F32)
+#define SWS_FOR_STRUCT_F32_READ_PLANAR_FV_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_x_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x1, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xy_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x3, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyz_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0x7, .par.filter.type = SWS_PIXEL_F32) \
+ MACRO(__VA_ARGS__, f32_read_planar_fv_fma_xyzw_f32 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_READ_PLANAR_FV_FMA, .mask = 0xf, .par.filter.type = SWS_PIXEL_F32)
+#define SWS_FOR_F32_READ_PACKED(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_PACKED(MACRO, ...)
+#define SWS_FOR_F32_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_NIBBLE(MACRO, ...)
+#define SWS_FOR_F32_READ_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_BIT(MACRO, ...)
+#define SWS_FOR_F32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_F32_WRITE_PLANAR(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_WRITE_PLANAR(MACRO, ...)
+#define SWS_FOR_F32_WRITE_PACKED(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_WRITE_PACKED(MACRO, ...)
+#define SWS_FOR_F32_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_WRITE_NIBBLE(MACRO, ...)
+#define SWS_FOR_F32_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_WRITE_BIT(MACRO, ...)
+#define SWS_FOR_F32_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_RW_SHUFFLE(MACRO, ...)
+#define SWS_FOR_F32_PERMUTE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_PERMUTE(MACRO, ...)
+#define SWS_FOR_F32_COPY(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_COPY(MACRO, ...)
+#define SWS_FOR_F32_SWAP_BYTES(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_SWAP_BYTES(MACRO, ...)
+#define SWS_FOR_F32_EXPAND_BIT(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_EXPAND_BIT(MACRO, ...)
+#define SWS_FOR_F32_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_EXPAND_PAIR(MACRO, ...)
+#define SWS_FOR_F32_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_EXPAND_QUAD(MACRO, ...)
+#define SWS_FOR_F32_TO_U8(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u8_x , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u8_xy , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0x3) \
+ MACRO(__VA_ARGS__, f32_to_u8_xyz , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u8_xw , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u8_yzw , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u8_xyzw , SWS_PIXEL_F32, SWS_UOP_TO_U8 , 0xf)
+#define SWS_FOR_STRUCT_F32_TO_U8(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u8_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u8_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_to_u8_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u8_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u8_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u8_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U8 , .mask = 0xf)
+#define SWS_FOR_F32_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u16_x , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u16_xy , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0x3) \
+ MACRO(__VA_ARGS__, f32_to_u16_xyz , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u16_xw , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u16_yzw , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u16_xyzw , SWS_PIXEL_F32, SWS_UOP_TO_U16 , 0xf)
+#define SWS_FOR_STRUCT_F32_TO_U16(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u16_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u16_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_to_u16_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u16_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u16_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u16_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U16 , .mask = 0xf)
+#define SWS_FOR_F32_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u32_x , SWS_PIXEL_F32, SWS_UOP_TO_U32 , 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u32_xyz , SWS_PIXEL_F32, SWS_UOP_TO_U32 , 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u32_xw , SWS_PIXEL_F32, SWS_UOP_TO_U32 , 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u32_yzw , SWS_PIXEL_F32, SWS_UOP_TO_U32 , 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u32_xyzw , SWS_PIXEL_F32, SWS_UOP_TO_U32 , 0xf)
+#define SWS_FOR_STRUCT_F32_TO_U32(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_to_u32_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U32 , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_to_u32_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U32 , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_to_u32_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U32 , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_to_u32_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U32 , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_to_u32_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_TO_U32 , .mask = 0xf)
+#define SWS_FOR_F32_TO_F32(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_TO_F32(MACRO, ...)
+#define SWS_FOR_F32_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_scale_x , SWS_PIXEL_F32, SWS_UOP_SCALE , 0x1) \
+ MACRO(__VA_ARGS__, f32_scale_xy , SWS_PIXEL_F32, SWS_UOP_SCALE , 0x3) \
+ MACRO(__VA_ARGS__, f32_scale_xyz , SWS_PIXEL_F32, SWS_UOP_SCALE , 0x7) \
+ MACRO(__VA_ARGS__, f32_scale_yzw , SWS_PIXEL_F32, SWS_UOP_SCALE , 0xe) \
+ MACRO(__VA_ARGS__, f32_scale_xyzw , SWS_PIXEL_F32, SWS_UOP_SCALE , 0xf)
+#define SWS_FOR_STRUCT_F32_SCALE(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_scale_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_SCALE , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_scale_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_SCALE , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_scale_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_SCALE , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_scale_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_SCALE , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_scale_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_SCALE , .mask = 0xf)
+#define SWS_FOR_F32_ADD(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_add_x , SWS_PIXEL_F32, SWS_UOP_ADD , 0x1) \
+ MACRO(__VA_ARGS__, f32_add_xy , SWS_PIXEL_F32, SWS_UOP_ADD , 0x3) \
+ MACRO(__VA_ARGS__, f32_add_xz , SWS_PIXEL_F32, SWS_UOP_ADD , 0x5) \
+ MACRO(__VA_ARGS__, f32_add_xyz , SWS_PIXEL_F32, SWS_UOP_ADD , 0x7) \
+ MACRO(__VA_ARGS__, f32_add_w , SWS_PIXEL_F32, SWS_UOP_ADD , 0x8) \
+ MACRO(__VA_ARGS__, f32_add_xw , SWS_PIXEL_F32, SWS_UOP_ADD , 0x9) \
+ MACRO(__VA_ARGS__, f32_add_yzw , SWS_PIXEL_F32, SWS_UOP_ADD , 0xe) \
+ MACRO(__VA_ARGS__, f32_add_xyzw , SWS_PIXEL_F32, SWS_UOP_ADD , 0xf)
+#define SWS_FOR_STRUCT_F32_ADD(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_add_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_add_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_add_xz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x5) \
+ MACRO(__VA_ARGS__, f32_add_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_add_w , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x8) \
+ MACRO(__VA_ARGS__, f32_add_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_add_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_add_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_ADD , .mask = 0xf)
+#define SWS_FOR_F32_MIN(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_min_x , SWS_PIXEL_F32, SWS_UOP_MIN , 0x1) \
+ MACRO(__VA_ARGS__, f32_min_y , SWS_PIXEL_F32, SWS_UOP_MIN , 0x2) \
+ MACRO(__VA_ARGS__, f32_min_xy , SWS_PIXEL_F32, SWS_UOP_MIN , 0x3) \
+ MACRO(__VA_ARGS__, f32_min_z , SWS_PIXEL_F32, SWS_UOP_MIN , 0x4) \
+ MACRO(__VA_ARGS__, f32_min_xz , SWS_PIXEL_F32, SWS_UOP_MIN , 0x5) \
+ MACRO(__VA_ARGS__, f32_min_xyz , SWS_PIXEL_F32, SWS_UOP_MIN , 0x7) \
+ MACRO(__VA_ARGS__, f32_min_w , SWS_PIXEL_F32, SWS_UOP_MIN , 0x8) \
+ MACRO(__VA_ARGS__, f32_min_xw , SWS_PIXEL_F32, SWS_UOP_MIN , 0x9) \
+ MACRO(__VA_ARGS__, f32_min_yzw , SWS_PIXEL_F32, SWS_UOP_MIN , 0xe) \
+ MACRO(__VA_ARGS__, f32_min_xyzw , SWS_PIXEL_F32, SWS_UOP_MIN , 0xf)
+#define SWS_FOR_STRUCT_F32_MIN(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_min_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_min_y , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x2) \
+ MACRO(__VA_ARGS__, f32_min_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_min_z , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x4) \
+ MACRO(__VA_ARGS__, f32_min_xz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x5) \
+ MACRO(__VA_ARGS__, f32_min_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_min_w , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x8) \
+ MACRO(__VA_ARGS__, f32_min_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_min_yzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0xe) \
+ MACRO(__VA_ARGS__, f32_min_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MIN , .mask = 0xf)
+#define SWS_FOR_F32_MAX(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_max_x , SWS_PIXEL_F32, SWS_UOP_MAX , 0x1) \
+ MACRO(__VA_ARGS__, f32_max_xy , SWS_PIXEL_F32, SWS_UOP_MAX , 0x3) \
+ MACRO(__VA_ARGS__, f32_max_xyz , SWS_PIXEL_F32, SWS_UOP_MAX , 0x7) \
+ MACRO(__VA_ARGS__, f32_max_w , SWS_PIXEL_F32, SWS_UOP_MAX , 0x8) \
+ MACRO(__VA_ARGS__, f32_max_xw , SWS_PIXEL_F32, SWS_UOP_MAX , 0x9) \
+ MACRO(__VA_ARGS__, f32_max_xyzw , SWS_PIXEL_F32, SWS_UOP_MAX , 0xf)
+#define SWS_FOR_STRUCT_F32_MAX(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_max_x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0x1) \
+ MACRO(__VA_ARGS__, f32_max_xy , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0x3) \
+ MACRO(__VA_ARGS__, f32_max_xyz , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0x7) \
+ MACRO(__VA_ARGS__, f32_max_w , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0x8) \
+ MACRO(__VA_ARGS__, f32_max_xw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0x9) \
+ MACRO(__VA_ARGS__, f32_max_xyzw , .type = SWS_PIXEL_F32, .uop = SWS_UOP_MAX , .mask = 0xf)
+#define SWS_FOR_F32_UNPACK(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_UNPACK(MACRO, ...)
+#define SWS_FOR_F32_PACK(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_PACK(MACRO, ...)
+#define SWS_FOR_F32_LSHIFT(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_LSHIFT(MACRO, ...)
+#define SWS_FOR_F32_RSHIFT(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_RSHIFT(MACRO, ...)
+#define SWS_FOR_F32_CLEAR(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_CLEAR(MACRO, ...)
+#define SWS_FOR_F32_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_linear_x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x1, 0x00000, 0xfffe8) \
+ MACRO(__VA_ARGS__, f32_linear_x_x000x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x1, 0x00000, 0xfffee) \
+ MACRO(__VA_ARGS__, f32_linear_x_xxx00 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x1, 0x00000, 0xffff8) \
+ MACRO(__VA_ARGS__, f32_linear_y_0x000 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x2, 0x00000, 0xfffbf) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_xxx0x_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfa108) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x0x0x_xxx0x_xx00x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfb10a) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_xxx00_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfa118) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x000x_0x00x_00x0x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfadae) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x0000_0x000_00x00 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00000, 0xfefbe) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_10x0x_1xx0x_1x00x , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x7, 0x00421, 0xfb10a) \
+ MACRO(__VA_ARGS__, f32_linear_w_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x8, 0x00000, 0xbffff) \
+ MACRO(__VA_ARGS__, f32_linear_xw_x000x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x9, 0x00000, 0xbffee) \
+ MACRO(__VA_ARGS__, f32_linear_xw_xxx00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0x9, 0x00000, 0xbfff8) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_xxx0x_xxx0x_xxx0x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0xf, 0x00000, 0xba108) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_x0x0x_xxx0x_xx00x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0xf, 0x00000, 0xbb10a) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_x0000_0x000_00x00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR , 0xf, 0x00000, 0xbefbe)
+#define SWS_FOR_STRUCT_F32_LINEAR(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_linear_x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffe8) \
+ MACRO(__VA_ARGS__, f32_linear_x_x000x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee) \
+ MACRO(__VA_ARGS__, f32_linear_x_xxx00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8) \
+ MACRO(__VA_ARGS__, f32_linear_y_0x000 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x2, .par.lin.one = 0x00000, .par.lin.zero = 0xfffbf) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_xxx0x_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x0x0x_xxx0x_xx00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfb10a) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_xxx00_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x000x_0x00x_00x0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe) \
+ MACRO(__VA_ARGS__, f32_linear_xyz_10x0x_1xx0x_1x00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x7, .par.lin.one = 0x00421, .par.lin.zero = 0xfb10a) \
+ MACRO(__VA_ARGS__, f32_linear_w_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x8, .par.lin.one = 0x00000, .par.lin.zero = 0xbffff) \
+ MACRO(__VA_ARGS__, f32_linear_xw_x000x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbffee) \
+ MACRO(__VA_ARGS__, f32_linear_xw_xxx00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbfff8) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_xxx0x_xxx0x_xxx0x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_x0x0x_xxx0x_xx00x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbb10a) \
+ MACRO(__VA_ARGS__, f32_linear_xyzw_x0000_0x000_00x00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbefbe)
+#define SWS_FOR_F32_LINEAR_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffe8, 0xfffe8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffe8, 0xfffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_x000x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffee, 0xfffee) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_X000x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xfffee, 0xfffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxx00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffff8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xXx00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffa) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxX00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffc) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xXX00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x1, 0x00000, 0xffff8, 0xffffe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_y_0x000 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x2, 0x00000, 0xfffbf, 0xfffbf) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx0x_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfa108) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XxX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfbdaf) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XXX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa108, 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_X0X0x_XXX0x_XX00x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfb10a, 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx00_xxx0x_xxx0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfa118) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XxX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfbdbe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XXX0x_XXX0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfa118, 0xfbdfe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_X000x_0X00x_00X0x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfadae, 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_x0000_0x000_00x00 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00000, 0xfefbe, 0xfefbe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_10X0x_1XX0x_1X00x , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x7, 0x00421, 0xfb10a, 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_w_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x8, 0x00000, 0xbffff, 0xbffff) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_x000x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbffee, 0xbffee) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_X000x_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbffee, 0xbffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_xxx00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbfff8, 0xbfff8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_xXX00_000x0 , SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0x9, 0x00000, 0xbfff8, 0xbfffe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_xxx0x_xxx0x_xxx0x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xba108, 0xba108) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_XXX0x_XXX0x_XXX0x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xba108, 0xbbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_X0X0x_XXX0x_XX00x_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xbb10a, 0xbbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_x0000_0x000_00x00_000x0, SWS_PIXEL_F32, SWS_UOP_LINEAR_FMA , 0xf, 0x00000, 0xbefbe, 0xbefbe)
+#define SWS_FOR_STRUCT_F32_LINEAR_FMA(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffe8, .par.lin.exact = 0xfffe8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffe8, .par.lin.exact = 0xfffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_x000x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee, .par.lin.exact = 0xfffee) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_X000x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xfffee, .par.lin.exact = 0xfffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxx00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffff8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xXx00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffa) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xxX00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffc) \
+ MACRO(__VA_ARGS__, f32_linear_fma_x_xXX00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x1, .par.lin.one = 0x00000, .par.lin.zero = 0xffff8, .par.lin.exact = 0xffffe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_y_0x000 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x2, .par.lin.one = 0x00000, .par.lin.zero = 0xfffbf, .par.lin.exact = 0xfffbf) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx0x_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfa108) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XxX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfbdaf) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_XXX0x_XXX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa108, .par.lin.exact = 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_X0X0x_XXX0x_XX00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfb10a, .par.lin.exact = 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xxx00_xxx0x_xxx0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfa118) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XxX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfbdbe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_xXX00_XXX0x_XXX0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfa118, .par.lin.exact = 0xfbdfe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_X000x_0X00x_00X0x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfadae, .par.lin.exact = 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_x0000_0x000_00x00 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00000, .par.lin.zero = 0xfefbe, .par.lin.exact = 0xfefbe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyz_10X0x_1XX0x_1X00x , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x7, .par.lin.one = 0x00421, .par.lin.zero = 0xfb10a, .par.lin.exact = 0xfbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_w_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x8, .par.lin.one = 0x00000, .par.lin.zero = 0xbffff, .par.lin.exact = 0xbffff) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_x000x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbffee, .par.lin.exact = 0xbffee) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_X000x_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbffee, .par.lin.exact = 0xbffef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_xxx00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbfff8, .par.lin.exact = 0xbfff8) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xw_xXX00_000x0 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0x9, .par.lin.one = 0x00000, .par.lin.zero = 0xbfff8, .par.lin.exact = 0xbfffe) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_xxx0x_xxx0x_xxx0x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108, .par.lin.exact = 0xba108) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_XXX0x_XXX0x_XXX0x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xba108, .par.lin.exact = 0xbbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_X0X0x_XXX0x_XX00x_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbb10a, .par.lin.exact = 0xbbdef) \
+ MACRO(__VA_ARGS__, f32_linear_fma_xyzw_x0000_0x000_00x00_000x0, .type = SWS_PIXEL_F32, .uop = SWS_UOP_LINEAR_FMA , .mask = 0xf, .par.lin.one = 0x00000, .par.lin.zero = 0xbefbe, .par.lin.exact = 0xbefbe)
+#define SWS_FOR_F32_DITHER(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_dither_x_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x1, 0, 0, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_y_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x2, 0, 3, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xy_0_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x3, 0, 3, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_z_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x4, 0, 0, 2, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xz_0_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x5, 0, 0, 2, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_0_0_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 0, 0, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_0_3_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 0, 3, 2, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_2_0_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 2, 0, 3, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_2_3_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 2, 3, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_3_0_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 3, 0, 2, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_3_2_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x7, 3, 2, 0, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_w_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x8, 0, 0, 0, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xw_0_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x9, 0, 0, 0, 3, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xw_0_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0x9, 0, 0, 0, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_0_3_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xe, 0, 0, 3, 2, 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_2_0_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xe, 0, 2, 0, 3, 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_2_3_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xe, 0, 2, 3, 0, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_0_0_0_3_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 0, 0, 0, 3, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_0_3_2_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 0, 3, 2, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_2_3_0_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 2, 3, 0, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_3_0_2_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 3, 0, 2, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_3_2_0_5_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 3, 2, 0, 5, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_5_0_3_2_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 5, 0, 3, 2, 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_5_2_3_0_16x16 , SWS_PIXEL_F32, SWS_UOP_DITHER , 0xf, 5, 2, 3, 0, 4)
+#define SWS_FOR_STRUCT_F32_DITHER(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_dither_x_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x1, .par.dither.y_offset = {0, 0, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_y_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x2, .par.dither.y_offset = {0, 3, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xy_0_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x3, .par.dither.y_offset = {0, 3, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_z_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x4, .par.dither.y_offset = {0, 0, 2, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xz_0_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x5, .par.dither.y_offset = {0, 0, 2, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_0_0_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {0, 0, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_0_3_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {0, 3, 2, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_2_0_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {2, 0, 3, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_2_3_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {2, 3, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_3_0_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {3, 0, 2, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyz_3_2_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x7, .par.dither.y_offset = {3, 2, 0, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_w_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x8, .par.dither.y_offset = {0, 0, 0, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xw_0_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x9, .par.dither.y_offset = {0, 0, 0, 3}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xw_0_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0x9, .par.dither.y_offset = {0, 0, 0, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_0_3_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xe, .par.dither.y_offset = {0, 0, 3, 2}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_2_0_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xe, .par.dither.y_offset = {0, 2, 0, 3}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_yzw_2_3_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xe, .par.dither.y_offset = {0, 2, 3, 0}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_0_0_0_3_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {0, 0, 0, 3}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_0_3_2_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {0, 3, 2, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_2_3_0_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {2, 3, 0, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_3_0_2_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {3, 0, 2, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_3_2_0_5_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {3, 2, 0, 5}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_5_0_3_2_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {5, 0, 3, 2}, .par.dither.size_log2 = 4) \
+ MACRO(__VA_ARGS__, f32_dither_xyzw_5_2_3_0_16x16 , .type = SWS_PIXEL_F32, .uop = SWS_UOP_DITHER , .mask = 0xf, .par.dither.y_offset = {5, 2, 3, 0}, .par.dither.size_log2 = 4)
+#define SWS_FOR_F32_LUT_3D(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyz_static , SWS_PIXEL_F32, SWS_UOP_LUT_3D , 0x7, 0) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyz_dynamic , SWS_PIXEL_F32, SWS_UOP_LUT_3D , 0x7, 1) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyzw_static , SWS_PIXEL_F32, SWS_UOP_LUT_3D , 0xf, 0) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyzw_dynamic , SWS_PIXEL_F32, SWS_UOP_LUT_3D , 0xf, 1)
+#define SWS_FOR_STRUCT_F32_LUT_3D(MACRO, ...) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyz_static , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LUT_3D , .mask = 0x7, .par.lut3d.dynamic = 0) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyz_dynamic , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LUT_3D , .mask = 0x7, .par.lut3d.dynamic = 1) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyzw_static , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LUT_3D , .mask = 0xf, .par.lut3d.dynamic = 0) \
+ MACRO(__VA_ARGS__, f32_lut_3d_xyzw_dynamic , .type = SWS_PIXEL_F32, .uop = SWS_UOP_LUT_3D , .mask = 0xf, .par.lut3d.dynamic = 1)
+
+#endif /* SWSCALE_X86_UOPS_MACROS_H */
diff --git a/tests/fate/libswscale.mak b/tests/fate/libswscale.mak
index 5ccab1ad4f..802ac72a03 100644
--- a/tests/fate/libswscale.mak
+++ b/tests/fate/libswscale.mak
@@ -103,6 +103,7 @@ fate-sws-ops-list: libswscale/tests/sws_ops$(EXESUF)
fate-sws-ops-list: CMD = run libswscale/tests/sws_ops$(EXESUF) | do_md5sum | cut -d" " -f1
FATE_SWS_UOPS_MACROS = fate-sws-uops-macros-c \
+ fate-sws-uops-macros-x86 \
fate-sws-uops-macros-x86-nasm \
ifeq ($(HAVE_INT128),yes)
@@ -114,13 +115,17 @@ endif
# (and thus output) due to sorting by memcmp() on the parameters struct.
fate-sws-uops-macros-c: libswscale/uops_macros_gen$(EXESUF)
fate-sws-uops-macros-c: REF = $(SRC_PATH)/libswscale/uops_macros.h
-fate-sws-uops-macros-c: CMD = run libswscale/uops_macros_gen$(EXESUF) \
- -nasm $(TARGET_PATH)/tests/data/fate/sws-uops-macros.asm
+fate-sws-uops-macros-c: CMD = run libswscale/uops_macros_gen$(EXESUF)
-# Generated together with fate-sws-uops-macros-c, since enumeration is slow
-fate-sws-uops-macros-x86-nasm: fate-sws-uops-macros-c
+fate-sws-uops-macros-x86: libswscale/uops_macros_gen$(EXESUF)
+fate-sws-uops-macros-x86: REF = $(SRC_PATH)/libswscale/x86/uops_macros.h
+fate-sws-uops-macros-x86: CMD = run libswscale/uops_macros_gen$(EXESUF) -backend x86 \
+ -nasm $(TARGET_PATH)/tests/data/fate/sws-uops-macros-x86.asm
+
+# Generated together with fate-sws-uops-macros-x86, since enumeration is slow
+fate-sws-uops-macros-x86-nasm: fate-sws-uops-macros-x86
fate-sws-uops-macros-x86-nasm: REF = $(SRC_PATH)/libswscale/x86/uops_macros.asm
-fate-sws-uops-macros-x86-nasm: CMD = cat tests/data/fate/sws-uops-macros.asm
+fate-sws-uops-macros-x86-nasm: CMD = cat tests/data/fate/sws-uops-macros-x86.asm
fate-sws-uops-macros: $(FATE_SWS_UOPS_MACROS)
diff --git a/tests/ref/fate/source b/tests/ref/fate/source
index 9fdd18cd70..614f6f7183 100644
--- a/tests/ref/fate/source
+++ b/tests/ref/fate/source
@@ -22,6 +22,7 @@ libswscale/log2_tab.c
libswscale/riscv/cpu_common.c
libswscale/uops_macros.h
libswscale/x86/uops_macros.asm
+libswscale/x86/uops_macros.h
tools/uncoded_frame.c
tools/yuvcmp.c
Headers without standard inclusion guards: