[FFmpeg-devel] [PATCH 1/3] libavcodec/mips: Fix specification of instruction name

Jin Bo jinbo at loongson.cn
Fri May 28 05:04:39 EEST 2021


1.'xor,or,and' to 'pxor,por,pand'. In the case of operating FPR,
  gcc supports both of them, clang only supports the second type.
2.'dsrl,srl' to 'ssrld,ssrlw'. In the case of operating FPR, gcc
  supports both of them, clang only supports the second type.

Signed-off-by: Jin Bo <jinbo at loongson.cn>
---
 libavcodec/mips/blockdsp_mmi.c    |   8 +-
 libavcodec/mips/h264chroma_mmi.c  |  20 +--
 libavcodec/mips/h264dsp_mmi.c     | 288 +++++++++++++++++++-------------------
 libavcodec/mips/h264pred_mmi.c    |  18 +--
 libavcodec/mips/h264qpel_mmi.c    |  26 ++--
 libavcodec/mips/hevcdsp_mmi.c     |  32 ++---
 libavcodec/mips/hpeldsp_mmi.c     |  26 ++--
 libavcodec/mips/idctdsp_mmi.c     |   2 +-
 libavcodec/mips/mpegvideo_mmi.c   |  94 ++++++-------
 libavcodec/mips/pixblockdsp_mmi.c |   8 +-
 libavcodec/mips/simple_idct_mmi.c |  14 +-
 libavcodec/mips/vc1dsp_mmi.c      |  34 ++---
 libavcodec/mips/vp3dsp_idct_mmi.c | 132 ++++++++---------
 libavcodec/mips/vp8dsp_mmi.c      |  80 +++++------
 libavcodec/mips/vp9_mc_mmi.c      |  10 +-
 libavcodec/mips/wmv2dsp_mmi.c     |   2 +-
 16 files changed, 397 insertions(+), 397 deletions(-)

diff --git a/libavcodec/mips/blockdsp_mmi.c b/libavcodec/mips/blockdsp_mmi.c
index 68641e2..8b5c7e9 100644
--- a/libavcodec/mips/blockdsp_mmi.c
+++ b/libavcodec/mips/blockdsp_mmi.c
@@ -76,8 +76,8 @@ void ff_clear_block_mmi(int16_t *block)
     double ftmp[2];
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp1]                \n\t"
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x00)
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x10)
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x20)
@@ -97,8 +97,8 @@ void ff_clear_blocks_mmi(int16_t *block)
     double ftmp[2];
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp1]                \n\t"
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x00)
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x10)
         MMI_SQC1(%[ftmp0], %[ftmp1], %[block], 0x20)
diff --git a/libavcodec/mips/h264chroma_mmi.c b/libavcodec/mips/h264chroma_mmi.c
index 739dd7d..dbcba10 100644
--- a/libavcodec/mips/h264chroma_mmi.c
+++ b/libavcodec/mips/h264chroma_mmi.c
@@ -72,7 +72,7 @@ void ff_put_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         A = 64 - D - B - C;
 
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
             "dli        %[tmp0],    0x06                               \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t"
             "pshufh     %[B],       %[B],           %[ftmp0]           \n\t"
@@ -172,7 +172,7 @@ void ff_put_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         A = 64 - E;
 
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
             "dli        %[tmp0],    0x06                               \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]           \n\t"
@@ -221,7 +221,7 @@ void ff_put_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         A = 64 - E;
 
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t"
             "dli        %[tmp0],    0x06                               \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]           \n\t"
@@ -328,7 +328,7 @@ void ff_avg_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         C = (y << 3) - D;
         A = 64 - D - B - C;
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
             "dli        %[tmp0],    0x06                           \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t"
             "pshufh     %[B],       %[B],           %[ftmp0]       \n\t"
@@ -396,7 +396,7 @@ void ff_avg_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         E = x << 3;
         A = 64 - E;
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
             "dli        %[tmp0],    0x06                           \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]       \n\t"
@@ -446,7 +446,7 @@ void ff_avg_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
         E = y << 3;
         A = 64 - E;
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t"
             "dli        %[tmp0],    0x06                           \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]       \n\t"
@@ -509,7 +509,7 @@ void ff_put_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
 
     if (D) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             "dli        %[tmp0],    0x06                                \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t"
             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t"
@@ -559,7 +559,7 @@ void ff_put_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
     } else if (E) {
         const int step = C ? stride : 1;
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             "dli        %[tmp0],    0x06                                \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t"
@@ -633,7 +633,7 @@ void ff_avg_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
 
     if (D) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             "dli        %[tmp0],    0x06                                \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t"
             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t"
@@ -685,7 +685,7 @@ void ff_avg_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
     } else if (E) {
         const int step = C ? stride : 1;
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             "dli        %[tmp0],    0x06                                \n\t"
             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t"
             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t"
diff --git a/libavcodec/mips/h264dsp_mmi.c b/libavcodec/mips/h264dsp_mmi.c
index d4fcef0..fe12b28 100644
--- a/libavcodec/mips/h264dsp_mmi.c
+++ b/libavcodec/mips/h264dsp_mmi.c
@@ -34,7 +34,7 @@ void ff_h264_add_pixels4_8_mmi(uint8_t *dst, int16_t *src, int stride)
     DECLARE_VAR_LOW32;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         MMI_LDC1(%[ftmp1], %[src], 0x00)
         MMI_LDC1(%[ftmp2], %[src], 0x08)
         MMI_LDC1(%[ftmp3], %[src], 0x10)
@@ -89,7 +89,7 @@ void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
         MMI_LDC1(%[ftmp2], %[block], 0x10)
         MMI_LDC1(%[ftmp3], %[block], 0x18)
         /* memset(block, 0, 32) */
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         "gssqc1     %[ftmp4],   %[ftmp4],       0x00(%[block])          \n\t"
         "gssqc1     %[ftmp4],   %[ftmp4],       0x10(%[block])          \n\t"
         "dli        %[tmp0],    0x01                                    \n\t"
@@ -127,7 +127,7 @@ void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
         "psubh      %[ftmp5],   %[ftmp5],       %[ftmp4]                \n\t"
         MMI_ULWC1(%[ftmp2], %[dst], 0x00)
         MMI_LWXC1(%[ftmp0], %[dst], %[stride], 0x00)
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "psrah      %[ftmp3],   %[ftmp10],      %[ftmp9]                \n\t"
         "psrah      %[ftmp4],   %[ftmp11],      %[ftmp9]                \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],       %[ftmp7]                \n\t"
@@ -419,7 +419,7 @@ void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
         "psubh      %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
         MMI_SDC1(%[ftmp0], $sp, 0x10)
         "dmfc1      %[tmp1],    %[ftmp2]                                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp2]                \n\t"
         MMI_SDC1(%[ftmp2], %[block], 0x00)
         MMI_SDC1(%[ftmp2], %[block], 0x08)
         MMI_SDC1(%[ftmp2], %[block], 0x10)
@@ -555,7 +555,7 @@ void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         MMI_SDC1(%[ftmp7], $sp, 0x18)
         "dmfc1      %[tmp2],    %[ftmp0]                                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         MMI_ULWC1(%[ftmp6], %[addr0], 0x00)
         MMI_LWXC1(%[ftmp7], %[addr0], %[stride], 0x00)
         "psrah      %[ftmp2],   %[ftmp2],       %[ftmp10]               \n\t"
@@ -646,7 +646,7 @@ void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
 
     __asm__ volatile (
         "mtc1       %[dc],      %[ftmp5]                                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[ftmp5],   %[ftmp5],       %[ftmp0]                \n\t"
         MMI_ULWC1(%[ftmp1], %[dst0], 0x00)
         MMI_ULWC1(%[ftmp2], %[dst1], 0x00)
@@ -690,7 +690,7 @@ void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
 
     __asm__ volatile (
         "mtc1       %[dc],      %[ftmp5]                                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[ftmp5],   %[ftmp5],       %[ftmp0]                \n\t"
         MMI_LDC1(%[ftmp1], %[dst0], 0x00)
         MMI_LDC1(%[ftmp2], %[dst1], 0x00)
@@ -929,7 +929,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "packsswh   %[ftmp0],   %[ftmp0],       %[ftmp1]                \n\t"
         "packsswh   %[ftmp2],   %[ftmp2],       %[ftmp5]                \n\t"
         "dmfc1      %[tmp1],    %[ftmp0]                                \n\t"
-        "dsrl       %[ftmp0],   %[ftmp0],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp0],   %[ftmp0],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp0]                                \n\t"
         "sh         %[tmp1],    0x00(%[output])                         \n\t"
         "sh         %[input],   0x80(%[output])                         \n\t"
@@ -938,7 +938,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "sh         %[tmp1],    0x20(%[output])                         \n\t"
         "sh         %[input],   0xa0(%[output])                         \n\t"
         "dmfc1      %[tmp1],    %[ftmp2]                                \n\t"
-        "dsrl       %[ftmp2],   %[ftmp2],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp2],   %[ftmp2],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp2]                                \n\t"
         "sh         %[tmp1],    0x40(%[output])                         \n\t"
         "sh         %[input],   0xc0(%[output])                         \n\t"
@@ -963,7 +963,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "packsswh   %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
         "packsswh   %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
         "dmfc1      %[tmp1],    %[ftmp3]                                \n\t"
-        "dsrl       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp3]                                \n\t"
         "sh         %[tmp1],    0x100(%[output])                        \n\t"
         "sh         %[input],   0x180(%[output])                        \n\t"
@@ -972,7 +972,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "sh         %[tmp1],    0x120(%[output])                        \n\t"
         "sh         %[input],   0x1a0(%[output])                        \n\t"
         "dmfc1      %[tmp1],    %[ftmp4]                                \n\t"
-        "dsrl       %[ftmp4],   %[ftmp4],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp4],   %[ftmp4],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp4]                                \n\t"
         "sh         %[tmp1],    0x140(%[output])                        \n\t"
         "sh         %[input],   0x1c0(%[output])                        \n\t"
@@ -1016,7 +1016,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "packsswh   %[ftmp0],   %[ftmp0],       %[ftmp1]                \n\t"
         "packsswh   %[ftmp2],   %[ftmp2],       %[ftmp5]                \n\t"
         "dmfc1      %[tmp1],    %[ftmp0]                                \n\t"
-        "dsrl       %[ftmp0],   %[ftmp0],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp0],   %[ftmp0],       %[ftmp9]                \n\t"
         "sh         %[tmp1],    0x00(%[output])                         \n\t"
         "mfc1       %[input],   %[ftmp0]                                \n\t"
         "dsrl       %[tmp1],    %[tmp1],        0x10                    \n\t"
@@ -1025,7 +1025,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         PTR_SRL    "%[input],   %[input],       0x10                    \n\t"
         "dmfc1      %[tmp1],    %[ftmp2]                                \n\t"
         "sh         %[input],   0xa0(%[output])                         \n\t"
-        "dsrl       %[ftmp2],   %[ftmp2],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp2],   %[ftmp2],       %[ftmp9]                \n\t"
         "sh         %[tmp1],    0x40(%[output])                         \n\t"
         "mfc1       %[input],   %[ftmp2]                                \n\t"
         "dsrl       %[tmp1],    %[tmp1],        0x10                    \n\t"
@@ -1050,7 +1050,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "packsswh   %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
         "packsswh   %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
         "dmfc1      %[tmp1],    %[ftmp3]                                \n\t"
-        "dsrl       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp3]                                \n\t"
         "sh         %[tmp1],    0x100(%[output])                        \n\t"
         "sh         %[input],   0x180(%[output])                        \n\t"
@@ -1059,7 +1059,7 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
         "sh         %[tmp1],    0x120(%[output])                        \n\t"
         "sh         %[input],   0x1a0(%[output])                        \n\t"
         "dmfc1      %[tmp1],    %[ftmp4]                                \n\t"
-        "dsrl       %[ftmp4],   %[ftmp4],       %[ftmp9]                \n\t"
+        "ssrld      %[ftmp4],   %[ftmp4],       %[ftmp9]                \n\t"
         "mfc1       %[input],   %[ftmp4]                                \n\t"
         "sh         %[tmp1],    0x140(%[output])                        \n\t"
         "sh         %[input],   0x1c0(%[output])                        \n\t"
@@ -1144,7 +1144,7 @@ void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
 
     for (y=0; y<height; y++, block+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_LDC1(%[ftmp1], %[block0], 0x00)
             MMI_LDC1(%[ftmp2], %[block1], 0x00)
             "mtc1       %[weight],  %[ftmp3]                            \n\t"
@@ -1198,7 +1198,7 @@ void ff_h264_biweight_pixels16_8_mmi(uint8_t *dst, uint8_t *src,
 
     for (y=0; y<height; y++, dst+=stride, src+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_LDC1(%[ftmp1], %[src0], 0x00)
             MMI_LDC1(%[ftmp2], %[dst0], 0x00)
             "mtc1       %[weights], %[ftmp3]                            \n\t"
@@ -1271,7 +1271,7 @@ void ff_h264_weight_pixels8_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
 
     for (y=0; y<height; y++, block+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_LDC1(%[ftmp1], %[block], 0x00)
             "mtc1       %[weight],  %[ftmp2]                            \n\t"
             "mtc1       %[offset],  %[ftmp3]                            \n\t"
@@ -1312,7 +1312,7 @@ void ff_h264_biweight_pixels8_8_mmi(uint8_t *dst, uint8_t *src,
 
     for (y=0; y<height; y++, dst+=stride, src+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_LDC1(%[ftmp1], %[src], 0x00)
             MMI_LDC1(%[ftmp2], %[dst], 0x00)
             "mtc1       %[weights], %[ftmp3]                            \n\t"
@@ -1366,7 +1366,7 @@ void ff_h264_weight_pixels4_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
 
     for (y=0; y<height; y++, block+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_ULWC1(%[ftmp1], %[block], 0x00)
             "mtc1       %[weight],  %[ftmp2]                            \n\t"
             "mtc1       %[offset],  %[ftmp3]                            \n\t"
@@ -1402,7 +1402,7 @@ void ff_h264_biweight_pixels4_8_mmi(uint8_t *dst, uint8_t *src,
 
     for (y=0; y<height; y++, dst+=stride, src+=stride) {
         __asm__ volatile (
-            "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+            "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
             MMI_ULWC1(%[ftmp1], %[src], 0x00)
             MMI_ULWC1(%[ftmp2], %[dst], 0x00)
             "mtc1       %[weight],  %[ftmp3]                            \n\t"
@@ -1445,7 +1445,7 @@ void ff_deblock_v8_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int bet
 
     __asm__ volatile (
         PTR_ADDU   "%[addr0],   %[stride],      %[stride]               \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         PTR_ADDU   "%[addr1],   %[stride],      %[addr0]                \n\t"
         "addi       %[alpha],   %[alpha],       -0x01                   \n\t"
         PTR_SUBU   "%[addr1],   $0,             %[addr1]                \n\t"
@@ -1463,18 +1463,18 @@ void ff_deblock_v8_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int bet
         "packushb   %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp2]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp2],       %[ftmp3]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp4],       %[ftmp3]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "pcmpeqb    %[ftmp8],   %[ftmp8],       %[ftmp0]                \n\t"
         "pcmpeqb    %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         MMI_ULWC1(%[ftmp5], %[tc0], 0x00)
@@ -1482,21 +1482,21 @@ void ff_deblock_v8_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int bet
         "punpcklbh  %[ftmp9],   %[ftmp5],       %[ftmp5]                \n\t"
         "pcmpgtb    %[ftmp5],   %[ftmp9],       %[ftmp4]                \n\t"
         MMI_LDC1(%[ftmp4], %[addr1], 0x00)
-        "and        %[ftmp10],  %[ftmp5],       %[ftmp8]                \n\t"
+        "pand       %[ftmp10],  %[ftmp5],       %[ftmp8]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp4],       %[ftmp2]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp2],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp7],   %[ftmp7],       %[ftmp8]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
-        "and        %[ftmp5],   %[ftmp10],      %[ftmp9]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pand       %[ftmp5],   %[ftmp10],      %[ftmp9]                \n\t"
         "psubb      %[ftmp8],   %[ftmp5],       %[ftmp7]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
         "pavgb      %[ftmp5],   %[ftmp2],       %[ftmp3]                \n\t"
         MMI_LDC1(%[ftmp11], %[addr1], 0x00)
         "pavgb      %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp11]               \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp11]               \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp1],       %[ftmp7]                \n\t"
         "paddusb    %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
@@ -1509,26 +1509,26 @@ void ff_deblock_v8_luma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int bet
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         "psubb      %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
-        "and        %[ftmp6],   %[ftmp9],       %[ftmp7]                \n\t"
+        "pand       %[ftmp6],   %[ftmp9],       %[ftmp7]                \n\t"
         MMI_LDXC1(%[ftmp4], %[pix], %[stride], 0x00)
         "pavgb      %[ftmp7],   %[ftmp2],       %[ftmp3]                \n\t"
         MMI_LDXC1(%[ftmp11], %[pix], %[addr0], 0x00)
         "pavgb      %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp11]               \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp11]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ff_pb_1]              \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp4],       %[ftmp6]                \n\t"
         "paddusb    %[ftmp6],   %[ftmp6],       %[ftmp4]                \n\t"
         "pmaxub     %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "pminub     %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
         MMI_SDXC1(%[ftmp5], %[pix], %[stride], 0x00)
-        "xor        %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
         "pcmpeqb    %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ff_pb_1]              \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp2]                \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp2]                \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ftmp1]                \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ff_pb_3]              \n\t"
         "pavgb      %[ftmp5],   %[ftmp5],       %[ftmp3]                \n\t"
@@ -1574,12 +1574,12 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
 
     __asm__ volatile (
         "ori        %[tmp0],    $0,             0x01                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "mtc1       %[tmp0],    %[ftmp9]                                \n\t"
         PTR_SLL    "%[addr0],   %[stride],      0x02                    \n\t"
         PTR_ADDU   "%[addr2],   %[stride],      %[stride]               \n\t"
         PTR_ADDIU  "%[alpha],   %[alpha],       -0x01                   \n\t"
-        PTR_SLL    "%[ftmp11],  %[ftmp9],       %[ftmp9]                \n\t"
+        "sslld      %[ftmp11],  %[ftmp9],       %[ftmp9]                \n\t"
         "bltz       %[alpha],   1f                                      \n\t"
         PTR_ADDU   "%[addr1],   %[addr2],       %[stride]               \n\t"
         PTR_ADDIU  "%[beta],    %[beta],        -0x01                   \n\t"
@@ -1598,20 +1598,20 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp2]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp2],       %[ftmp3]                \n\t"
         "packushb   %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         MMI_SDC1(%[ftmp5], %[stack], 0x10)
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp4],       %[ftmp3]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         MMI_LDC1(%[ftmp5], %[stack], 0x10)
         "pcmpeqb    %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "ldc1       %[ftmp10],  %[ff_pb_1]                              \n\t"
@@ -1624,14 +1624,14 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         "psubusb    %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
         MMI_LDC1(%[ftmp15], %[stack], 0x20)
         "pcmpeqb    %[ftmp7],   %[ftmp7],       %[ftmp8]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp15]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp15]               \n\t"
         MMI_LDXC1(%[ftmp15], %[addr0], %[stride], 0x00)
         "psubusb    %[ftmp8],   %[ftmp15],      %[ftmp2]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp2],       %[ftmp15]               \n\t"
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp5],   %[ftmp5],       %[ftmp8]                \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         MMI_LDXC1(%[ftmp14], %[pix], %[addr2], 0x00)
         MMI_SDC1(%[ftmp5], %[stack], 0x30)
         "psubusb    %[ftmp8],   %[ftmp14],      %[ftmp3]                \n\t"
@@ -1639,7 +1639,7 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp5],   %[ftmp5],       %[ftmp8]                \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         MMI_SDC1(%[ftmp5], %[stack], 0x40)
         "pavgb      %[ftmp5],   %[ftmp15],      %[ftmp1]                \n\t"
         "pavgb      %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
@@ -1652,36 +1652,36 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         MMI_SDC1(%[ftmp7], %[stack], 0x00)
         "psrlh      %[ftmp7],   %[ftmp7],       %[ftmp9]                \n\t"
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp0]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         "psubb      %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "pavgb      %[ftmp6],   %[ftmp15],      %[ftmp4]                \n\t"
         "psubb      %[ftmp7],   %[ftmp15],      %[ftmp4]                \n\t"
         "paddb      %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
         "psubb      %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
         MMI_LDC1(%[ftmp13], %[stack], 0x10)
         "pavgb      %[ftmp6],   %[ftmp6],       %[ftmp1]                \n\t"
         "psrlh      %[ftmp8],   %[ftmp8],       %[ftmp11]               \n\t"
         "pavgb      %[ftmp6],   %[ftmp6],       %[ftmp13]               \n\t"
         "pavgb      %[ftmp8],   %[ftmp8],       %[ftmp0]                \n\t"
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
-        "and        %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
+        "pand       %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp8]                \n\t"
-        "xor        %[ftmp8],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp2],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp7],   %[ftmp2],       %[ftmp4]                \n\t"
-        "and        %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
+        "pand       %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
         "psubb      %[ftmp7],   %[ftmp7],       %[ftmp8]                \n\t"
         MMI_LDC1(%[ftmp13], %[stack], 0x30)
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
         MMI_LDC1(%[ftmp12], %[stack], 0x20)
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp2]                \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ftmp13]               \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp12]               \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp2]                \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ftmp13]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp12]               \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp2]                \n\t"
         MMI_SDXC1(%[ftmp6], %[addr0], %[addr1], 0x00)
         MMI_LDC1(%[ftmp6], %[addr0], 0x00)
         "paddb      %[ftmp7],   %[ftmp15],      %[ftmp6]                \n\t"
@@ -1692,16 +1692,16 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         "paddb      %[ftmp7],   %[ftmp7],       %[ftmp12]               \n\t"
         "psrlh      %[ftmp7],   %[ftmp7],       %[ftmp11]               \n\t"
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp0]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         MMI_LDC1(%[ftmp12], %[stack], 0x30)
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp1]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp15]               \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ftmp12]               \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp1]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp15]               \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp15]               \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ftmp12]               \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp15]               \n\t"
         MMI_SDXC1(%[ftmp5], %[addr0], %[addr2], 0x00)
         MMI_SDXC1(%[ftmp6], %[addr0], %[stride], 0x00)
         "pavgb      %[ftmp5],   %[ftmp14],      %[ftmp4]                \n\t"
