This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 0e49820959bf914413ccb8dbf1b7b1a36272bb65
Author:     Niklas Haas <[email protected]>
AuthorDate: Thu Oct 22 20:15:54 2026 +0200
Commit:     Niklas Haas <[email protected]>
CommitDate: Sun Oct 25 02:23:01 2026 +0000

    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 <[email protected]>
    Signed-off-by: Niklas Haas <[email protected]>
---
 libswscale/uops_macros.h           | 144 +++----------------------------------
 libswscale/uops_macros_gen.c       |  11 +--
 libswscale/x86/ops.c               |   2 +-
 libswscale/x86/uops_macros.asm     |   2 -
 libswscale/{ => x86}/uops_macros.h |  10 +--
 tests/fate/libswscale.mak          |  15 ++--
 tests/ref/fate/source              |   1 +
 7 files changed, 32 insertions(+), 153 deletions(-)

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/uops_macros.h b/libswscale/x86/uops_macros.h
similarity index 99%
copy from libswscale/uops_macros.h
copy to libswscale/x86/uops_macros.h
index 9e300fbac1..91499a1d86 100644
--- a/libswscale/uops_macros.h
+++ b/libswscale/x86/uops_macros.h
@@ -3,8 +3,8 @@
  * To regenerate, run: make fate-sws-uops-macros GEN=1
  */
 
-#ifndef SWSCALE_UOPS_MACROS_H
-#define SWSCALE_UOPS_MACROS_H
+#ifndef SWSCALE_X86_UOPS_MACROS_H
+#define SWSCALE_X86_UOPS_MACROS_H
 
 /**
  * Boilerplate helper macros, for template-based backends. These will be
@@ -159,8 +159,6 @@
     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_xyw_x_z                      , SWS_PIXEL_U8 
, SWS_UOP_PERMUTE         , 0xb, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0) \
-    MACRO(__VA_ARGS__, 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) \
     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) \
@@ -189,8 +187,6 @@
     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_xyw_x_z                      , .type = 
SWS_PIXEL_U8 , .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__, u8_permute_xzw_x_y                      , .type = 
SWS_PIXEL_U8 , .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__, 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}) \
@@ -1208,4 +1204,4 @@
     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_UOPS_MACROS_H */
+#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:

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to