$OpenBSD: patch-mpeg2_video_yuv2rgb_mmx_c,v 1.6 2018/11/18 19:08:54 naddy Exp $

Add PIC support and remove support for a.out.

Index: mpeg2_video/yuv2rgb_mmx.c
--- mpeg2_video/yuv2rgb_mmx.c.orig
+++ mpeg2_video/yuv2rgb_mmx.c
@@ -62,10 +62,10 @@ void __yuv2rgb_mmx_preventwarnings_dontusethis(void)
 	 MMX_grnmask);
 };
 
-#if defined(__OpenBSD__) && !defined(__ELF__)
-#define _	"_"
+#ifdef __PIC__
+#define GOTOFF	"@GOTOFF(%%ebx)"
 #else
-#define _
+#define GOTOFF
 #endif
 #endif
 
@@ -96,23 +96,23 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "movd           (%0),                   %%mm1\n" // 4 Cr                0  0  0  0 v3 v2 v1 v0
          "punpcklbw      %%mm7,                  %%mm0\n" // 4 W cb   0 u3  0 u2  0 u1  0 u0
          "punpcklbw      %%mm7,                  %%mm1\n" // 4 W cr   0 v3  0 v2  0 v1  0 v0
-         "psubw          "_"MMX_80w,                %%mm0\n"
-         "psubw          "_"MMX_80w,                %%mm1\n"
+         "psubw          MMX_80w"GOTOFF",        %%mm0\n"
+         "psubw          MMX_80w"GOTOFF",        %%mm1\n"
          "movq           %%mm0,                  %%mm2\n"        // Cb                   0 u3  0 u2  0 u1  0 u0
          "movq           %%mm1,                  %%mm3\n" // Cr
-         "pmullw         "_"MMX_Ugrncoeff,          %%mm2\n" // Cb2green 0 R3  0 R2  0 R1  0 R0
+         "pmullw         MMX_Ugrncoeff"GOTOFF",  %%mm2\n" // Cb2green 0 R3  0 R2  0 R1  0 R0
          "movq           (%2),                   %%mm6\n"        // L1      l7 L6 L5 L4 L3 L2 L1 L0
-         "pmullw         "_"MMX_Ublucoeff,          %%mm0\n" // Cb2blue
-         "pand           "_"MMX_00FFw,              %%mm6\n" // L1      00 L6 00 L4 00 L2 00 L0
-         "pmullw         "_"MMX_Vgrncoeff,          %%mm3\n" // Cr2green
+         "pmullw         MMX_Ublucoeff"GOTOFF",  %%mm0\n" // Cb2blue
+         "pand           MMX_00FFw"GOTOFF",      %%mm6\n" // L1      00 L6 00 L4 00 L2 00 L0
+         "pmullw         MMX_Vgrncoeff"GOTOFF",  %%mm3\n" // Cr2green
          "movq           (%2),                   %%mm7\n" // L2
-         "pmullw         "_"MMX_Vredcoeff,          %%mm1\n" // Cr2red
+         "pmullw         MMX_Vredcoeff"GOTOFF",  %%mm1\n" // Cr2red
 //                      "psubw          MMX_10w,                %%mm6\n"
          "psrlw          $8,                     %%mm7\n"        // L2           00 L7 00 L5 00 L3 00 L1
-         "pmullw         "_"MMX_Ycoeff,             %%mm6\n" // lum1
+         "pmullw         MMX_Ycoeff"GOTOFF",     %%mm6\n" // lum1
 //                      "psubw          MMX_10w,                %%mm7\n" // L2
          "paddw          %%mm3,                  %%mm2\n" // Cb2green + Cr2green == green
-         "pmullw         "_"MMX_Ycoeff,             %%mm7\n"  // lum2
+         "pmullw         MMX_Ycoeff"GOTOFF",     %%mm7\n"  // lum2
 
          "movq           %%mm6,                  %%mm4\n"  // lum1
          "paddw          %%mm0,                  %%mm6\n"  // lum1 +blue 00 B6 00 B4 00 B2 00 B0
@@ -130,11 +130,11 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "punpcklbw      %%mm4,                  %%mm4\n"
          "punpcklbw      %%mm5,                  %%mm5\n"
 
-         "pand           "_"MMX_redmask,            %%mm4\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm4\n"
          "psllw          $3,                     %%mm5\n"  // GREEN       1
          "punpcklbw      %%mm6,                  %%mm6\n"