@@ -1715,36 +1715,36 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         MMI_SDC1(%[ftmp7], %[stack], 0x00)
         "psrlh      %[ftmp7],   %[ftmp7],       %[ftmp9]                \n\t"
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp0]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         "psubb      %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "pavgb      %[ftmp6],   %[ftmp14],      %[ftmp1]                \n\t"
         "paddb      %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
         "psubb      %[ftmp7],   %[ftmp14],      %[ftmp1]                \n\t"
         "psubb      %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
         MMI_LDC1(%[ftmp12], %[stack], 0x10)
         "pavgb      %[ftmp6],   %[ftmp6],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
         "psrlh      %[ftmp8],   %[ftmp8],       %[ftmp11]               \n\t"
         "pavgb      %[ftmp8],   %[ftmp8],       %[ftmp0]                \n\t"
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
-        "and        %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp6]                \n\t"
+        "pand       %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp8]                \n\t"
-        "xor        %[ftmp8],   %[ftmp3],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp3],       %[ftmp1]                \n\t"
         "pavgb      %[ftmp7],   %[ftmp3],       %[ftmp1]                \n\t"
-        "and        %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
+        "pand       %[ftmp8],   %[ftmp8],       %[ftmp10]               \n\t"
         MMI_LDC1(%[ftmp12], %[stack], 0x40)
         "psubb      %[ftmp7],   %[ftmp7],       %[ftmp8]                \n\t"
         MMI_LDC1(%[ftmp13], %[stack], 0x20)
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp3]                \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp13]               \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp3]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp3]                \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp13]               \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp3]                \n\t"
         MMI_SDC1(%[ftmp6], %[pix], 0x00)
         MMI_LDXC1(%[ftmp6], %[pix], %[addr1], 0x00)
         "paddb      %[ftmp7],   %[ftmp14],      %[ftmp6]                \n\t"
@@ -1755,16 +1755,16 @@ static void deblock_v8_luma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alph
         "paddb      %[ftmp7],   %[ftmp7],       %[ftmp12]               \n\t"
         "psrlh      %[ftmp7],   %[ftmp7],       %[ftmp11]               \n\t"
         "pavgb      %[ftmp7],   %[ftmp7],       %[ftmp0]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp10]               \n\t"
         MMI_LDC1(%[ftmp12], %[stack], 0x40)
         "psubb      %[ftmp6],   %[ftmp6],       %[ftmp7]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp4]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp14]               \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ftmp12]               \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp4]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp14]               \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp14]               \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ftmp12]               \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ftmp12]               \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp14]               \n\t"
         MMI_SDXC1(%[ftmp5], %[pix], %[stride], 0x00)
         MMI_SDXC1(%[ftmp6], %[pix], %[addr2], 0x00)
         "1:                                                             \n\t"
@@ -1808,7 +1808,7 @@ void ff_deblock_v_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         MMI_LDC1(%[ftmp3], %[pix], 0x00)
         MMI_LDXC1(%[ftmp4], %[pix], %[stride], 0x00)
 
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "mtc1       %[alpha],   %[ftmp5]                                \n\t"
         "mtc1       %[beta],    %[ftmp6]                                \n\t"
         "pshufh     %[ftmp5],   %[ftmp5],       %[ftmp0]                \n\t"
@@ -1817,29 +1817,29 @@ void ff_deblock_v_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         "packushb   %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp2]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp2],       %[ftmp3]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp4],       %[ftmp3]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "pcmpeqb    %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         MMI_ULWC1(%[ftmp7], %[tc0], 0x00)
         "punpcklbh  %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
-        "and        %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
+        "pand       %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "pcmpeqb    %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
-        "xor        %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "and        %[ftmp6],   %[ftmp6],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
+        "pand       %[ftmp6],   %[ftmp6],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ftmp1]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp2]                \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ff_pb_3]              \n\t"
         "pavgb      %[ftmp5],   %[ftmp5],       %[ftmp3]                \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
@@ -1891,7 +1891,7 @@ void ff_deblock_v_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         MMI_LDC1(%[ftmp3], %[pix], 0x00)
         MMI_LDXC1(%[ftmp4], %[pix], %[stride], 0x00)
 
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "mtc1       %[alpha],   %[ftmp5]                                \n\t"
         "mtc1       %[beta],    %[ftmp6]                                \n\t"
         "pshufh     %[ftmp5],   %[ftmp5],       %[ftmp0]                \n\t"
@@ -1900,36 +1900,36 @@ void ff_deblock_v_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         "packushb   %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp2]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp2],       %[ftmp3]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp4],       %[ftmp3]                \n\t"
-        "or         %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
+        "por        %[ftmp5],   %[ftmp5],       %[ftmp7]                \n\t"
         "psubusb    %[ftmp5],   %[ftmp5],       %[ftmp6]                \n\t"
-        "or         %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "por        %[ftmp8],   %[ftmp8],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "pcmpeqb    %[ftmp8],   %[ftmp8],       %[ftmp7]                \n\t"
         "mov.d      %[ftmp6],   %[ftmp2]                                \n\t"
         "mov.d      %[ftmp7],   %[ftmp3]                                \n\t"
-        "xor        %[ftmp5],   %[ftmp2],       %[ftmp4]                \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp5],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp2],   %[ftmp2],       %[ftmp5]                \n\t"
         "pavgb      %[ftmp2],   %[ftmp2],       %[ftmp1]                \n\t"
-        "xor        %[ftmp5],   %[ftmp3],       %[ftmp1]                \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp5],   %[ftmp3],       %[ftmp1]                \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp3],   %[ftmp3],       %[ftmp5]                \n\t"
         "pavgb      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubb      %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
         "psubb      %[ftmp3],   %[ftmp3],       %[ftmp7]                \n\t"
-        "and        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
-        "and        %[ftmp3],   %[ftmp3],       %[ftmp8]                \n\t"
+        "pand       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pand       %[ftmp3],   %[ftmp3],       %[ftmp8]                \n\t"
         "paddb      %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
         "paddb      %[ftmp3],   %[ftmp3],       %[ftmp7]                \n\t"
 
@@ -1996,7 +1996,7 @@ void ff_deblock_h_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int be
         "mov.d      %[ftmp9],   %[ftmp0]                                \n\t"
         "mov.d      %[ftmp10],  %[ftmp3]                                \n\t"
 
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
         "mtc1       %[alpha],   %[ftmp4]                                \n\t"
         "mtc1       %[beta],    %[ftmp5]                                \n\t"
         "pshufh     %[ftmp4],   %[ftmp4],       %[ftmp8]                \n\t"
@@ -2005,29 +2005,29 @@ void ff_deblock_h_chroma_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha, int be
         "packushb   %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp1],       %[ftmp0]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp0],       %[ftmp1]                \n\t"
-        "or         %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
+        "por        %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp3],       %[ftmp2]                \n\t"
-        "or         %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
+        "por        %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         MMI_ULWC1(%[ftmp6], %[tc0], 0x00)
         "punpcklbh  %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
-        "and        %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
+        "pand       %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
-        "xor        %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
-        "and        %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp5],   %[ftmp1],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
+        "pand       %[ftmp5],   %[ftmp5],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp1]                \n\t"
         "pavgb      %[ftmp3],   %[ftmp3],       %[ff_pb_3]              \n\t"
         "pavgb      %[ftmp4],   %[ftmp4],       %[ftmp2]                \n\t"
         "pavgb      %[ftmp3],   %[ftmp3],       %[ftmp5]                \n\t"
