diff --git a/libswscale/x86/input.asm b/libswscale/x86/input.asm
index 7404b19dc2b9402b6b1b71629b0a3157d62cca50..d52a35a106fddef39c514b6731e9618b1f5634b7 100644
--- a/libswscale/x86/input.asm
+++ b/libswscale/x86/input.asm
@@ -273,31 +273,28 @@ cglobal %2 %+ 24ToUV, 3, 4, %1, dstU, dstV, src, w
 %endif ; ARCH_X86_64 && %0 == 3
 %endmacro
 
+; %1 = nr. of XMM registers for rgb-to-Y func
+; %2 = nr. of XMM registers for rgb-to-UV func
+%macro RGB24_FUNCS 2
+RGB24_TO_Y_FN %1, rgb
+RGB24_TO_Y_FN %1, bgr, rgb
+RGB24_TO_UV_FN %2, rgb
+RGB24_TO_UV_FN %2, bgr, rgb
+%endmacro
+
 %if ARCH_X86_32
 INIT_MMX mmx
-RGB24_TO_Y_FN 0, rgb
-RGB24_TO_Y_FN 0, bgr, rgb
-RGB24_TO_UV_FN 0, rgb
-RGB24_TO_UV_FN 0, bgr, rgb
+RGB24_FUNCS 0, 0
 %endif
 
 INIT_XMM sse2
-RGB24_TO_Y_FN 10, rgb
-RGB24_TO_Y_FN 10, bgr, rgb
-RGB24_TO_UV_FN 12, rgb
-RGB24_TO_UV_FN 12, bgr, rgb
+RGB24_FUNCS 10, 12
 
 INIT_XMM ssse3
-RGB24_TO_Y_FN 11, rgb
-RGB24_TO_Y_FN 11, bgr, rgb
-RGB24_TO_UV_FN 13, rgb
-RGB24_TO_UV_FN 13, bgr, rgb
+RGB24_FUNCS 11, 13
 
 INIT_XMM avx
-RGB24_TO_Y_FN 11, rgb
-RGB24_TO_Y_FN 11, bgr, rgb
-RGB24_TO_UV_FN 13, rgb
-RGB24_TO_UV_FN 13, bgr, rgb
+RGB24_FUNCS 11, 13
 
 ;-----------------------------------------------------------------------------
 ; YUYV/UYVY/NV12/NV21 packed pixel shuffling.