/*
 *  Copyright 2011 The LibYuv Project Authors. All rights reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS. All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#include "libyuv/row.h"

#include "libyuv/basic_types.h"

#ifdef __cplusplus
namespace libyuv {
extern "C" {
#endif

#if !defined(LIBYUV_DISABLE_MIPS) && \
    defined(__mips_dsp) && (__mips_dsp_rev >= 2) && \
    (_MIPS_SIM == _MIPS_SIM_ABI32)

void TransposeWx8_MIPS_DSPR2(const uint8* src, int src_stride,
                             uint8* dst, int dst_stride,
                             int width) {
   __asm__ __volatile__ (
      ".set push                                         \n"
      ".set noreorder                                    \n"
      "sll              $t2, %[src_stride], 0x1          \n" // src_stride x 2
      "sll              $t4, %[src_stride], 0x2          \n" // src_stride x 4
      "sll              $t9, %[src_stride], 0x3          \n" // src_stride x 8
      "addu             $t3, $t2, %[src_stride]          \n"
      "addu             $t5, $t4, %[src_stride]          \n"
      "addu             $t6, $t2, $t4                    \n"
      "andi             $t0, %[dst], 0x3                 \n"
      "andi             $t1, %[dst_stride], 0x3          \n"
      "or               $t0, $t0, $t1                    \n"
      "bnez             $t0, 11f                         \n"
      " subu            $t7, $t9, %[src_stride]          \n"
//dst + dst_stride word aligned
    "1:                                                  \n"
      "lbu              $t0, 0(%[src])                   \n"
      "lbux             $t1, %[src_stride](%[src])       \n"
      "lbux             $t8, $t2(%[src])                 \n"
      "lbux             $t9, $t3(%[src])                 \n"
      "sll              $t1, $t1, 16                     \n"
      "sll              $t9, $t9, 16                     \n"
      "or               $t0, $t0, $t1                    \n"
      "or               $t8, $t8, $t9                    \n"
      "precr.qb.ph      $s0, $t8, $t0                    \n"
      "lbux             $t0, $t4(%[src])                 \n"
      "lbux             $t1, $t5(%[src])                 \n"
      "lbux             $t8, $t6(%[src])                 \n"
      "lbux             $t9, $t7(%[src])                 \n"
      "sll              $t1, $t1, 16                     \n"
      "sll              $t9, $t9, 16                     \n"
      "or               $t0, $t0, $t1                    \n"
      "or               $t8, $t8, $t9                    \n"
      "precr.qb.ph      $s1, $t8, $t0                    \n"
      "sw               $s0, 0(%[dst])                   \n"
      "addiu            %[width], -1                     \n"
      "addiu            %[src], 1                        \n"
      "sw               $s1, 4(%[dst])                   \n"
      "bnez             %[width], 1b                     \n"
      " addu            %[dst], %[dst], %[dst_stride]    \n"
      "b                2f                               \n"
//dst + dst_stride unaligned
   "11:                                                  \n"
      "lbu              $t0, 0(%[src])                   \n"
      "lbux             $t1, %[src_stride](%[src])       \n"
      "lbux             $t8, $t2(%[src])                 \n"
      "lbux             $t9, $t3(%[src])                 \n"
      "sll              $t1, $t1, 16                     \n"
      "sll              $t9, $t9, 16                     \n"
      "or               $t0, $t0, $t1                    \n"
      "or               $t8, $t8, $t9                    \n"
      "precr.qb.ph      $s0, $t8, $t0                    \n"
      "lbux             $t0, $t4(%[src])                 \n"
      "lbux             $t1, $t5(%[src])                 \n"
      "lbux             $t8, $t6(%[src])                 \n"
      "lbux             $t9, $t7(%[src])                 \n"
      "sll              $t1, $t1, 16                     \n"
      "sll              $t9, $t9, 16                     \n"
      "or               $t0, $t0, $t1                    \n"
      "or               $t8, $t8, $t9                    \n"
      "precr.qb.ph      $s1, $t8, $t0                    \n"
      "swr              $s0, 0(%[dst])                   \n"
      "swl              $s0, 3(%[dst])                   \n"
      "addiu            %[width], -1                     \n"
      "addiu            %[src], 1                        \n"
      "swr              $s1, 4(%[dst])                   \n"
      "swl              $s1, 7(%[dst])                   \n"
      "bnez             %[width], 11b                    \n"
       "addu             %[dst], %[dst], %[dst_stride]   \n"
    "2:                                                  \n"
      ".set pop                                          \n"
      :[src] "+r" (src),
       [dst] "+r" (dst),
       [width] "+r" (width)
      :[src_stride] "r" (src_stride),
       [dst_stride] "r" (dst_stride)
      : "t0", "t1",  "t2", "t3", "t4", "t5",
        "t6", "t7", "t8", "t9",
        "s0", "s1"
  );
}

void TransposeWx8_FAST_MIPS_DSPR2(const uint8* src, int src_stride,
                                  uint8* dst, int dst_stride,
                                  int width) {
  __asm__ __volatile__ (
      ".set noat                                         \n"
      ".set push                                         \n"
      ".set noreorder                                    \n"
      "beqz             %[width], 2f                     \n"
      " sll             $t2, %[src_stride], 0x1          \n"  // src_stride x 2
      "sll              $t4, %[src_stride], 0x2          \n"  // src_stride x 4
      "sll              $t9, %[src_stride], 0x3          \n"  // src_stride x 8
      "addu             $t3, $t2, %[src_stride]          \n"
      "addu             $t5, $t4, %[src_stride]          \n"
      "addu             $t6, $t2, $t4                    \n"

      "srl              $AT, %[width], 0x2               \n"
      "andi             $t0, %[dst], 0x3                 \n"
      "andi             $t1, %[dst_stride], 0x3          \n"
      "or               $t0, $t0, $t1                    \n"
      "bnez             $t0, 11f                         \n"
      " subu            $t7, $t9, %[src_stride]          \n"
//dst + dst_stride word aligned
      "1:                                                \n"
      "lw               $t0, 0(%[src])                   \n"
      "lwx              $t1, %[src_stride](%[src])       \n"
      "lwx              $t8, $t2(%[src])                 \n"
      "lwx              $t9, $t3(%[src])                 \n"

// t0 = | 30 | 20 | 10 | 00 |
// t1 = | 31 | 21 | 11 | 01 |
// t8 = | 32 | 22 | 12 | 02 |
// t9 = | 33 | 23 | 13 | 03 |

      "precr.qb.ph     $s0, $t1, $t0                     \n"
      "precr.qb.ph     $s1, $t9, $t8                     \n"
      "precrq.qb.ph    $s2, $t1, $t0                     \n"
      "precrq.qb.ph    $s3, $t9, $t8                     \n"

  // s0 = | 21 | 01 | 20 | 00 |
  // s1 = | 23 | 03 | 22 | 02 |
  // s2 = | 31 | 11 | 30 | 10 |
  // s3 = | 33 | 13 | 32 | 12 |

      "precr.qb.ph     $s4, $s1, $s0                     \n"
      "precrq.qb.ph    $s5, $s1, $s0                     \n"
      "precr.qb.ph     $s6, $s3, $s2                     \n"
      "precrq.qb.ph    $s7, $s3, $s2                     \n"

  // s4 = | 03 | 02 | 01 | 00 |
  // s5 = | 23 | 22 | 21 | 20 |
  // s6 = | 13 | 12 | 11 | 10 |
  // s7 = | 33 | 32 | 31 | 30 |

      "lwx              $t0, $t4(%[src])                 \n"
      "lwx              $t1, $t5(%[src])                 \n"
      "lwx              $t8, $t6(%[src])                 \n"
      "lwx              $t9, $t7(%[src])                 \n"

// t0 = | 34 | 24 | 14 | 04 |
// t1 = | 35 | 25 | 15 | 05 |
// t8 = | 36 | 26 | 16 | 06 |
// t9 = | 37 | 27 | 17 | 07 |

      "precr.qb.ph     $s0, $t1, $t0                     \n"
      "precr.qb.ph     $s1, $t9, $t8                     \n"
      "precrq.qb.ph    $s2, $t1, $t0                     \n"
      "precrq.qb.ph    $s3, $t9, $t8                     \n"

  // s0 = | 25 | 05 | 24 | 04 |
  // s1 = | 27 | 07 | 26 | 06 |
  // s2 = | 35 | 15 | 34 | 14 |
  // s3 = | 37 | 17 | 36 | 16 |

      "precr.qb.ph     $t0, $s1, $s0                     \n"
      "precrq.qb.ph    $t1, $s1, $s0                     \n"
      "precr.qb.ph     $t8, $s3, $s2                     \n"
      "precrq.qb.ph    $t9, $s3, $s2                     \n"

  // t0 = | 07 | 06 | 05 | 04 |
  // t1 = | 27 | 26 | 25 | 24 |
  // t8 = | 17 | 16 | 15 | 14 |
  // t9 = | 37 | 36 | 35 | 34 |

      "addu            $s0, %[dst], %[dst_stride]        \n"
      "addu            $s1, $s0, %[dst_stride]           \n"
      "addu            $s2, $s1, %[dst_stride]           \n"

      "sw              $s4, 0(%[dst])                    \n"
      "sw              $t0, 4(%[dst])                    \n"
      "sw              $s6, 0($s0)                       \n"
      "sw              $t8, 4($s0)                       \n"
      "sw              $s5, 0($s1)                       \n"
      "sw              $t1, 4($s1)                       \n"
      "sw              $s7, 0($s2)                       \n"
      "sw              $t9, 4($s2)                       \n"

      "addiu            $AT, -1                          \n"
      "addiu            %[src], 4                        \n"

      "bnez             $AT, 1b                          \n"
      " addu            %[dst], $s2, %[dst_stride]       \n"
      "b                2f                               \n"
//dst + dst_stride unaligned
      "11:                                               \n"
      "lw               $t0, 0(%[src])                   \n"
      "lwx              $t1, %[src_stride](%[src])       \n"
      "lwx              $t8, $t2(%[src])                 \n"
      "lwx              $t9, $t3(%[src])                 \n"

// t0 = | 30 | 20 | 10 | 00 |
// t1 = | 31 | 21 | 11 | 01 |
// t8 = | 32 | 22 | 12 | 02 |
// t9 = | 33 | 23 | 13 | 03 |

      "precr.qb.ph     $s0, $t1, $t0                     \n"
      "precr.qb.ph     $s1, $t9, $t8                     \n"
      "precrq.qb.ph    $s2, $t1, $t0                     \n"
      "precrq.qb.ph    $s3, $t9, $t8                     \n"

  // s0 = | 21 | 01 | 20 | 00 |
  // s1 = | 23 | 03 | 22 | 02 |
  // s2 = | 31 | 11 | 30 | 10 |
  // s3 = | 33 | 13 | 32 | 12 |

      "precr.qb.ph     $s4, $s1, $s0                     \n"
      "precrq.qb.ph    $s5, $s1, $s0                     \n"
      "precr.qb.ph     $s6, $s3, $s2                     \n"
      "precrq.qb.ph    $s7, $s3, $s2                     \n"

  // s4 = | 03 | 02 | 01 | 00 |
  // s5 = | 23 | 22 | 21 | 20 |
  // s6 = | 13 | 12 | 11 | 10 |
  // s7 = | 33 | 32 | 31 | 30 |

      "lwx              $t0, $t4(%[src])                 \n"
      "lwx              $t1, $t5(%[src])                 \n"
      "lwx              $t8, $t6(%[src])                 \n"
      "lwx              $t9, $t7(%[src])                 \n"

// t0 = | 34 | 24 | 14 | 04 |
// t1 = | 35 | 25 | 15 | 05 |
// t8 = | 36 | 26 | 16 | 06 |
// t9 = | 37 | 27 | 17 | 07 |

      "precr.qb.ph     $s0, $t1, $t0                     \n"
      "precr.qb.ph     $s1, $t9, $t8                     \n"
      "precrq.qb.ph    $s2, $t1, $t0                     \n"
      "precrq.qb.ph    $s3, $t9, $t8                     \n"

  // s0 = | 25 | 05 | 24 | 04 |
  // s1 = | 27 | 07 | 26 | 06 |
  // s2 = | 35 | 15 | 34 | 14 |
  // s3 = | 37 | 17 | 36 | 16 |

      "precr.qb.ph     $t0, $s1, $s0                     \n"
      "precrq.qb.ph    $t1, $s1, $s0                     \n"
      "precr.qb.ph     $t8, $s3, $s2                     \n"
      "precrq.qb.ph    $t9, $s3, $s2                     \n"

  // t0 = | 07 | 06 | 05 | 04 |
  // t1 = | 27 | 26 | 25 | 24 |
  // t8 = | 17 | 16 | 15 | 14 |
  // t9 = | 37 | 36 | 35 | 34 |

      "addu            $s0, %[dst], %[dst_stride]        \n"
      "addu            $s1, $s0, %[dst_stride]           \n"
      "addu            $s2, $s1, %[dst_stride]           \n"

      "swr              $s4, 0(%[dst])                   \n"
      "swl              $s4, 3(%[dst])                   \n"
      "swr              $t0, 4(%[dst])                   \n"
      "swl              $t0, 7(%[dst])                   \n"
      "swr              $s6, 0($s0)                      \n"
      "swl              $s6, 3($s0)                      \n"
      "swr              $t8, 4($s0)                      \n"
      "swl              $t8, 7($s0)                      \n"
      "swr              $s5, 0($s1)                      \n"
      "swl              $s5, 3($s1)                      \n"
      "swr              $t1, 4($s1)                      \n"
      "swl              $t1, 7($s1)                      \n"
      "swr              $s7, 0($s2)                      \n"
      "swl              $s7, 3($s2)                      \n"
      "swr              $t9, 4($s2)                      \n"
      "swl              $t9, 7($s2)                      \n"

      "addiu            $AT, -1                          \n"
      "addiu            %[src], 4                        \n"

      "bnez             $AT, 11b                         \n"
      " addu            %[dst], $s2, %[dst_stride]       \n"
      "2:                                                \n"
      ".set pop                                          \n"
      ".set at                                           \n"
      :[src] "+r" (src),
       [dst] "+r" (dst),
       [width] "+r" (width)
      :[src_stride] "r" (src_stride),
       [dst_stride] "r" (dst_stride)
      : "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9",
        "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7"
  );
}

void TransposeUVWx8_MIPS_DSPR2(const uint8* src, int src_stride,
                               uint8* dst_a, int dst_stride_a,
                               uint8* dst_b, int dst_stride_b,
                               int width) {
  __asm__ __volatile__ (
      ".set push                                         \n"
      ".set noreorder                                    \n"
      "beqz            %[width], 2f                      \n"
      " sll            $t2, %[src_stride], 0x1           \n" // src_stride x 2
      "sll             $t4, %[src_stride], 0x2           \n" // src_stride x 4
      "sll             $t9, %[src_stride], 0x3           \n" // src_stride x 8
      "addu            $t3, $t2, %[src_stride]           \n"
      "addu            $t5, $t4, %[src_stride]           \n"
      "addu            $t6, $t2, $t4                     \n"
      "subu            $t7, $t9, %[src_stride]           \n"
      "srl             $t1, %[width], 1                  \n"

// check word aligment for dst_a, dst_b, dst_stride_a and dst_stride_b
      "andi            $t0, %[dst_a], 0x3                \n"
      "andi            $t8, %[dst_b], 0x3                \n"
      "or              $t0, $t0, $t8                     \n"
      "andi            $t8, %[dst_stride_a], 0x3         \n"
      "andi            $s5, %[dst_stride_b], 0x3         \n"
      "or              $t8, $t8, $s5                     \n"
      "or              $t0, $t0, $t8                     \n"
      "bnez            $t0, 11f                          \n"
      " nop                                              \n"
// dst + dst_stride word aligned (both, a & b dst addresses)
    "1:                                                  \n"
      "lw              $t0, 0(%[src])                    \n" // |B0|A0|b0|a0|
      "lwx             $t8, %[src_stride](%[src])        \n" // |B1|A1|b1|a1|
      "addu            $s5, %[dst_a], %[dst_stride_a]    \n"
      "lwx             $t9, $t2(%[src])                  \n" // |B2|A2|b2|a2|
      "lwx             $s0, $t3(%[src])                  \n" // |B3|A3|b3|a3|
      "addu            $s6, %[dst_b], %[dst_stride_b]    \n"

      "precrq.ph.w     $s1, $t8, $t0                     \n" // |B1|A1|B0|A0|
      "precrq.ph.w     $s2, $s0, $t9                     \n" // |B3|A3|B2|A2|
      "precr.qb.ph     $s3, $s2, $s1                     \n" // |A3|A2|A1|A0|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |B3|B2|B1|B0|

      "sll             $t0, $t0, 16                      \n"
      "packrl.ph       $s1, $t8, $t0                     \n" // |b1|a1|b0|a0|
      "sll             $t9, $t9, 16                      \n"
      "packrl.ph       $s2, $s0, $t9                     \n" // |b3|a3|b2|a2|

      "sw              $s3, 0($s5)                       \n"
      "sw              $s4, 0($s6)                       \n"

      "precr.qb.ph     $s3, $s2, $s1                     \n" // |a3|a2|a1|a0|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |b3|b2|b1|b0|

      "lwx             $t0, $t4(%[src])                  \n" // |B4|A4|b4|a4|
      "lwx             $t8, $t5(%[src])                  \n" // |B5|A5|b5|a5|
      "lwx             $t9, $t6(%[src])                  \n" // |B6|A6|b6|a6|
      "lwx             $s0, $t7(%[src])                  \n" // |B7|A7|b7|a7|
      "sw              $s3, 0(%[dst_a])                  \n"
      "sw              $s4, 0(%[dst_b])                  \n"

      "precrq.ph.w     $s1, $t8, $t0                     \n" // |B5|A5|B4|A4|
      "precrq.ph.w     $s2, $s0, $t9                     \n" // |B6|A6|B7|A7|
      "precr.qb.ph     $s3, $s2, $s1                     \n" // |A7|A6|A5|A4|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |B7|B6|B5|B4|

      "sll             $t0, $t0, 16                      \n"
      "packrl.ph       $s1, $t8, $t0                     \n" // |b5|a5|b4|a4|
      "sll             $t9, $t9, 16                      \n"
      "packrl.ph       $s2, $s0, $t9                     \n" // |b7|a7|b6|a6|
      "sw              $s3, 4($s5)                       \n"
      "sw              $s4, 4($s6)                       \n"

      "precr.qb.ph     $s3, $s2, $s1                     \n" // |a7|a6|a5|a4|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |b7|b6|b5|b4|

      "addiu           %[src], 4                         \n"
      "addiu           $t1, -1                           \n"
      "sll             $t0, %[dst_stride_a], 1           \n"
      "sll             $t8, %[dst_stride_b], 1           \n"
      "sw              $s3, 4(%[dst_a])                  \n"
      "sw              $s4, 4(%[dst_b])                  \n"
      "addu            %[dst_a], %[dst_a], $t0           \n"
      "bnez            $t1, 1b                           \n"
      " addu           %[dst_b], %[dst_b], $t8           \n"
      "b               2f                                \n"
      " nop                                              \n"

// dst_a or dst_b or dst_stride_a or dst_stride_b not word aligned
   "11:                                                  \n"
      "lw              $t0, 0(%[src])                    \n" // |B0|A0|b0|a0|
      "lwx             $t8, %[src_stride](%[src])        \n" // |B1|A1|b1|a1|
      "addu            $s5, %[dst_a], %[dst_stride_a]    \n"
      "lwx             $t9, $t2(%[src])                  \n" // |B2|A2|b2|a2|
      "lwx             $s0, $t3(%[src])                  \n" // |B3|A3|b3|a3|
      "addu            $s6, %[dst_b], %[dst_stride_b]    \n"

      "precrq.ph.w     $s1, $t8, $t0                     \n" // |B1|A1|B0|A0|
      "precrq.ph.w     $s2, $s0, $t9                     \n" // |B3|A3|B2|A2|
      "precr.qb.ph     $s3, $s2, $s1                     \n" // |A3|A2|A1|A0|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |B3|B2|B1|B0|

      "sll             $t0, $t0, 16                      \n"
      "packrl.ph       $s1, $t8, $t0                     \n" // |b1|a1|b0|a0|
      "sll             $t9, $t9, 16                      \n"
      "packrl.ph       $s2, $s0, $t9                     \n" // |b3|a3|b2|a2|

      "swr             $s3, 0($s5)                       \n"
      "swl             $s3, 3($s5)                       \n"
      "swr             $s4, 0($s6)                       \n"
      "swl             $s4, 3($s6)                       \n"

      "precr.qb.ph     $s3, $s2, $s1                     \n" // |a3|a2|a1|a0|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |b3|b2|b1|b0|

      "lwx             $t0, $t4(%[src])                  \n" // |B4|A4|b4|a4|
      "lwx             $t8, $t5(%[src])                  \n" // |B5|A5|b5|a5|
      "lwx             $t9, $t6(%[src])                  \n" // |B6|A6|b6|a6|
      "lwx             $s0, $t7(%[src])                  \n" // |B7|A7|b7|a7|
      "swr             $s3, 0(%[dst_a])                  \n"
      "swl             $s3, 3(%[dst_a])                  \n"
      "swr             $s4, 0(%[dst_b])                  \n"
      "swl             $s4, 3(%[dst_b])                  \n"

      "precrq.ph.w     $s1, $t8, $t0                     \n" // |B5|A5|B4|A4|
      "precrq.ph.w     $s2, $s0, $t9                     \n" // |B6|A6|B7|A7|
      "precr.qb.ph     $s3, $s2, $s1                     \n" // |A7|A6|A5|A4|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |B7|B6|B5|B4|

      "sll             $t0, $t0, 16                      \n"
      "packrl.ph       $s1, $t8, $t0                     \n" // |b5|a5|b4|a4|
      "sll             $t9, $t9, 16                      \n"
      "packrl.ph       $s2, $s0, $t9                     \n" // |b7|a7|b6|a6|

      "swr             $s3, 4($s5)                       \n"
      "swl             $s3, 7($s5)                       \n"
      "swr             $s4, 4($s6)                       \n"
      "swl             $s4, 7($s6)                       \n"

      "precr.qb.ph     $s3, $s2, $s1                     \n" // |a7|a6|a5|a4|
      "precrq.qb.ph    $s4, $s2, $s1                     \n" // |b7|b6|b5|b4|

      "addiu           %[src], 4                         \n"
      "addiu           $t1, -1                           \n"
      "sll             $t0, %[dst_stride_a], 1           \n"
      "sll             $t8, %[dst_stride_b], 1           \n"
      "swr             $s3, 4(%[dst_a])                  \n"
      "swl             $s3, 7(%[dst_a])                  \n"
      "swr             $s4, 4(%[dst_b])                  \n"
      "swl             $s4, 7(%[dst_b])                  \n"
      "addu            %[dst_a], %[dst_a], $t0           \n"
      "bnez            $t1, 11b                          \n"
      " addu           %[dst_b], %[dst_b], $t8           \n"

      "2:                                                \n"
      ".set pop                                          \n"
      : [src] "+r" (src),
        [dst_a] "+r" (dst_a),
        [dst_b] "+r" (dst_b),
        [width] "+r" (width),
        [src_stride] "+r" (src_stride)
      : [dst_stride_a] "r" (dst_stride_a),
        [dst_stride_b] "r" (dst_stride_b)
      : "t0", "t1",  "t2", "t3",  "t4", "t5",
        "t6", "t7", "t8", "t9",
        "s0", "s1", "s2", "s3",
        "s4", "s5", "s6"
  );
}

#endif  // defined(__mips_dsp) && (__mips_dsp_rev >= 2)

#ifdef __cplusplus
}  // extern "C"
}  // namespace libyuv
#endif