@@ -2134,7 +2134,7 @@ void ff_deblock_h_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         "punpcklwd  %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
         "punpcklwd  %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
 
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
         "mtc1       %[alpha],   %[ftmp4]                                \n\t"
         "mtc1       %[beta],    %[ftmp5]                                \n\t"
         "pshufh     %[ftmp4],   %[ftmp4],       %[ftmp8]                \n\t"
@@ -2143,36 +2143,36 @@ void ff_deblock_h_chroma_intra_8_mmi(uint8_t *pix, ptrdiff_t stride, int alpha,
         "packushb   %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp2],       %[ftmp1]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp1],       %[ftmp2]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp1],       %[ftmp0]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp0],       %[ftmp1]                \n\t"
-        "or         %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
+        "por        %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
         "psubusb    %[ftmp6],   %[ftmp2],       %[ftmp3]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp3],       %[ftmp2]                \n\t"
-        "or         %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
+        "por        %[ftmp4],   %[ftmp4],       %[ftmp6]                \n\t"
         "psubusb    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "or         %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
+        "por        %[ftmp7],   %[ftmp7],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "pcmpeqb    %[ftmp7],   %[ftmp7],       %[ftmp6]                \n\t"
         "mov.d      %[ftmp5],   %[ftmp1]                                \n\t"
         "mov.d      %[ftmp6],   %[ftmp2]                                \n\t"
-        "xor        %[ftmp4],   %[ftmp1],       %[ftmp3]                \n\t"
-        "and        %[ftmp4],   %[ftmp4],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp4],   %[ftmp1],       %[ftmp3]                \n\t"
+        "pand       %[ftmp4],   %[ftmp4],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
         "psubusb    %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
-        "xor        %[ftmp4],   %[ftmp2],       %[ftmp0]                \n\t"
-        "and        %[ftmp4],   %[ftmp4],       %[ff_pb_1]              \n\t"
+        "pxor       %[ftmp4],   %[ftmp2],       %[ftmp0]                \n\t"
+        "pand       %[ftmp4],   %[ftmp4],       %[ff_pb_1]              \n\t"
         "pavgb      %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
         "psubusb    %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp2],   %[ftmp2],       %[ftmp3]                \n\t"
         "psubb      %[ftmp1],   %[ftmp1],       %[ftmp5]                \n\t"
         "psubb      %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
-        "and        %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
-        "and        %[ftmp2],   %[ftmp2],       %[ftmp7]                \n\t"
+        "pand       %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
+        "pand       %[ftmp2],   %[ftmp2],       %[ftmp7]                \n\t"
         "paddb      %[ftmp1],   %[ftmp1],       %[ftmp5]                \n\t"
         "paddb      %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
 
diff --git a/libavcodec/mips/h264pred_mmi.c b/libavcodec/mips/h264pred_mmi.c
index 0209c2e..f8947a0 100644
--- a/libavcodec/mips/h264pred_mmi.c
+++ b/libavcodec/mips/h264pred_mmi.c
@@ -162,7 +162,7 @@ void ff_pred8x8l_top_dc_8_mmi(uint8_t *src, int has_topleft,
     DECLARE_VAR_ADDRT;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         MMI_ULDC1(%[ftmp10], %[srcA], 0x00)
         MMI_ULDC1(%[ftmp9], %[src0], 0x00)
         MMI_ULDC1(%[ftmp8], %[src1], 0x00)
@@ -266,7 +266,7 @@ void ff_pred8x8l_dc_8_mmi(uint8_t *src, int has_topleft, int has_topright,
         MMI_ULDC1(%[ftmp4], %[srcA], 0x00)
         MMI_ULDC1(%[ftmp5], %[src0], 0x00)
         MMI_ULDC1(%[ftmp6], %[src1], 0x00)
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x03                                    \n\t"
         "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]                \n\t"
         "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]                \n\t"
@@ -357,7 +357,7 @@ void ff_pred8x8l_vertical_8_mmi(uint8_t *src, int has_topleft,
     DECLARE_VAR_ALL64;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         MMI_LDC1(%[ftmp3], %[srcA], 0x00)
         MMI_LDC1(%[ftmp4], %[src0], 0x00)
         MMI_LDC1(%[ftmp5], %[src1], 0x00)
@@ -530,7 +530,7 @@ void ff_pred8x8_top_dc_8_mmi(uint8_t *src, ptrdiff_t stride)
 
     __asm__ volatile (
         "dli        %[tmp0],    0x02                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         PTR_SUBU   "%[addr0],   %[src],         %[stride]               \n\t"
         MMI_LDC1(%[ftmp1], %[addr0], 0x00)
         "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]                \n\t"
@@ -640,7 +640,7 @@ void ff_pred8x8_dc_8_mmi(uint8_t *src, ptrdiff_t stride)
         PTR_SRL    "%[addr4],   0x02                                    \n\t"
         PTR_SRL    "%[addr1],   0x02                                    \n\t"
         PTR_SRL    "%[addr2],   0x03                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dmtc1      %[addr3],   %[ftmp1]                                \n\t"
         "pshufh     %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
         "dmtc1      %[addr4],   %[ftmp2]                                \n\t"
@@ -757,9 +757,9 @@ static inline void pred16x16_plane_compat_mmi(uint8_t *src, int stride,
         "dmtc1      %[tmp0],    %[ftmp4]                                \n\t"
         MMI_ULDC1(%[ftmp0], %[addr0], -0x01)
         MMI_ULDC1(%[ftmp2], %[addr0],  0x08)
-        "dsrl       %[ftmp1],   %[ftmp0],       %[ftmp4]                \n\t"
-        "dsrl       %[ftmp3],   %[ftmp2],       %[ftmp4]                \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
+        "ssrld      %[ftmp1],   %[ftmp0],       %[ftmp4]                \n\t"
+        "ssrld      %[ftmp3],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         "punpcklbh  %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
         "punpcklbh  %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
@@ -915,7 +915,7 @@ static inline void pred16x16_plane_compat_mmi(uint8_t *src, int stride,
         "dmul       %[tmp3],    %[tmp3],        %[tmp2]                 \n\t"
         "dsubu      %[tmp5],    %[tmp5],        %[tmp3]                 \n\t"
 
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         "dmtc1      %[tmp0],    %[ftmp0]                                \n\t"
         "pshufh     %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
         "dmtc1      %[tmp1],    %[ftmp5]                                \n\t"
diff --git a/libavcodec/mips/h264qpel_mmi.c b/libavcodec/mips/h264qpel_mmi.c
index 13fbebf..72362d3 100644
--- a/libavcodec/mips/h264qpel_mmi.c
+++ b/libavcodec/mips/h264qpel_mmi.c
@@ -114,7 +114,7 @@ static void put_h264_qpel4_h_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     DECLARE_VAR_LOW32;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x04                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULWC1(%[ftmp1], %[src], -0x02)
@@ -169,7 +169,7 @@ static void put_h264_qpel8_h_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     DECLARE_VAR_ALL64;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x08                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULDC1(%[ftmp1], %[src], -0x02)
@@ -250,7 +250,7 @@ static void avg_h264_qpel4_h_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     DECLARE_VAR_LOW32;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x04                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULWC1(%[ftmp1], %[src], -0x02)
@@ -307,7 +307,7 @@ static void avg_h264_qpel8_h_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     DECLARE_VAR_ALL64;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x08                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULDC1(%[ftmp1], %[src], -0x02)
@@ -394,7 +394,7 @@ static void put_h264_qpel4_v_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     __asm__ volatile (
         ".set       push                                                \n\t"
         ".set       noreorder                                           \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x02                                    \n\t"
         MMI_LWC1(%[ftmp1], %[src], 0x00)
         "mtc1       %[tmp0],    %[ftmp10]                               \n\t"
@@ -516,7 +516,7 @@ static void put_h264_qpel8_v_lowpass_mmi(uint8_t *dst, const uint8_t *src,
             PTR_ADDU   "%[src],     %[src],         %[srcStride]        \n\t"
             MMI_LWC1(%[ftmp2], %[src], 0x00)
             PTR_ADDU   "%[src],     %[src],         %[srcStride]        \n\t"
-            "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
+            "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
             MMI_LWC1(%[ftmp3], %[src], 0x00)
             PTR_ADDU   "%[src],     %[src],         %[srcStride]        \n\t"
             MMI_LWC1(%[ftmp4], %[src], 0x00)
@@ -812,7 +812,7 @@ static void avg_h264_qpel4_v_lowpass_mmi(uint8_t *dst, const uint8_t *src,
         ".set       push                                                \n\t"
         ".set       noreorder                                           \n\t"
         "dli        %[tmp0],    0x02                                    \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "mtc1       %[tmp0],    %[ftmp9]                                \n\t"
         "dli        %[tmp0],    0x05                                    \n\t"
         MMI_LWC1(%[ftmp0], %[src], 0x00)
@@ -930,7 +930,7 @@ static void avg_h264_qpel8_v_lowpass_mmi(uint8_t *dst, const uint8_t *src,
             ".set       push                                            \n\t"
             ".set       noreorder                                       \n\t"
             "dli        %[tmp0],    0x02                                \n\t"
-            "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
+            "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
             "mtc1       %[tmp0],    %[ftmp9]                            \n\t"
             "dli        %[tmp0],    0x05                                \n\t"
             MMI_LWC1(%[ftmp0], %[src], 0x00)
@@ -1269,7 +1269,7 @@ static void put_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     src -= 2*srcStride;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x09                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULWC1(%[ftmp1], %[src], -0x02)
@@ -1347,7 +1347,7 @@ static void put_h264_qpel8or16_hv1_lowpass_mmi(int16_t *tmp,
             MMI_ULWC1(%[ftmp0], %[src], 0x00)
             "mtc1       %[tmp0],    %[ftmp10]                           \n\t"
             PTR_ADDU   "%[src],     %[src],         %[srcStride]        \n\t"
-            "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
+            "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"
             MMI_ULWC1(%[ftmp1], %[src], 0x00)
             PTR_ADDU   "%[src],     %[src],         %[srcStride]        \n\t"
             MMI_ULWC1(%[ftmp2], %[src], 0x00)
@@ -1684,7 +1684,7 @@ static void put_h264_qpel8_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src,
         "dli        %[tmp0],    0x02                                    \n\t"
         "mtc1       %[tmp0],    %[ftmp7]                                \n\t"
         "dli        %[tmp0],    0x05                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "mtc1       %[tmp0],    %[ftmp8]                                \n\t"
         "1:                                                             \n\t"
         MMI_ULDC1(%[ftmp1], %[src], 0x00)
@@ -1833,7 +1833,7 @@ static void avg_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src,
     src -= 2*srcStride;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "dli        %[tmp0],    0x09                                    \n\t"
         "1:                                                             \n\t"
         MMI_ULWC1(%[ftmp1], %[src], -0x02)
@@ -2005,7 +2005,7 @@ static void avg_h264_qpel8_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src,
         "ori        %[tmp0],    $0,             0x8                     \n\t"
         "mtc1       %[tmp1],    %[ftmp7]                                \n\t"
         "dli        %[tmp1],    0x05                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "mtc1       %[tmp1],    %[ftmp8]                                \n\t"
         "1:                                                             \n\t"
         MMI_ULDC1(%[ftmp1], %[src], 0x00)
diff --git a/libavcodec/mips/hevcdsp_mmi.c b/libavcodec/mips/hevcdsp_mmi.c
index aa83e1f..e89d37e 100644
--- a/libavcodec/mips/hevcdsp_mmi.c
+++ b/libavcodec/mips/hevcdsp_mmi.c
@@ -46,7 +46,7 @@ void ff_hevc_put_hevc_qpel_h##w##_8_mmi(int16_t *dst, uint8_t *_src,     \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"    \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"    \
         "psrah        %[ftmp2],      %[ftmp2],      %[ftmp0]    \n\t"    \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"    \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"    \
                                                                          \
         "1:                                                     \n\t"    \
         "2:                                                     \n\t"    \
@@ -147,7 +147,7 @@ void ff_hevc_put_hevc_qpel_hv##w##_8_mmi(int16_t *dst, uint8_t *_src,    \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"    \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"    \
         "psrah        %[ftmp2],      %[ftmp2],      %[ftmp0]    \n\t"    \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"    \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"    \
                                                                          \
         "1:                                                     \n\t"    \
         "2:                                                     \n\t"    \
@@ -344,7 +344,7 @@ void ff_hevc_put_hevc_qpel_bi_h##w##_8_mmi(uint8_t *_dst,               \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"   \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"   \
         "psrah        %[ftmp2],      %[ftmp2],      %[ftmp0]    \n\t"   \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
         "punpcklhw    %[offset],     %[offset],     %[offset]   \n\t"   \
         "punpcklwd    %[offset],     %[offset],     %[offset]   \n\t"   \
                                                                         \
@@ -403,7 +403,7 @@ void ff_hevc_put_hevc_qpel_bi_h##w##_8_mmi(uint8_t *_dst,               \
         "psraw        %[ftmp6],      %[ftmp6],      %[shift]    \n\t"   \
         "packsswh     %[ftmp5],      %[ftmp5],      %[ftmp6]    \n\t"   \
         "pcmpgth      %[ftmp7],      %[ftmp5],      %[ftmp0]    \n\t"   \
-        "and          %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
+        "pand         %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
         "packushb     %[ftmp3],      %[ftmp3],      %[ftmp3]    \n\t"   \
         "gsswlc1      %[ftmp3],      0x03(%[dst])               \n\t"   \
         "gsswrc1      %[ftmp3],      0x00(%[dst])               \n\t"   \
@@ -480,7 +480,7 @@ void ff_hevc_put_hevc_qpel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"   \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"   \
         "psrah        %[ftmp2],      %[ftmp2],      %[ftmp0]    \n\t"   \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
                                                                         \
         "1:                                                     \n\t"   \
         "2:                                                     \n\t"   \
@@ -612,7 +612,7 @@ void ff_hevc_put_hevc_qpel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "packsswh     %[ftmp3],      %[ftmp3],      %[ftmp5]    \n\t"   \
         "gsldlc1      %[ftmp4],      0x07(%[src2])              \n\t"   \
         "gsldrc1      %[ftmp4],      0x00(%[src2])              \n\t"   \
-        "xor          %[ftmp7],      %[ftmp7],      %[ftmp7]    \n\t"   \
+        "pxor         %[ftmp7],      %[ftmp7],      %[ftmp7]    \n\t"   \
         "li           %[rtmp0],      0x10                       \n\t"   \
         "dmtc1        %[rtmp0],      %[ftmp8]                   \n\t"   \
         "punpcklhw    %[ftmp5],      %[ftmp7],      %[ftmp3]    \n\t"   \
@@ -631,7 +631,7 @@ void ff_hevc_put_hevc_qpel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "psraw        %[ftmp6],      %[ftmp6],      %[shift]    \n\t"   \
         "packsswh     %[ftmp5],      %[ftmp5],      %[ftmp6]    \n\t"   \
         "pcmpgth      %[ftmp7],      %[ftmp5],      %[ftmp7]    \n\t"   \
-        "and          %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
+        "pand         %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
         "packushb     %[ftmp3],      %[ftmp3],      %[ftmp3]    \n\t"   \
         "gsswlc1      %[ftmp3],      0x03(%[dst])               \n\t"   \
         "gsswrc1      %[ftmp3],      0x00(%[dst])               \n\t"   \
@@ -706,7 +706,7 @@ void ff_hevc_put_hevc_epel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "dmtc1        %[rtmp0],      %[ftmp0]                   \n\t"   \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"   \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"   \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
                                                                         \
         "1:                                                     \n\t"   \
         "2:                                                     \n\t"   \
@@ -771,7 +771,7 @@ void ff_hevc_put_hevc_epel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "li           %[rtmp0],      0x06                       \n\t"   \
         "dmtc1        %[rtmp0],      %[ftmp0]                   \n\t"   \
         "punpcklwd    %[offset],     %[offset],     %[offset]   \n\t"   \
-        "xor          %[ftmp2],      %[ftmp2],      %[ftmp2]    \n\t"   \
+        "pxor         %[ftmp2],      %[ftmp2],      %[ftmp2]    \n\t"   \
                                                                         \
         "1:                                                     \n\t"   \
         "li           %[x],        " #x_step "                  \n\t"   \
@@ -821,7 +821,7 @@ void ff_hevc_put_hevc_epel_bi_hv##w##_8_mmi(uint8_t *_dst,              \
         "psraw        %[ftmp6],      %[ftmp6],      %[shift]    \n\t"   \
         "packsswh     %[ftmp5],      %[ftmp5],      %[ftmp6]    \n\t"   \
         "pcmpgth      %[ftmp7],      %[ftmp5],      %[ftmp2]    \n\t"   \
-        "and          %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
+        "pand         %[ftmp3],      %[ftmp5],      %[ftmp7]    \n\t"   \
         "packushb     %[ftmp3],      %[ftmp3],      %[ftmp3]    \n\t"   \
         "gsswlc1      %[ftmp3],      0x03(%[dst])               \n\t"   \
         "gsswrc1      %[ftmp3],      0x00(%[dst])               \n\t"   \
@@ -882,7 +882,7 @@ void ff_hevc_put_hevc_pel_bi_pixels##w##_8_mmi(uint8_t *_dst,             \
     y = height;                                                           \
     x = width >> 3;                                                       \
     __asm__ volatile(                                                     \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"     \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"     \
         "li           %[rtmp0],      0x06                       \n\t"     \
         "dmtc1        %[rtmp0],      %[ftmp1]                   \n\t"     \
         "li           %[rtmp0],      0x10                       \n\t"     \
@@ -930,8 +930,8 @@ void ff_hevc_put_hevc_pel_bi_pixels##w##_8_mmi(uint8_t *_dst,             \
         "packsswh     %[ftmp4],      %[ftmp4],      %[ftmp5]    \n\t"     \
         "pcmpgth      %[ftmp3],      %[ftmp2],      %[ftmp0]    \n\t"     \
         "pcmpgth      %[ftmp5],      %[ftmp4],      %[ftmp0]    \n\t"     \
-        "and          %[ftmp2],      %[ftmp2],      %[ftmp3]    \n\t"     \
-        "and          %[ftmp4],      %[ftmp4],      %[ftmp5]    \n\t"     \
+        "pand         %[ftmp2],      %[ftmp2],      %[ftmp3]    \n\t"     \
+        "pand         %[ftmp4],      %[ftmp4],      %[ftmp5]    \n\t"     \
         "packushb     %[ftmp2],      %[ftmp2],      %[ftmp4]    \n\t"     \
         "gssdlc1      %[ftmp2],      0x07(%[dst])               \n\t"     \
         "gssdrc1      %[ftmp2],      0x00(%[dst])               \n\t"     \
@@ -1006,7 +1006,7 @@ void ff_hevc_put_hevc_qpel_uni_hv##w##_8_mmi(uint8_t *_dst,             \
         "punpcklbh    %[ftmp1],      %[ftmp0],      %[ftmp1]    \n\t"   \
         "psrah        %[ftmp1],      %[ftmp1],      %[ftmp0]    \n\t"   \
         "psrah        %[ftmp2],      %[ftmp2],      %[ftmp0]    \n\t"   \
-        "xor          %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
+        "pxor         %[ftmp0],      %[ftmp0],      %[ftmp0]    \n\t"   \
                                                                         \
         "1:                                                     \n\t"   \
         "2:                                                     \n\t"   \
@@ -1139,9 +1139,9 @@ void ff_hevc_put_hevc_qpel_uni_hv##w##_8_mmi(uint8_t *_dst,             \
         "packsswh     %[ftmp3],      %[ftmp3],      %[ftmp5]    \n\t"   \
         "paddh        %[ftmp3],      %[ftmp3],      %[offset]   \n\t"   \
         "psrah        %[ftmp3],      %[ftmp3],      %[shift]    \n\t"   \
-        "xor          %[ftmp7],      %[ftmp7],      %[ftmp7]    \n\t"   \
+        "pxor         %[ftmp7],      %[ftmp7],      %[ftmp7]    \n\t"   \
         "pcmpgth      %[ftmp7],      %[ftmp3],      %[ftmp7]    \n\t"   \
-        "and          %[ftmp3],      %[ftmp3],      %[ftmp7]    \n\t"   \
+        "pand         %[ftmp3],      %[ftmp3],      %[ftmp7]    \n\t"   \
         "packushb     %[ftmp3],      %[ftmp3],      %[ftmp3]    \n\t"   \
         "gsswlc1      %[ftmp3],      0x03(%[dst])               \n\t"   \
         "gsswrc1      %[ftmp3],      0x00(%[dst])               \n\t"   \
diff --git a/libavcodec/mips/hpeldsp_mmi.c b/libavcodec/mips/hpeldsp_mmi.c
index e69b2bd..bf3e463 100644
--- a/libavcodec/mips/hpeldsp_mmi.c
+++ b/libavcodec/mips/hpeldsp_mmi.c
@@ -676,14 +676,14 @@ inline void ff_put_no_rnd_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
         PTR_ADDU   "%[addr1],   %[src2],        %[src_stride2]          \n\t"
         MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
         PTR_ADDU   "%[src1],    %[src1],        %[addr2]                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp0],   %[ftmp0],       %[ftmp2]                \n\t"
         "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
         MMI_SDC1(%[ftmp0], %[dst], 0x00)
         MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
         PTR_ADDU   "%[src2],    %[src2],        %[addr3]                \n\t"
@@ -696,14 +696,14 @@ inline void ff_put_no_rnd_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
         PTR_ADDU   "%[addr1],   %[src2],        %[src_stride2]          \n\t"
         MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
         PTR_ADDU   "%[src1],    %[src1],        %[addr2]                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "pavgb      %[ftmp0],   %[ftmp0],       %[ftmp2]                \n\t"
         "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
         MMI_SDC1(%[ftmp0], %[dst], 0x00)
         MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
         PTR_ADDU   "%[src2],    %[src2],        %[addr3]                \n\t"
@@ -846,7 +846,7 @@ void ff_put_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
     DECLARE_VAR_ADDRT;
 
     __asm__ volatile (
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "dli        %[addr0],   0x0f                                    \n\t"
         "pcmpeqw    %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "dmtc1      %[addr0],   %[ftmp8]                                \n\t"
diff --git a/libavcodec/mips/idctdsp_mmi.c b/libavcodec/mips/idctdsp_mmi.c
index a96dac4..0047aef 100644
--- a/libavcodec/mips/idctdsp_mmi.c
+++ b/libavcodec/mips/idctdsp_mmi.c
@@ -154,7 +154,7 @@ void ff_add_pixels_clamped_mmi(const int16_t *block,
     uint64_t tmp[1];
     __asm__ volatile (
         "li         %[tmp0],    0x04                           \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]           \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]           \n\t"
         "1:                                                    \n\t"
         MMI_LDC1(%[ftmp5], %[pixels], 0x00)
         PTR_ADDU   "%[pixels],  %[pixels],  %[line_size]       \n\t"
diff --git a/libavcodec/mips/mpegvideo_mmi.c b/libavcodec/mips/mpegvideo_mmi.c
index e4aba08..edaa839 100644
--- a/libavcodec/mips/mpegvideo_mmi.c
+++ b/libavcodec/mips/mpegvideo_mmi.c
@@ -53,13 +53,13 @@ void ff_dct_unquantize_h263_intra_mmi(MpegEncContext *s, int16_t *block,
         nCoeffs = s->inter_scantable.raster_end[s->block_last_index[n]];
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "packsswh   %[qmul],    %[qmul],        %[qmul]                 \n\t"
         "packsswh   %[qmul],    %[qmul],        %[qmul]                 \n\t"
         "packsswh   %[qadd],    %[qadd],        %[qadd]                 \n\t"
         "packsswh   %[qadd],    %[qadd],        %[qadd]                 \n\t"
         "psubh      %[ftmp0],   %[ftmp0],       %[qadd]                 \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
         ".p2align   4                                                   \n\t"
 
         "1:                                                             \n\t"
@@ -72,12 +72,12 @@ void ff_dct_unquantize_h263_intra_mmi(MpegEncContext *s, int16_t *block,
         "pmullh     %[ftmp2],   %[ftmp2],       %[qmul]                 \n\t"
         "pcmpgth    %[ftmp3],   %[ftmp3],       %[ftmp5]                \n\t"
         "pcmpgth    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
         "paddh      %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
         "paddh      %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp2]                \n\t"
         "pcmpeqh    %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
         "pcmpeqh    %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
         "pandn      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
@@ -116,11 +116,11 @@ void ff_dct_unquantize_h263_inter_mmi(MpegEncContext *s, int16_t *block,
     __asm__ volatile (
         "packsswh   %[qmul],    %[qmul],        %[qmul]                 \n\t"
         "packsswh   %[qmul],    %[qmul],        %[qmul]                 \n\t"
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "packsswh   %[qadd],    %[qadd],        %[qadd]                 \n\t"
         "packsswh   %[qadd],    %[qadd],        %[qadd]                 \n\t"
         "psubh      %[ftmp0],   %[ftmp0],       %[qadd]                 \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
         ".p2align   4                                                   \n\t"
         "1:                                                             \n\t"
         PTR_ADDU   "%[addr0],   %[block],       %[nCoeffs]              \n\t"
@@ -132,12 +132,12 @@ void ff_dct_unquantize_h263_inter_mmi(MpegEncContext *s, int16_t *block,
         "pmullh     %[ftmp2],   %[ftmp2],       %[qmul]                 \n\t"
         "pcmpgth    %[ftmp3],   %[ftmp3],       %[ftmp5]                \n\t"
         "pcmpgth    %[ftmp4],   %[ftmp4],       %[ftmp5]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
         "paddh      %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
         "paddh      %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp1]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp2]                \n\t"
         "pcmpeqh    %[ftmp1],   %[ftmp1],       %[ftmp0]                \n\t"
         "pcmpeqh    %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
         "pandn      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
@@ -201,18 +201,18 @@ void ff_dct_unquantize_mpeg1_intra_mmi(MpegEncContext *s, int16_t *block,
         MMI_LDXC1(%[ftmp7], %[addr0], %[quant], 0x08)
         "pmullh     %[ftmp6],   %[ftmp6],       %[ftmp1]                \n\t"
         "pmullh     %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
-        "xor        %[ftmp9],   %[ftmp9],       %[ftmp9]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp9],   %[ftmp9],       %[ftmp9]                \n\t"
         "pcmpgth    %[ftmp8],   %[ftmp8],       %[ftmp2]                \n\t"
         "pcmpgth    %[ftmp9],   %[ftmp9],       %[ftmp3]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "pmullh     %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
         "pmullh     %[ftmp3],   %[ftmp3],       %[ftmp7]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "pcmpeqh    %[ftmp6],   %[ftmp6],       %[ftmp4]                \n\t"
         "dli        %[tmp0],    0x03                                    \n\t"
         "pcmpeqh    %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
@@ -221,10 +221,10 @@ void ff_dct_unquantize_mpeg1_intra_mmi(MpegEncContext *s, int16_t *block,
         "psrah      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
-        "or         %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
-        "or         %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "por        %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
+        "por        %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "pandn      %[ftmp6],   %[ftmp6],       %[ftmp2]                \n\t"
@@ -287,12 +287,12 @@ void ff_dct_unquantize_mpeg1_inter_mmi(MpegEncContext *s, int16_t *block,
         MMI_LDXC1(%[ftmp7], %[addr0], %[quant], 0x08)
         "pmullh     %[ftmp6],   %[ftmp6],       %[ftmp1]                \n\t"
         "pmullh     %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
-        "xor        %[ftmp9],   %[ftmp9],       %[ftmp9]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp9],   %[ftmp9],       %[ftmp9]                \n\t"
         "pcmpgth    %[ftmp8],   %[ftmp8],       %[ftmp2]                \n\t"
         "pcmpgth    %[ftmp9],   %[ftmp9],       %[ftmp3]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "paddh      %[ftmp2],   %[ftmp2],       %[ftmp2]                \n\t"
@@ -301,8 +301,8 @@ void ff_dct_unquantize_mpeg1_inter_mmi(MpegEncContext *s, int16_t *block,
         "paddh      %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
         "pmullh     %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
         "pmullh     %[ftmp3],   %[ftmp3],       %[ftmp7]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
         "pcmpeqh    %[ftmp6],   %[ftmp6],       %[ftmp4]                \n\t"
         "dli        %[tmp0],    0x04                                    \n\t"
         "pcmpeqh    %[ftmp7],   %[ftmp7],       %[ftmp5]                \n\t"
@@ -311,10 +311,10 @@ void ff_dct_unquantize_mpeg1_inter_mmi(MpegEncContext *s, int16_t *block,
         "psrah      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
-        "or         %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
-        "or         %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
+        "por        %[ftmp2],   %[ftmp2],       %[ftmp0]                \n\t"
+        "por        %[ftmp3],   %[ftmp3],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp9]                \n\t"
         "pandn      %[ftmp6],   %[ftmp6],       %[ftmp2]                \n\t"
@@ -386,26 +386,26 @@ void ff_dct_unquantize_mpeg2_intra_mmi(MpegEncContext *s, int16_t *block,
         MMI_LDXC1(%[ftmp6], %[addr0], %[quant], 0x08)
         "pmullh     %[ftmp5],   %[ftmp5],       %[ftmp9]                \n\t"
         "pmullh     %[ftmp6],   %[ftmp6],       %[ftmp9]                \n\t"
-        "xor        %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
-        "xor        %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp7],   %[ftmp7],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp8],   %[ftmp8],       %[ftmp8]                \n\t"
         "pcmpgth    %[ftmp7],   %[ftmp7],       %[ftmp1]                \n\t"
         "pcmpgth    %[ftmp8],   %[ftmp8],       %[ftmp2]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "pmullh     %[ftmp1],   %[ftmp1],       %[ftmp5]                \n\t"
         "pmullh     %[ftmp2],   %[ftmp2],       %[ftmp6]                \n\t"
-        "xor        %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
-        "xor        %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
+        "pxor       %[ftmp5],   %[ftmp5],       %[ftmp5]                \n\t"
+        "pxor       %[ftmp6],   %[ftmp6],       %[ftmp6]                \n\t"
         "pcmpeqh    %[ftmp5],   %[ftmp5],       %[ftmp3]                \n\t"
         "dli        %[tmp0],    0x03                                    \n\t"
         "pcmpeqh    %[ftmp6] ,  %[ftmp6],       %[ftmp4]                \n\t"
         "mtc1       %[tmp0],    %[ftmp3]                                \n\t"
         "psrah      %[ftmp1],   %[ftmp1],       %[ftmp3]                \n\t"
         "psrah      %[ftmp2],   %[ftmp2],       %[ftmp3]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "psubh      %[ftmp1],   %[ftmp1],       %[ftmp7]                \n\t"
         "psubh      %[ftmp2],   %[ftmp2],       %[ftmp8]                \n\t"
         "pandn      %[ftmp5],   %[ftmp5],       %[ftmp1]                \n\t"
@@ -445,16 +445,16 @@ void ff_denoise_dct_mmi(MpegEncContext *s, int16_t *block)
     s->dct_count[intra]++;
 
     __asm__ volatile(
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "1:                                                             \n\t"
         MMI_LDC1(%[ftmp1], %[block], 0x00)
-        "xor        %[ftmp2],   %[ftmp2],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp2],   %[ftmp2],       %[ftmp2]                \n\t"
         MMI_LDC1(%[ftmp3], %[block], 0x08)
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         "pcmpgth    %[ftmp2],   %[ftmp2],       %[ftmp1]                \n\t"
         "pcmpgth    %[ftmp4],   %[ftmp4],       %[ftmp3]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubh      %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         MMI_LDC1(%[ftmp6], %[offset], 0x00)
@@ -463,8 +463,8 @@ void ff_denoise_dct_mmi(MpegEncContext *s, int16_t *block)
         MMI_LDC1(%[ftmp6], %[offset], 0x08)
         "mov.d      %[ftmp7],   %[ftmp3]                                \n\t"
         "psubush    %[ftmp3],   %[ftmp3],       %[ftmp6]                \n\t"
-        "xor        %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
-        "xor        %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
+        "pxor       %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         "psubh      %[ftmp1],   %[ftmp1],       %[ftmp2]                \n\t"
         "psubh      %[ftmp3],   %[ftmp3],       %[ftmp4]                \n\t"
         MMI_SDC1(%[ftmp1], %[block], 0x00)
diff --git a/libavcodec/mips/pixblockdsp_mmi.c b/libavcodec/mips/pixblockdsp_mmi.c
index a915a3c..1230f5d 100644
--- a/libavcodec/mips/pixblockdsp_mmi.c
+++ b/libavcodec/mips/pixblockdsp_mmi.c
@@ -33,7 +33,7 @@ void ff_get_pixels_8_mmi(int16_t *av_restrict block, const uint8_t *pixels,
     DECLARE_VAR_ADDRT;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
 
         MMI_LDC1(%[ftmp1], %[pixels], 0x00)
         MMI_LDXC1(%[ftmp2], %[pixels], %[stride], 0x00)
@@ -103,12 +103,12 @@ void ff_diff_pixels_mmi(int16_t *av_restrict block, const uint8_t *src1,
 
     __asm__ volatile (
         "li         %[tmp0],    0x08                                    \n\t"
-        "xor        %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
+        "pxor       %[ftmp4],   %[ftmp4],       %[ftmp4]                \n\t"
         "1:                                                             \n\t"
         MMI_LDC1(%[ftmp0], %[src1], 0x00)
-        "or         %[ftmp1],   %[ftmp0],       %[ftmp0]                \n\t"
+        "por        %[ftmp1],   %[ftmp0],       %[ftmp0]                \n\t"
         MMI_LDC1(%[ftmp2], %[src2], 0x00)
-        "or         %[ftmp3],   %[ftmp2],       %[ftmp2]                \n\t"
+        "por        %[ftmp3],   %[ftmp2],       %[ftmp2]                \n\t"
         "punpcklbh  %[ftmp0],   %[ftmp0],       %[ftmp4]                \n\t"
         "punpckhbh  %[ftmp1],   %[ftmp1],       %[ftmp4]                \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],       %[ftmp4]                \n\t"
diff --git a/libavcodec/mips/simple_idct_mmi.c b/libavcodec/mips/simple_idct_mmi.c
index e4b58dc..ad068a8 100644
--- a/libavcodec/mips/simple_idct_mmi.c
+++ b/libavcodec/mips/simple_idct_mmi.c
@@ -133,7 +133,7 @@ void ff_simple_idct_8_mmi(int16_t *block)
         "psllh        $f28,     "#src1",    $f30                \n\t" \
         "dmtc1        $9,        $f31                           \n\t" \
         "punpcklhw    $f29,      $f28,      $f28                \n\t" \
-        "and          $f29,      $f29,      $f31                \n\t" \
+        "pand         $f29,      $f29,      $f31                \n\t" \
         "paddw        $f28,      $f28,      $f29                \n\t" \
         "punpcklwd   "#src1",    $f28,      $f28                \n\t" \
         "punpcklwd   "#src2",    $f28,      $f28                \n\t" \
@@ -268,9 +268,9 @@ void ff_simple_idct_8_mmi(int16_t *block)
         "punpcklwd    $f8,       $f27,      $f29                \n\t"
         "punpckhwd    $f12,      $f27,      $f29                \n\t"
 
-        "or           $f26,      $f2,       $f6                 \n\t"
-        "or           $f26,      $f26,      $f10                \n\t"
-        "or           $f26,      $f26,      $f14                \n\t"
+        "por          $f26,      $f2,       $f6                 \n\t"
+        "por          $f26,      $f26,      $f10                \n\t"
+        "por          $f26,      $f26,      $f14                \n\t"
         "dmfc1        $10,       $f26                           \n\t"
         "bnez         $10,       1f                             \n\t"
         /* case1: In this case, row[1,3,5,7] are all zero */
@@ -338,9 +338,9 @@ void ff_simple_idct_8_mmi(int16_t *block)
         "punpcklwd    $f9,       $f27,      $f29                \n\t"
         "punpckhwd    $f13,      $f27,      $f29                \n\t"
 
-        "or           $f26,      $f3,       $f7                 \n\t"
-        "or           $f26,      $f26,      $f11                \n\t"
-        "or           $f26,      $f26,      $f15                \n\t"
+        "por          $f26,      $f3,       $f7                 \n\t"
+        "por          $f26,      $f26,      $f11                \n\t"
+        "por          $f26,      $f26,      $f15                \n\t"
         "dmfc1        $10,       $f26                           \n\t"
         "bnez         $10,       1f                             \n\t"
         /* case1: In this case, row[1,3,5,7] are all zero */
diff --git a/libavcodec/mips/vc1dsp_mmi.c b/libavcodec/mips/vc1dsp_mmi.c
index 348ecd2..a8ab3f6 100644
--- a/libavcodec/mips/vc1dsp_mmi.c
+++ b/libavcodec/mips/vc1dsp_mmi.c
@@ -134,7 +134,7 @@ void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo
     dc = (3 * dc + 16) >> 5;
 
     __asm__ volatile(
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[dc],      %[dc],          %[ftmp0]                \n\t"
         "li         %[count],   0x02                                    \n\t"
 
@@ -425,7 +425,7 @@ void ff_vc1_inv_trans_8x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo
     dc = (17 * dc + 64) >> 7;
 
     __asm__ volatile(
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[dc],      %[dc],          %[ftmp0]                \n\t"
 
         MMI_LDC1(%[ftmp1], %[dest0], 0x00)
@@ -705,7 +705,7 @@ void ff_vc1_inv_trans_8x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
         MMI_LWC1(%[ftmp3], %[tmp0], 0x00)
         PTR_ADDU    "%[tmp0],   %[tmp0],    %[linesize]                 \n\t"
         MMI_LWC1(%[ftmp4], %[tmp0], 0x00)
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp1],   %[ftmp1],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp3],   %[ftmp3],   %[ftmp0]                    \n\t"
@@ -829,7 +829,7 @@ void ff_vc1_inv_trans_8x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
         MMI_LWC1(%[ftmp3], %[tmp0], 0x04)
         PTR_ADDU    "%[tmp0],   %[tmp0],    %[linesize]                 \n\t"
         MMI_LWC1(%[ftmp4], %[tmp0], 0x04)
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp1],   %[ftmp1],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp3],   %[ftmp3],   %[ftmp0]                    \n\t"
@@ -877,7 +877,7 @@ void ff_vc1_inv_trans_4x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo
     dc = (12 * dc + 64) >> 7;
 
     __asm__ volatile(
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[dc],      %[dc],          %[ftmp0]                \n\t"
 
         MMI_LWC1(%[ftmp1], %[dest0], 0x00)
@@ -1058,7 +1058,7 @@ void ff_vc1_inv_trans_4x8_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
         MMI_LWC1(%[ftmp7], %[tmp0], 0x00)
         PTR_ADDU  "%[tmp0],   %[tmp0],    %[linesize]                 \n\t"
         MMI_LWC1(%[ftmp8], %[tmp0], 0x00)
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp1],   %[ftmp1],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp3],   %[ftmp3],   %[ftmp0]                    \n\t"
@@ -1133,7 +1133,7 @@ void ff_vc1_inv_trans_4x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo
     dc = (17 * dc + 64) >> 7;
 
     __asm__ volatile(
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
         "pshufh     %[dc],      %[dc],          %[ftmp0]                \n\t"
 
         MMI_LWC1(%[ftmp1], %[dest0], 0x00)
@@ -1339,7 +1339,7 @@ void ff_vc1_inv_trans_4x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
         MMI_LWC1(%[ftmp3], %[tmp0], 0x00)
         PTR_ADDU    "%[tmp0],   %[tmp0],    %[linesize]                 \n\t"
         MMI_LWC1(%[ftmp4], %[tmp0], 0x00)
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp1],   %[ftmp1],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp2],   %[ftmp2],   %[ftmp0]                    \n\t"
         "punpcklbh  %[ftmp3],   %[ftmp3],   %[ftmp0]                    \n\t"
@@ -1664,7 +1664,7 @@ static void vc1_put_ver_16b_shift2_mmi(int16_t *dst,
     DECLARE_VAR_ADDRT;
 
     __asm__ volatile(
-        "xor        $f0,    $f0,    $f0             \n\t"
+        "pxor       $f0,    $f0,    $f0             \n\t"
         "li         $8,     0x03                    \n\t"
         LOAD_ROUNDER_MMI("%[rnd]")
         "ldc1       $f12,   %[ff_pw_9]              \n\t"
@@ -1771,7 +1771,7 @@ static void OPNAME ## vc1_shift2_mmi(uint8_t *dst, const uint8_t *src,      \
     rnd = 8 - rnd;                                                          \
                                                                             \
     __asm__ volatile(                                                       \
-        "xor        $f0,    $f0,    $f0             \n\t"                   \
+        "pxor       $f0,    $f0,    $f0             \n\t"                   \
         "li         $10,    0x08                    \n\t"                   \
         LOAD_ROUNDER_MMI("%[rnd]")                                          \
         "ldc1       $f12,   %[ff_pw_9]              \n\t"                   \
@@ -1898,7 +1898,7 @@ vc1_put_ver_16b_ ## NAME ## _mmi(int16_t *dst, const uint8_t *src,          \
     src -= src_stride;                                                      \
                                                                             \
     __asm__ volatile(                                                       \
-        "xor        $f0,    $f0,    $f0             \n\t"                   \
+        "pxor       $f0,    $f0,    $f0             \n\t"                   \
         LOAD_ROUNDER_MMI("%[rnd]")                                          \
         "ldc1       $f10,   %[ff_pw_53]             \n\t"                   \
         "ldc1       $f12,   %[ff_pw_18]             \n\t"                   \
@@ -1973,7 +1973,7 @@ OPNAME ## vc1_hor_16b_ ## NAME ## _mmi(uint8_t *dst, mips_reg stride,       \
     rnd -= (-4+58+13-3)*256; /* Add -256 bias */                            \
                                                                             \
     __asm__ volatile(                                                       \
-        "xor        $f0,    $f0,    $f0             \n\t"                   \
+        "pxor       $f0,    $f0,    $f0             \n\t"                   \
         LOAD_ROUNDER_MMI("%[rnd]")                                          \
         "ldc1       $f10,   %[ff_pw_53]             \n\t"                   \
         "ldc1       $f12,   %[ff_pw_18]             \n\t"                   \
@@ -2023,7 +2023,7 @@ OPNAME ## vc1_## NAME ## _mmi(uint8_t *dst, const uint8_t *src,             \
     rnd = 32-rnd;                                                           \
                                                                             \
     __asm__ volatile (                                                      \
-        "xor        $f0,    $f0,    $f0             \n\t"                   \
+        "pxor       $f0,    $f0,    $f0             \n\t"                   \
         LOAD_ROUNDER_MMI("%[rnd]")                                          \
         "ldc1       $f10,   %[ff_pw_53]             \n\t"                   \
         "ldc1       $f12,   %[ff_pw_18]             \n\t"                   \
@@ -2259,7 +2259,7 @@ void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
 
     __asm__ volatile(
         "li         %[tmp0],    0x06                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "mtc1       %[tmp0],    %[ftmp9]                                \n\t"
         "pshufh     %[A],       %[A],       %[ftmp0]                    \n\t"
         "pshufh     %[B],       %[B],       %[ftmp0]                    \n\t"
@@ -2314,7 +2314,7 @@ void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
 
     __asm__ volatile(
         "li         %[tmp0],    0x06                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "mtc1       %[tmp0],    %[ftmp5]                                \n\t"
         "pshufh     %[A],       %[A],       %[ftmp0]                    \n\t"
         "pshufh     %[B],       %[B],       %[ftmp0]                    \n\t"
@@ -2367,7 +2367,7 @@ void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
 
     __asm__ volatile(
         "li         %[tmp0],    0x06                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "mtc1       %[tmp0],    %[ftmp9]                                \n\t"
         "pshufh     %[A],       %[A],       %[ftmp0]                    \n\t"
         "pshufh     %[B],       %[B],       %[ftmp0]                    \n\t"
@@ -2425,7 +2425,7 @@ void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
 
     __asm__ volatile(
         "li         %[tmp0],    0x06                                    \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
         "mtc1       %[tmp0],    %[ftmp5]                                \n\t"
         "pshufh     %[A],       %[A],       %[ftmp0]                    \n\t"
         "pshufh     %[B],       %[B],       %[ftmp0]                    \n\t"
diff --git a/libavcodec/mips/vp3dsp_idct_mmi.c b/libavcodec/mips/vp3dsp_idct_mmi.c
index c5c4cf3..0d4cba1 100644
--- a/libavcodec/mips/vp3dsp_idct_mmi.c
+++ b/libavcodec/mips/vp3dsp_idct_mmi.c
@@ -34,7 +34,7 @@ static void idct_row_mmi(int16_t *input)
     double ftmp[23];
     uint64_t tmp[2];
     __asm__ volatile (
-        "xor        %[ftmp10],      %[ftmp10],        %[ftmp10] \n\t"
+        "pxor       %[ftmp10],      %[ftmp10],        %[ftmp10] \n\t"
         LOAD_CONST(%[csth_1], 1)
         "li         %[tmp0],        0x02                        \n\t"
         "1:                                                     \n\t"
@@ -51,14 +51,14 @@ static void idct_row_mmi(int16_t *input)
         LOAD_CONST(%[ftmp9], 12785)
         "pmulhh     %[A],           %[ftmp9],         %[ftmp7]  \n\t"
         "pcmpgth    %[C],           %[ftmp10],        %[ftmp1]  \n\t"
-        "or         %[mask],        %[C],             %[csth_1] \n\t"
+        "por        %[mask],        %[C],             %[csth_1] \n\t"
         "pmullh     %[B],           %[ftmp1],         %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],         %[B]      \n\t"
         "pmullh     %[B],           %[B],             %[mask]   \n\t"
         "paddh      %[A],           %[A],             %[B]      \n\t"
         "paddh      %[A],           %[A],             %[C]      \n\t"
         "pcmpgth    %[D],           %[ftmp10],        %[ftmp7]  \n\t"
-        "or         %[mask],        %[D],             %[csth_1] \n\t"
+        "por        %[mask],        %[D],             %[csth_1] \n\t"
         "pmullh     %[ftmp7],       %[ftmp7],         %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],         %[ftmp7]  \n\t"
         "pmullh     %[B],           %[B],             %[mask]   \n\t"
@@ -69,12 +69,12 @@ static void idct_row_mmi(int16_t *input)
         LOAD_CONST(%[ftmp8], 54491)
         LOAD_CONST(%[ftmp9], 36410)
         "pcmpgth    %[Ad],          %[ftmp10],        %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ad],            %[csth_1] \n\t"
+        "por        %[mask],        %[Ad],            %[csth_1] \n\t"
         "pmullh     %[ftmp1],       %[ftmp5],         %[mask]   \n\t"
         "pmulhuh    %[C],           %[ftmp9],         %[ftmp1]  \n\t"
         "pmullh     %[C],           %[C],             %[mask]   \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],        %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],            %[csth_1] \n\t"
+        "por        %[mask],        %[Bd],            %[csth_1] \n\t"
         "pmullh     %[D],           %[ftmp3],         %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp8],         %[D]      \n\t"
         "pmullh     %[D],           %[D],             %[mask]   \n\t"
@@ -82,12 +82,12 @@ static void idct_row_mmi(int16_t *input)
         "paddh      %[C],           %[C],             %[Ad]     \n\t"
         "paddh      %[C],           %[C],             %[Bd]     \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],        %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],            %[csth_1] \n\t"
+        "por        %[mask],        %[Bd],            %[csth_1] \n\t"
         "pmullh     %[ftmp1],       %[ftmp3],         %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp9],         %[ftmp1]  \n\t"
         "pmullh     %[D],           %[D],             %[mask]   \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],        %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ed],            %[csth_1] \n\t"
+        "por        %[mask],        %[Ed],            %[csth_1] \n\t"
         "pmullh     %[Ad],          %[ftmp5],         %[mask]   \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],         %[Ad]     \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]   \n\t"
@@ -98,14 +98,14 @@ static void idct_row_mmi(int16_t *input)
         LOAD_CONST(%[ftmp8], 46341)
         "psubh      %[Ad],          %[A],             %[C]      \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],        %[Ad]     \n\t"
-        "or         %[mask],        %[Bd],            %[csth_1] \n\t"
+        "por        %[mask],        %[Bd],            %[csth_1] \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]   \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],         %[Ad]     \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]   \n\t"
         "paddh      %[Ad],          %[Ad],            %[Bd]     \n\t"
         "psubh      %[Bd],          %[B],             %[D]      \n\t"
         "pcmpgth    %[Cd],          %[ftmp10],        %[Bd]     \n\t"
-        "or         %[mask],        %[Cd],            %[csth_1] \n\t"
+        "por        %[mask],        %[Cd],            %[csth_1] \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]   \n\t"
         "pmulhuh    %[Bd],          %[ftmp8],         %[Bd]     \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]   \n\t"
@@ -114,14 +114,14 @@ static void idct_row_mmi(int16_t *input)
         "paddh      %[Dd],          %[B],             %[D]      \n\t"
         "paddh      %[A],           %[ftmp0],         %[ftmp4]  \n\t"
         "pcmpgth    %[B],           %[ftmp10],        %[A]      \n\t"
-        "or         %[mask],        %[B],             %[csth_1] \n\t"
+        "por        %[mask],        %[B],             %[csth_1] \n\t"
         "pmullh     %[A],           %[A],             %[mask]   \n\t"
         "pmulhuh    %[A],           %[ftmp8],         %[A]      \n\t"
         "pmullh     %[A],           %[A],             %[mask]   \n\t"
         "paddh      %[A],           %[A],             %[B]      \n\t"
         "psubh      %[B],           %[ftmp0],         %[ftmp4]  \n\t"
         "pcmpgth    %[C],           %[ftmp10],        %[B]      \n\t"
-        "or         %[mask],        %[C],             %[csth_1] \n\t"
+        "por        %[mask],        %[C],             %[csth_1] \n\t"
         "pmullh     %[B],           %[B],             %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],         %[B]      \n\t"
         "pmullh     %[B],           %[B],             %[mask]   \n\t"
@@ -131,14 +131,14 @@ static void idct_row_mmi(int16_t *input)
         LOAD_CONST(%[ftmp9], 25080)
         "pmulhh     %[C],           %[ftmp9],         %[ftmp6]  \n\t"
         "pcmpgth    %[D],           %[ftmp10],        %[ftmp2]  \n\t"
-        "or         %[mask],        %[D],             %[csth_1] \n\t"
+        "por        %[mask],        %[D],             %[csth_1] \n\t"
         "pmullh     %[Ed],          %[ftmp2],         %[mask]   \n\t"
         "pmulhuh    %[Ed],          %[ftmp8],         %[Ed]     \n\t"
         "pmullh     %[Ed],          %[Ed],            %[mask]   \n\t"
         "paddh      %[C],           %[C],             %[Ed]     \n\t"
         "paddh      %[C],           %[C],             %[D]      \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],        %[ftmp6]  \n\t"
-        "or         %[mask],        %[Ed],            %[csth_1] \n\t"
+        "por        %[mask],        %[Ed],            %[csth_1] \n\t"
         "pmullh     %[ftmp6],       %[ftmp6],         %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp8],         %[ftmp6]  \n\t"
         "pmullh     %[D],           %[D],             %[mask]   \n\t"
@@ -193,7 +193,7 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
     for (int i = 0; i < 8; ++i)
         temp_value[i] = av_clip_uint8(128 + ((46341 * input[i << 3] + (8 << 16)) >> 20));
     __asm__ volatile (
-        "xor        %[ftmp10],      %[ftmp10],          %[ftmp10] \n\t"
+        "pxor       %[ftmp10],      %[ftmp10],          %[ftmp10] \n\t"
         "li         %[tmp0],        0x02                          \n\t"
         "1:                                                       \n\t"
         "ldc1       %[ftmp0],       0x00(%[input])                \n\t"
@@ -213,14 +213,14 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[Gd], 1)
         "pmulhh     %[A],           %[ftmp9],           %[ftmp7]  \n\t"
         "pcmpgth    %[C],           %[ftmp10],          %[ftmp1]  \n\t"
-        "or         %[mask],        %[C],               %[Gd]     \n\t"
+        "por        %[mask],        %[C],               %[Gd]     \n\t"
         "pmullh     %[B],           %[ftmp1],           %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],           %[B]      \n\t"
         "pmullh     %[B],           %[B],               %[mask]   \n\t"
         "paddh      %[A],           %[A],               %[B]      \n\t"
         "paddh      %[A],           %[A],               %[C]      \n\t"
         "pcmpgth    %[D],           %[ftmp10],          %[ftmp7]  \n\t"
-        "or         %[mask],        %[D],               %[Gd]     \n\t"
+        "por        %[mask],        %[D],               %[Gd]     \n\t"
         "pmullh     %[Ad],          %[ftmp7],           %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],           %[Ad]     \n\t"
         "pmullh     %[B],           %[B],               %[mask]   \n\t"
@@ -231,12 +231,12 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp8], 54491)
         LOAD_CONST(%[ftmp9], 36410)
         "pcmpgth    %[Ad],          %[ftmp10],          %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ad],              %[Gd]     \n\t"
+        "por        %[mask],        %[Ad],              %[Gd]     \n\t"
         "pmullh     %[Cd],          %[ftmp5],           %[mask]   \n\t"
         "pmulhuh    %[C],           %[ftmp9],           %[Cd]     \n\t"
         "pmullh     %[C],           %[C],               %[mask]   \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],          %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],              %[Gd]     \n\t"
+        "por        %[mask],        %[Bd],              %[Gd]     \n\t"
         "pmullh     %[D],           %[ftmp3],           %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp8],           %[D]      \n\t"
         "pmullh     %[D],           %[D],               %[mask]   \n\t"
@@ -244,12 +244,12 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         "paddh      %[C],           %[C],               %[Ad]     \n\t"
         "paddh      %[C],           %[C],               %[Bd]     \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],          %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],              %[Gd]     \n\t"
+        "por        %[mask],        %[Bd],              %[Gd]     \n\t"
         "pmullh     %[Cd],          %[ftmp3],           %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp9],           %[Cd]     \n\t"
         "pmullh     %[D],           %[D],               %[mask]   \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],          %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ed],              %[Gd]     \n\t"
+        "por        %[mask],        %[Ed],              %[Gd]     \n\t"
         "pmullh     %[Ad],          %[ftmp5],           %[mask]   \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],           %[Ad]     \n\t"
         "pmullh     %[Ad],          %[Ad],              %[mask]   \n\t"
@@ -260,14 +260,14 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp8], 46341)
         "psubh      %[Ad],          %[A],             %[C]        \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],        %[Ad]       \n\t"
-        "or         %[mask],        %[Bd],            %[Gd]       \n\t"
+        "por        %[mask],        %[Bd],            %[Gd]       \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]     \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],         %[Ad]       \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]     \n\t"
         "paddh      %[Ad],          %[Ad],            %[Bd]       \n\t"
         "psubh      %[Bd],          %[B],             %[D]        \n\t"
         "pcmpgth    %[Cd],          %[ftmp10],        %[Bd]       \n\t"
-        "or         %[mask],        %[Cd],            %[Gd]       \n\t"
+        "por        %[mask],        %[Cd],            %[Gd]       \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]     \n\t"
         "pmulhuh    %[Bd],          %[ftmp8],         %[Bd]       \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]     \n\t"
@@ -278,7 +278,7 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[Ed], 2056)
         "paddh      %[A],           %[ftmp0],         %[ftmp4]    \n\t"
         "pcmpgth    %[B],           %[ftmp10],        %[A]        \n\t"
-        "or         %[mask],        %[B],             %[Gd]       \n\t"
+        "por        %[mask],        %[B],             %[Gd]       \n\t"
         "pmullh     %[A],           %[A],             %[mask]     \n\t"
         "pmulhuh    %[A],           %[ftmp8],         %[A]        \n\t"
         "pmullh     %[A],           %[A],             %[mask]     \n\t"
@@ -286,7 +286,7 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         "paddh      %[A],           %[A],             %[Ed]       \n\t"
         "psubh      %[B],           %[ftmp0],         %[ftmp4]    \n\t"
         "pcmpgth    %[C],           %[ftmp10],        %[B]        \n\t"
-        "or         %[mask],        %[C],             %[Gd]       \n\t"
+        "por        %[mask],        %[C],             %[Gd]       \n\t"
         "pmullh     %[B],           %[B],             %[mask]     \n\t"
         "pmulhuh    %[B],           %[ftmp8],         %[B]        \n\t"
         "pmullh     %[B],           %[B],             %[mask]     \n\t"
@@ -297,14 +297,14 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp9], 25080)
         "pmulhh     %[C],           %[ftmp9],         %[ftmp6]    \n\t"
         "pcmpgth    %[D],           %[ftmp10],        %[ftmp2]    \n\t"
-        "or         %[mask],        %[D],             %[Gd]       \n\t"
+        "por        %[mask],        %[D],             %[Gd]       \n\t"
         "pmullh     %[Ed],          %[ftmp2],         %[mask]     \n\t"
         "pmulhuh    %[Ed],          %[ftmp8],         %[Ed]       \n\t"
         "pmullh     %[Ed],          %[Ed],            %[mask]     \n\t"
         "paddh      %[C],           %[C],             %[Ed]       \n\t"
         "paddh      %[C],           %[C],             %[D]        \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],        %[ftmp6]    \n\t"
-        "or         %[mask],        %[Ed],            %[Gd]       \n\t"
+        "por        %[mask],        %[Ed],            %[Gd]       \n\t"
         "pmullh     %[D],           %[ftmp6],         %[mask]     \n\t"
         "pmulhuh    %[D],           %[ftmp8],         %[D]        \n\t"
         "pmullh     %[D],           %[D],             %[mask]     \n\t"
@@ -317,12 +317,12 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         "psubh      %[C],           %[B],             %[Ad]       \n\t"
         "psubh      %[B],           %[Bd],            %[D]        \n\t"
         "paddh      %[D],           %[Bd],            %[D]        \n\t"
-        "or         %[mask],        %[ftmp1],         %[ftmp2]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp3]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp4]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp5]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp6]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp7]    \n\t"
+        "por        %[mask],        %[ftmp1],         %[ftmp2]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp3]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp4]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp5]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp6]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp7]    \n\t"
         "pcmpeqh    %[mask],        %[mask],          %[ftmp10]   \n\t"
         "packushb   %[mask],        %[mask],          %[ftmp10]   \n\t"
         "li         %[tmp1],        0x04                          \n\t"
@@ -361,7 +361,7 @@ static void idct_column_true_mmi(uint8_t *dst, int stride, int16_t *input)
         "packushb   %[ftmp7],       %[ftmp7],         %[ftmp10]   \n\t"
 
         "lwc1       %[Ed],          0x00(%[temp_value])           \n\t"
-        "and        %[Ed],          %[Ed],            %[mask]     \n\t"
+        "pand       %[Ed],          %[Ed],            %[mask]     \n\t"
         "paddb      %[ftmp0],       %[ftmp0],         %[Ed]       \n\t"
         "paddb      %[ftmp1],       %[ftmp1],         %[Ed]       \n\t"
         "paddb      %[ftmp2],       %[ftmp2],         %[Ed]       \n\t"
@@ -412,7 +412,7 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
     for (int i = 0; i < 8; ++i)
         temp_value[i] = (46341 * input[i << 3] + (8 << 16)) >> 20;
     __asm__ volatile (
-        "xor        %[ftmp10],      %[ftmp10],          %[ftmp10] \n\t"
+        "pxor       %[ftmp10],      %[ftmp10],          %[ftmp10] \n\t"
         "li         %[tmp0],        0x02                          \n\t"
         "1:                                                       \n\t"
         "ldc1       %[ftmp0],       0x00(%[input])                \n\t"
@@ -432,14 +432,14 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[Gd], 1)
         "pmulhh     %[A],           %[ftmp9],           %[ftmp7]  \n\t"
         "pcmpgth    %[C],           %[ftmp10],          %[ftmp1]  \n\t"
-        "or         %[mask],        %[C],               %[Gd]     \n\t"
+        "por        %[mask],        %[C],               %[Gd]     \n\t"
         "pmullh     %[B],           %[ftmp1],           %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],           %[B]      \n\t"
         "pmullh     %[B],           %[B],               %[mask]   \n\t"
         "paddh      %[A],           %[A],               %[B]      \n\t"
         "paddh      %[A],           %[A],               %[C]      \n\t"
         "pcmpgth    %[D],           %[ftmp10],          %[ftmp7]  \n\t"
-        "or         %[mask],        %[D],               %[Gd]     \n\t"
+        "por        %[mask],        %[D],               %[Gd]     \n\t"
         "pmullh     %[Ad],          %[ftmp7],           %[mask]   \n\t"
         "pmulhuh    %[B],           %[ftmp8],           %[Ad]     \n\t"
         "pmullh     %[B],           %[B],               %[mask]   \n\t"
@@ -450,12 +450,12 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp8], 54491)
         LOAD_CONST(%[ftmp9], 36410)
         "pcmpgth    %[Ad],          %[ftmp10],          %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ad],              %[Gd]     \n\t"
+        "por        %[mask],        %[Ad],              %[Gd]     \n\t"
         "pmullh     %[Cd],          %[ftmp5],           %[mask]   \n\t"
         "pmulhuh    %[C],           %[ftmp9],           %[Cd]     \n\t"
         "pmullh     %[C],           %[C],               %[mask]   \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],          %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],              %[Gd]     \n\t"
+        "por        %[mask],        %[Bd],              %[Gd]     \n\t"
         "pmullh     %[D],           %[ftmp3],           %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp8],           %[D]      \n\t"
         "pmullh     %[D],           %[D],               %[mask]   \n\t"
@@ -463,12 +463,12 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         "paddh      %[C],           %[C],               %[Ad]     \n\t"
         "paddh      %[C],           %[C],               %[Bd]     \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],          %[ftmp3]  \n\t"
-        "or         %[mask],        %[Bd],              %[Gd]     \n\t"
+        "por        %[mask],        %[Bd],              %[Gd]     \n\t"
         "pmullh     %[Cd],          %[ftmp3],           %[mask]   \n\t"
         "pmulhuh    %[D],           %[ftmp9],           %[Cd]     \n\t"
         "pmullh     %[D],           %[D],               %[mask]   \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],          %[ftmp5]  \n\t"
-        "or         %[mask],        %[Ed],              %[Gd]     \n\t"
+        "por        %[mask],        %[Ed],              %[Gd]     \n\t"
         "pmullh     %[Ad],          %[ftmp5],           %[mask]   \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],           %[Ad]     \n\t"
         "pmullh     %[Ad],          %[Ad],              %[mask]   \n\t"
@@ -479,14 +479,14 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp8], 46341)
         "psubh      %[Ad],          %[A],             %[C]        \n\t"
         "pcmpgth    %[Bd],          %[ftmp10],        %[Ad]       \n\t"
-        "or         %[mask],        %[Bd],            %[Gd]       \n\t"
+        "por        %[mask],        %[Bd],            %[Gd]       \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]     \n\t"
         "pmulhuh    %[Ad],          %[ftmp8],         %[Ad]       \n\t"
         "pmullh     %[Ad],          %[Ad],            %[mask]     \n\t"
         "paddh      %[Ad],          %[Ad],            %[Bd]       \n\t"
         "psubh      %[Bd],          %[B],             %[D]        \n\t"
         "pcmpgth    %[Cd],          %[ftmp10],        %[Bd]       \n\t"
-        "or         %[mask],        %[Cd],            %[Gd]       \n\t"
+        "por        %[mask],        %[Cd],            %[Gd]       \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]     \n\t"
         "pmulhuh    %[Bd],          %[ftmp8],         %[Bd]       \n\t"
         "pmullh     %[Bd],          %[Bd],            %[mask]     \n\t"
@@ -497,7 +497,7 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[Ed], 8)
         "paddh      %[A],           %[ftmp0],         %[ftmp4]    \n\t"
         "pcmpgth    %[B],           %[ftmp10],        %[A]        \n\t"
-        "or         %[mask],        %[B],             %[Gd]       \n\t"
+        "por        %[mask],        %[B],             %[Gd]       \n\t"
         "pmullh     %[A],           %[A],             %[mask]     \n\t"
         "pmulhuh    %[A],           %[ftmp8],         %[A]        \n\t"
         "pmullh     %[A],           %[A],             %[mask]     \n\t"
@@ -505,7 +505,7 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         "paddh      %[A],           %[A],             %[Ed]       \n\t"
         "psubh      %[B],           %[ftmp0],         %[ftmp4]    \n\t"
         "pcmpgth    %[C],           %[ftmp10],        %[B]        \n\t"
-        "or         %[mask],        %[C],             %[Gd]       \n\t"
+        "por        %[mask],        %[C],             %[Gd]       \n\t"
         "pmullh     %[B],           %[B],             %[mask]     \n\t"
         "pmulhuh    %[B],           %[ftmp8],         %[B]        \n\t"
         "pmullh     %[B],           %[B],             %[mask]     \n\t"
@@ -516,14 +516,14 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         LOAD_CONST(%[ftmp9], 25080)
         "pmulhh     %[C],           %[ftmp9],         %[ftmp6]    \n\t"
         "pcmpgth    %[D],           %[ftmp10],        %[ftmp2]    \n\t"
-        "or         %[mask],        %[D],             %[Gd]       \n\t"
+        "por        %[mask],        %[D],             %[Gd]       \n\t"
         "pmullh     %[Ed],          %[ftmp2],         %[mask]     \n\t"
         "pmulhuh    %[Ed],          %[ftmp8],         %[Ed]       \n\t"
         "pmullh     %[Ed],          %[Ed],            %[mask]     \n\t"
         "paddh      %[C],           %[C],             %[Ed]       \n\t"
         "paddh      %[C],           %[C],             %[D]        \n\t"
         "pcmpgth    %[Ed],          %[ftmp10],        %[ftmp6]    \n\t"
-        "or         %[mask],        %[Ed],            %[Gd]       \n\t"
+        "por        %[mask],        %[Ed],            %[Gd]       \n\t"
         "pmullh     %[D],           %[ftmp6],         %[mask]     \n\t"
         "pmulhuh    %[D],           %[ftmp8],         %[D]        \n\t"
         "pmullh     %[D],           %[D],             %[mask]     \n\t"
@@ -536,12 +536,12 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         "psubh      %[C],           %[B],             %[Ad]       \n\t"
         "psubh      %[B],           %[Bd],            %[D]        \n\t"
         "paddh      %[D],           %[Bd],            %[D]        \n\t"
-        "or         %[mask],        %[ftmp1],         %[ftmp2]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp3]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp4]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp5]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp6]    \n\t"
-        "or         %[mask],        %[mask],          %[ftmp7]    \n\t"
+        "por        %[mask],        %[ftmp1],         %[ftmp2]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp3]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp4]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp5]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp6]    \n\t"
+        "por        %[mask],        %[mask],          %[ftmp7]    \n\t"
         "pcmpeqh    %[mask],        %[mask],          %[ftmp10]   \n\t"
         "li         %[tmp1],        0x04                          \n\t"
         "dmtc1      %[tmp1],        %[ftmp8]                      \n\t"
@@ -587,16 +587,16 @@ static void idct_column_false_mmi(uint8_t *dst, int stride, int16_t *input)
         "punpcklbh  %[Cd],          %[Cd],            %[ftmp10]   \n\t"
         "punpcklbh  %[Dd],          %[Dd],            %[ftmp10]   \n\t"
         "ldc1       %[Ed],          0x00(%[temp_value])           \n\t"
-        "and        %[Ed],          %[Ed],            %[mask]     \n\t"
-        "nor        %[mask],        %[mask],          %[mask]     \n\t"
-        "and        %[ftmp0],       %[ftmp0],         %[mask]     \n\t"
-        "and        %[ftmp1],       %[ftmp1],         %[mask]     \n\t"
-        "and        %[ftmp2],       %[ftmp2],         %[mask]     \n\t"
-        "and        %[ftmp3],       %[ftmp3],         %[mask]     \n\t"
-        "and        %[ftmp4],       %[ftmp4],         %[mask]     \n\t"
-        "and        %[ftmp5],       %[ftmp5],         %[mask]     \n\t"
-        "and        %[ftmp6],       %[ftmp6],         %[mask]     \n\t"
-        "and        %[ftmp7],       %[ftmp7],         %[mask]     \n\t"
+        "pand       %[Ed],          %[Ed],            %[mask]     \n\t"
+        "pnor       %[mask],        %[mask],          %[mask]     \n\t"
+        "pand       %[ftmp0],       %[ftmp0],         %[mask]     \n\t"
+        "pand       %[ftmp1],       %[ftmp1],         %[mask]     \n\t"
+        "pand       %[ftmp2],       %[ftmp2],         %[mask]     \n\t"
+        "pand       %[ftmp3],       %[ftmp3],         %[mask]     \n\t"
+        "pand       %[ftmp4],       %[ftmp4],         %[mask]     \n\t"
+        "pand       %[ftmp5],       %[ftmp5],         %[mask]     \n\t"
+        "pand       %[ftmp6],       %[ftmp6],         %[mask]     \n\t"
+        "pand       %[ftmp7],       %[ftmp7],         %[mask]     \n\t"
         "paddh      %[ftmp0],       %[ftmp0],         %[A]        \n\t"
         "paddh      %[ftmp1],       %[ftmp1],         %[B]        \n\t"
         "paddh      %[ftmp2],       %[ftmp2],         %[C]        \n\t"
@@ -689,7 +689,7 @@ void ff_vp3_idct_dc_add_mmi(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
     double ftmp[7];
     uint64_t tmp;
     __asm__ volatile (
-        "xor        %[ftmp0],     %[ftmp0],           %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],     %[ftmp0],           %[ftmp0]      \n\t"
         "mtc1       %[dc],        %[ftmp5]                          \n\t"
         "pshufh     %[ftmp5],     %[ftmp5],           %[ftmp0]      \n\t"
         "li         %[tmp0],      0x08                              \n\t"
@@ -734,10 +734,10 @@ void ff_put_no_rnd_pixels_l2_mmi(uint8_t *dst, const uint8_t *src1,
             "gsldrc1     %[ftmp1],       0x00(%[src1])                   \n\t"
             "gsldlc1     %[ftmp2],       0x07(%[src2])                   \n\t"
             "gsldrc1     %[ftmp2],       0x00(%[src2])                   \n\t"
-            "xor         %[ftmp3],       %[ftmp1],             %[ftmp2]  \n\t"
-            "and         %[ftmp3],       %[ftmp3],             %[ftmp4]  \n\t"
+            "pxor        %[ftmp3],       %[ftmp1],             %[ftmp2]  \n\t"
+            "pand        %[ftmp3],       %[ftmp3],             %[ftmp4]  \n\t"
             "psrlw       %[ftmp3],       %[ftmp3],             %[ftmp5]  \n\t"
-            "and         %[ftmp6],       %[ftmp1],             %[ftmp2]  \n\t"
+            "pand        %[ftmp6],       %[ftmp1],             %[ftmp2]  \n\t"
             "paddw       %[ftmp3],       %[ftmp3],             %[ftmp6]  \n\t"
             "sdc1        %[ftmp3],       0x00(%[dst])                    \n\t"
             PTR_ADDU    "%[src1],        %[src1],              %[stride] \n\t"
diff --git a/libavcodec/mips/vp8dsp_mmi.c b/libavcodec/mips/vp8dsp_mmi.c
index ae0b555..b352906 100644
--- a/libavcodec/mips/vp8dsp_mmi.c
+++ b/libavcodec/mips/vp8dsp_mmi.c
@@ -38,10 +38,10 @@
         "pcmpeqb    %[db_1],    "#src1",        "#src2"             \n\t"   \
         "pmaxub     %[db_2],    "#src1",        "#src2"             \n\t"   \
         "pcmpeqb    %[db_2],    %[db_2],        "#src1"             \n\t"   \
-        "xor        "#dst",     %[db_2],        %[db_1]             \n\t"
+        "pxor       "#dst",     %[db_2],        %[db_1]             \n\t"
 
 #define MMI_BTOH(dst_l, dst_r, src)                                         \
-        "xor        %[db_1],    %[db_1],        %[db_1]             \n\t"   \
+        "pxor       %[db_1],    %[db_1],        %[db_1]             \n\t"   \
         "pcmpgtb    %[db_2],    %[db_1],        "#src"              \n\t"   \
         "punpcklbh  "#dst_r",   "#src",         %[db_2]             \n\t"   \
         "punpckhbh  "#dst_l",   "#src",         %[db_2]             \n\t"
@@ -84,17 +84,17 @@
         "punpcklwd  %[ftmp3],   %[ftmp3],       %[ftmp3]            \n\t"   \
         MMI_PCMPGTUB(%[mask], %[mask], %[ftmp3])                            \
         "pcmpeqw    %[ftmp3],   %[ftmp3],       %[ftmp3]            \n\t"   \
-        "xor        %[mask],    %[mask],        %[ftmp3]            \n\t"   \
+        "pxor       %[mask],    %[mask],        %[ftmp3]            \n\t"   \
         /* VP8_MBFILTER */                                                  \
         "li         %[tmp0],    0x80808080                          \n\t"   \
         "dmtc1      %[tmp0],    %[ftmp7]                            \n\t"   \
         "punpcklwd  %[ftmp7],   %[ftmp7],       %[ftmp7]            \n\t"   \
-        "xor        %[p2],      %[p2],          %[ftmp7]            \n\t"   \
-        "xor        %[p1],      %[p1],          %[ftmp7]            \n\t"   \
-        "xor        %[p0],      %[p0],          %[ftmp7]            \n\t"   \
-        "xor        %[q0],      %[q0],          %[ftmp7]            \n\t"   \
-        "xor        %[q1],      %[q1],          %[ftmp7]            \n\t"   \
-        "xor        %[q2],      %[q2],          %[ftmp7]            \n\t"   \
+        "pxor       %[p2],      %[p2],          %[ftmp7]            \n\t"   \
+        "pxor       %[p1],      %[p1],          %[ftmp7]            \n\t"   \
+        "pxor       %[p0],      %[p0],          %[ftmp7]            \n\t"   \
+        "pxor       %[q0],      %[q0],          %[ftmp7]            \n\t"   \
+        "pxor       %[q1],      %[q1],          %[ftmp7]            \n\t"   \
+        "pxor       %[q2],      %[q2],          %[ftmp7]            \n\t"   \
         "psubsb     %[ftmp4],   %[p1],          %[q1]               \n\t"   \
         "psubb      %[ftmp5],   %[q0],          %[p0]               \n\t"   \
         MMI_BTOH(%[ftmp1],  %[ftmp0],  %[ftmp5])                            \
@@ -109,8 +109,8 @@
         "paddh      %[ftmp1],   %[ftmp3],       %[ftmp1]            \n\t"   \
         /* Combine left and right part */                                   \
         "packsshb   %[ftmp1],   %[ftmp0],       %[ftmp1]            \n\t"   \
-        "and        %[ftmp1],   %[ftmp1],       %[mask]             \n\t"   \
-        "and        %[ftmp2],   %[ftmp1],       %[hev]              \n\t"   \
+        "pand       %[ftmp1],   %[ftmp1],       %[mask]             \n\t"   \
+        "pand       %[ftmp2],   %[ftmp1],       %[hev]              \n\t"   \
         "li         %[tmp0],    0x04040404                          \n\t"   \
         "dmtc1      %[tmp0],    %[ftmp0]                            \n\t"   \
         "punpcklwd  %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"   \
@@ -129,8 +129,8 @@
         "paddsb     %[p0],      %[p0],          %[ftmp4]            \n\t"   \
         /* filt_val &= ~hev */                                              \
         "pcmpeqw    %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"   \
-        "xor        %[hev],     %[hev],         %[ftmp0]            \n\t"   \
-        "and        %[ftmp1],   %[ftmp1],       %[hev]              \n\t"   \
+        "pxor       %[hev],     %[hev],         %[ftmp0]            \n\t"   \
+        "pand       %[ftmp1],   %[ftmp1],       %[hev]              \n\t"   \
         MMI_BTOH(%[ftmp5],  %[ftmp6],  %[ftmp1])                            \
         "li         %[tmp0],    0x07                                \n\t"   \
         "dmtc1      %[tmp0],    %[ftmp2]                            \n\t"   \
@@ -151,9 +151,9 @@
         /* Combine left and right part */                                   \
         "packsshb   %[ftmp4],   %[ftmp3],       %[ftmp4]            \n\t"   \
         "psubsb     %[q0],      %[q0],          %[ftmp4]            \n\t"   \
-        "xor        %[q0],      %[q0],          %[ftmp7]            \n\t"   \
+        "pxor       %[q0],      %[q0],          %[ftmp7]            \n\t"   \
         "paddsb     %[p0],      %[p0],          %[ftmp4]            \n\t"   \
-        "xor        %[p0],      %[p0],          %[ftmp7]            \n\t"   \
+        "pxor       %[p0],      %[p0],          %[ftmp7]            \n\t"   \
         "li         %[tmp0],    0x00120012                          \n\t"   \
         "dmtc1      %[tmp0],    %[ftmp1]                            \n\t"   \
         "punpcklwd  %[ftmp1],   %[ftmp1],       %[ftmp1]            \n\t"   \
@@ -168,9 +168,9 @@
         /* Combine left and right part */                                   \
         "packsshb   %[ftmp4],   %[ftmp3],       %[ftmp4]            \n\t"   \
         "psubsb     %[q1],      %[q1],          %[ftmp4]            \n\t"   \
-        "xor        %[q1],      %[q1],          %[ftmp7]            \n\t"   \
+        "pxor       %[q1],      %[q1],          %[ftmp7]            \n\t"   \
         "paddsb     %[p1],      %[p1],          %[ftmp4]            \n\t"   \
-        "xor        %[p1],      %[p1],          %[ftmp7]            \n\t"   \
+        "pxor       %[p1],      %[p1],          %[ftmp7]            \n\t"   \
         "li         %[tmp0],    0x03                                \n\t"   \
         "dmtc1      %[tmp0],    %[ftmp1]                            \n\t"   \
         /* Right part */                                                    \
@@ -186,9 +186,9 @@
         /* Combine left and right part */                                   \
         "packsshb   %[ftmp4],   %[ftmp3],       %[ftmp4]            \n\t"   \
         "psubsb     %[q2],      %[q2],          %[ftmp4]            \n\t"   \
-        "xor        %[q2],      %[q2],          %[ftmp7]            \n\t"   \
+        "pxor       %[q2],      %[q2],          %[ftmp7]            \n\t"   \
         "paddsb     %[p2],      %[p2],          %[ftmp4]            \n\t"   \
-        "xor        %[p2],      %[p2],          %[ftmp7]            \n\t"
+        "pxor       %[p2],      %[p2],          %[ftmp7]            \n\t"
 
 #define PUT_VP8_EPEL4_H6_MMI(src, dst)                                      \
         MMI_ULWC1(%[ftmp1], src, 0x00)                                      \
@@ -1021,7 +1021,7 @@ void ff_vp8_luma_dc_wht_mmi(int16_t block[4][4][16], int16_t dc[16])
     block[3][3][0] = (dc[12] - dc[15] + 3 - dc[13] + dc[14]) >> 3;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         MMI_SDC1(%[ftmp0], %[dc], 0x00)
         MMI_SDC1(%[ftmp0], %[dc], 0x08)
         MMI_SDC1(%[ftmp0], %[dc], 0x10)
@@ -1136,7 +1136,7 @@ void ff_vp8_idct_add_mmi(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
     DECLARE_VAR_ALL64;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         MMI_LDC1(%[ftmp1], %[block], 0x00)
         MMI_LDC1(%[ftmp2], %[block], 0x08)
         MMI_LDC1(%[ftmp3], %[block], 0x10)
@@ -1302,7 +1302,7 @@ void ff_vp8_idct_dc_add_mmi(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
     block[0] = 0;
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "mtc1       %[dc],      %[ftmp5]                            \n\t"
         MMI_LWC1(%[ftmp1], %[dst0], 0x00)
         MMI_LWC1(%[ftmp2], %[dst1], 0x00)
@@ -1618,7 +1618,7 @@ void ff_put_vp8_epel16_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[15] = cm[(filter[2] * src[15] - filter[1] * src[14] + filter[3] * src[16] - filter[4] * src[17] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -1685,7 +1685,7 @@ void ff_put_vp8_epel8_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[7] = cm[(filter[2] * src[7] - filter[1] * src[ 6] + filter[3] * src[8] - filter[4] * src[9] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -1742,7 +1742,7 @@ void ff_put_vp8_epel4_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[3] = cm[(filter[2] * src[3] - filter[1] * src[ 2] + filter[3] * src[4] - filter[4] * src[5] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -1811,7 +1811,7 @@ void ff_put_vp8_epel16_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[15] = cm[(filter[2]*src[15] - filter[1]*src[14] + filter[0]*src[13] + filter[3]*src[16] - filter[4]*src[17] + filter[5]*src[18] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -1879,7 +1879,7 @@ void ff_put_vp8_epel8_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[7] = cm[(filter[2]*src[7] - filter[1]*src[ 6] + filter[0]*src[ 5] + filter[3]*src[8] - filter[4]*src[9] + filter[5]*src[10] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -1937,7 +1937,7 @@ void ff_put_vp8_epel4_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[3] = cm[(filter[2]*src[3] - filter[1]*src[ 2] + filter[0]*src[ 1] + filter[3]*src[4] - filter[4]*src[5] + filter[5]*src[ 6] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2007,7 +2007,7 @@ void ff_put_vp8_epel16_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[15] = cm[(filter[2] * src[15] - filter[1] * src[15-srcstride] + filter[3] * src[15+srcstride] - filter[4] * src[15+2*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2076,7 +2076,7 @@ void ff_put_vp8_epel8_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[7] = cm[(filter[2] * src[7] - filter[1] * src[7-srcstride] + filter[3] * src[7+srcstride] - filter[4] * src[7+2*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2135,7 +2135,7 @@ void ff_put_vp8_epel4_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[3] = cm[(filter[2] * src[3] - filter[1] * src[3-srcstride] + filter[3] * src[3+srcstride] - filter[4] * src[3+2*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2205,7 +2205,7 @@ void ff_put_vp8_epel16_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[15] = cm[(filter[2]*src[15] - filter[1]*src[15-srcstride] + filter[0]*src[15-2*srcstride] + filter[3]*src[15+srcstride] - filter[4]*src[15+2*srcstride] + filter[5]*src[15+3*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2275,7 +2275,7 @@ void ff_put_vp8_epel8_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[7] = cm[(filter[2]*src[7] - filter[1]*src[7-srcstride] + filter[0]*src[7-2*srcstride] + filter[3]*src[7+srcstride] - filter[4]*src[7+2*srcstride] + filter[5]*src[7+3*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2335,7 +2335,7 @@ void ff_put_vp8_epel4_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src,
     dst[3] = cm[(filter[2]*src[3] - filter[1]*src[3-srcstride] + filter[0]*src[3-2*srcstride] + filter[3]*src[3+srcstride] - filter[4]*src[3+2*srcstride] + filter[5]*src[3+3*srcstride] + 64) >> 7];
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x07                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
 
@@ -2873,7 +2873,7 @@ void ff_put_vp8_bilinear16_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[15] = (a * src[15] + b * src[16] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[a],       %[a],           %[ftmp0]            \n\t"
@@ -2940,7 +2940,7 @@ void ff_put_vp8_bilinear16_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[7] = (c * src[7] + d * src[7 + sstride] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[c],       %[c],           %[ftmp0]            \n\t"
@@ -3041,7 +3041,7 @@ void ff_put_vp8_bilinear8_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[7] = (a * src[7] + b * src[8] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[a],       %[a],           %[ftmp0]            \n\t"
@@ -3102,7 +3102,7 @@ void ff_put_vp8_bilinear8_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[7] = (c * src[7] + d * src[7 + sstride] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[c],       %[c],           %[ftmp0]            \n\t"
@@ -3194,7 +3194,7 @@ void ff_put_vp8_bilinear4_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[3] = (a * src[3] + b * src[4] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[a],       %[a],           %[ftmp0]            \n\t"
@@ -3252,7 +3252,7 @@ void ff_put_vp8_bilinear4_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src,
     dst[3] = (c * src[3] + d * src[3 + sstride] + 4) >> 3;
     */
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t"
         "li         %[tmp0],    0x03                                \n\t"
         "mtc1       %[tmp0],    %[ftmp4]                            \n\t"
         "pshufh     %[c],       %[c],           %[ftmp0]            \n\t"
diff --git a/libavcodec/mips/vp9_mc_mmi.c b/libavcodec/mips/vp9_mc_mmi.c
index e7a8387..fa65ff5 100644
--- a/libavcodec/mips/vp9_mc_mmi.c
+++ b/libavcodec/mips/vp9_mc_mmi.c
@@ -82,7 +82,7 @@ static void convolve_horiz_mmi(const uint8_t *src, int32_t src_stride,
     dst_stride -= w;
     __asm__ volatile (
         "move       %[tmp1],    %[width]                   \n\t"
-        "xor        %[ftmp0],   %[ftmp0],    %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],    %[ftmp0]      \n\t"
         "gsldlc1    %[filter1], 0x03(%[filter])            \n\t"
         "gsldrc1    %[filter1], 0x00(%[filter])            \n\t"
         "gsldlc1    %[filter2], 0x0b(%[filter])            \n\t"
@@ -157,7 +157,7 @@ static void convolve_vert_mmi(const uint8_t *src, int32_t src_stride,
     dst_stride -= w;
 
     __asm__ volatile (
-        "xor        %[ftmp0],    %[ftmp0],   %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],    %[ftmp0],   %[ftmp0]      \n\t"
         "gsldlc1    %[ftmp4],    0x03(%[filter])           \n\t"
         "gsldrc1    %[ftmp4],    0x00(%[filter])           \n\t"
         "gsldlc1    %[ftmp5],    0x0b(%[filter])           \n\t"
@@ -253,7 +253,7 @@ static void convolve_avg_horiz_mmi(const uint8_t *src, int32_t src_stride,
 
     __asm__ volatile (
         "move       %[tmp1],    %[width]                   \n\t"
-        "xor        %[ftmp0],   %[ftmp0],    %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],    %[ftmp0]      \n\t"
         "gsldlc1    %[filter1], 0x03(%[filter])            \n\t"
         "gsldrc1    %[filter1], 0x00(%[filter])            \n\t"
         "gsldlc1    %[filter2], 0x0b(%[filter])            \n\t"
@@ -339,7 +339,7 @@ static void convolve_avg_vert_mmi(const uint8_t *src, int32_t src_stride,
     dst_stride -= w;
 
     __asm__ volatile (
-        "xor        %[ftmp0],    %[ftmp0],   %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],    %[ftmp0],   %[ftmp0]      \n\t"
         "gsldlc1    %[ftmp4],    0x03(%[filter])           \n\t"
         "gsldrc1    %[ftmp4],    0x00(%[filter])           \n\t"
         "gsldlc1    %[ftmp5],    0x0b(%[filter])           \n\t"
@@ -444,7 +444,7 @@ static void convolve_avg_mmi(const uint8_t *src, int32_t src_stride,
 
     __asm__ volatile (
         "move       %[tmp1],    %[width]                  \n\t"
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]      \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]      \n\t"
         "li         %[tmp0],    0x10001                   \n\t"
         "dmtc1      %[tmp0],    %[ftmp3]                  \n\t"
         "punpcklhw  %[ftmp3],   %[ftmp3],   %[ftmp3]      \n\t"
diff --git a/libavcodec/mips/wmv2dsp_mmi.c b/libavcodec/mips/wmv2dsp_mmi.c
index 82e16f9..1a6781a 100644
--- a/libavcodec/mips/wmv2dsp_mmi.c
+++ b/libavcodec/mips/wmv2dsp_mmi.c
@@ -106,7 +106,7 @@ void ff_wmv2_idct_add_mmi(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
         wmv2_idct_col_mmi(block + i);
 
     __asm__ volatile (
-        "xor        %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
+        "pxor       %[ftmp0],   %[ftmp0],   %[ftmp0]                    \n\t"
 
         // low 4 loop
         MMI_LDC1(%[ftmp1], %[block], 0x00)
-- 
2.1.0



More information about the ffmpeg-devel mailing list