-         "pand           "_"MMX_grnmask,            %%mm5\n"
-         "pand           "_"MMX_redmask,            %%mm6\n"
+         "pand           MMX_grnmask"GOTOFF",    %%mm5\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm6\n"
          "por            %%mm5,                  %%mm4\n" //
          "psrlw          $11,                    %%mm6\n"                // BLUE        1
          "movq           %%mm3,                  %%mm5\n" // lum2
@@ -148,17 +148,17 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "packuswb       %%mm3,                  %%mm3\n"
          "packuswb       %%mm5,                  %%mm5\n"
          "packuswb       %%mm7,                  %%mm7\n"
-         "pand           "_"MMX_00FFw,              %%mm6\n"  // L3
+         "pand           MMX_00FFw"GOTOFF",      %%mm6\n"  // L3
          "punpcklbw      %%mm3,                  %%mm3\n"
          //                              "psubw          MMX_10w,                        %%mm6\n"  // L3
          "punpcklbw      %%mm5,                  %%mm5\n"
-         "pmullw         "_"MMX_Ycoeff,             %%mm6\n"  // lum3
+         "pmullw         MMX_Ycoeff"GOTOFF",     %%mm6\n"  // lum3
          "punpcklbw      %%mm7,                  %%mm7\n"
          "psllw          $3,                     %%mm5\n"  // GREEN 2
-         "pand           "_"MMX_redmask,            %%mm7\n"
-         "pand           "_"MMX_redmask,            %%mm3\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm7\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm3\n"
          "psrlw          $11,                    %%mm7\n"  // BLUE  2
-         "pand           "_"MMX_grnmask,            %%mm5\n"
+         "pand           MMX_grnmask"GOTOFF",    %%mm5\n"
          "por            %%mm7,                  %%mm3\n"
          "movq           (%2,%3),                %%mm7\n"  // L4
          "por            %%mm5,                  %%mm3\n"     //
@@ -166,7 +166,7 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "movq           %%mm4,                  %%mm5\n"
          //                              "psubw          MMX_10w,                        %%mm7\n"                // L4
          "punpcklwd      %%mm3,                  %%mm4\n"
-         "pmullw         "_"MMX_Ycoeff,             %%mm7\n"    // lum4
+         "pmullw         MMX_Ycoeff"GOTOFF",     %%mm7\n"    // lum4
          "punpckhwd      %%mm3,                  %%mm5\n"
 
          "movq           %%mm4,                  (%4)\n"
@@ -193,11 +193,11 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "punpcklbw      %%mm5,                  %%mm5\n"
          "punpcklbw      %%mm6,                  %%mm6\n"
          "psllw          $3,                     %%mm5\n" // GREEN 3
-         "pand           "_"MMX_redmask,            %%mm4\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm4\n"
          "psraw          $6,                     %%mm3\n" // psr 6
          "psraw          $6,                     %%mm0\n"
-         "pand           "_"MMX_redmask,            %%mm6\n" // BLUE
-         "pand           "_"MMX_grnmask,            %%mm5\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm6\n" // BLUE
+         "pand           MMX_grnmask"GOTOFF",    %%mm5\n"
          "psrlw          $11,                    %%mm6\n"  // BLUE  3
          "por            %%mm5,                  %%mm4\n"
          "psraw          $6,                     %%mm7\n"
@@ -208,11 +208,11 @@ void  YUV2RGB420_MMX_16(uint8_t *out,
          "punpcklbw      %%mm3,                  %%mm3\n"
          "punpcklbw      %%mm0,                  %%mm0\n"
          "punpcklbw      %%mm7,                  %%mm7\n"
-         "pand           "_"MMX_redmask,            %%mm3\n"
-         "pand           "_"MMX_redmask,            %%mm7\n" // BLUE
+         "pand           MMX_redmask"GOTOFF",    %%mm3\n"
+         "pand           MMX_redmask"GOTOFF",    %%mm7\n" // BLUE
          "psllw          $3,                     %%mm0\n" // GREEN 4
          "psrlw          $11,                    %%mm7\n"
-         "pand           "_"MMX_grnmask,            %%mm0\n"
+         "pand           MMX_grnmask"GOTOFF",    %%mm0\n"
          "por            %%mm7,                  %%mm3\n"
          "addl           $8,                     %6\n"
          "por            %%mm0,                  %%mm3\n"
