/*
 * Copyright 2014 The Android Open Source Project
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */


#include "SkBitmapProcState.h"
#include "SkBitmapScaler.h"
#include "SkColorPriv.h"
#include "SkPaint.h"
#include "SkUtils.h"

static void SI8_D16_nofilter_DX_mips_dsp(const SkBitmapProcState& s,
                                         const uint32_t* SK_RESTRICT xy,
                                         int count, uint16_t* SK_RESTRICT colors) {
    SkASSERT(count > 0 && colors != NULL);
    SkASSERT(s.fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask));
    SkASSERT(kNone_SkFilterQuality == s.fFilterLevel);
    const uint16_t* SK_RESTRICT table = s.fBitmap->getColorTable()->read16BitCache();
    const uint8_t* SK_RESTRICT srcAddr = (const uint8_t*)s.fBitmap->getPixels();
    SkASSERT((unsigned)xy[0] < (unsigned)s.fBitmap->height());
    srcAddr = (const uint8_t*)((const char*)srcAddr + xy[0] * s.fBitmap->rowBytes());
    uint8_t src;

    if (1 == s.fBitmap->width()) {
        src = srcAddr[0];
        uint16_t dstValue = table[src];
        sk_memset16(colors, dstValue, count);
    } else {
        int count8;
        const uint16_t* SK_RESTRICT xx = (const uint16_t*)(xy + 1);

        __asm__ volatile (
            ".set    push                                \n\t"
            ".set    noreorder                           \n\t"
            ".set    noat                                \n\t"
            "sra     %[count8], %[count],      3         \n\t"
            "beqz    %[count8], 3f                       \n\t"
            " addiu  %[count8], %[count8],     -1        \n\t"
        "1:                                              \n\t"
            "beqz    %[count8], 2f                       \n\t"
            " addiu  %[count8], %[count8],     -1        \n\t"
            "pref    0,         16(%[xx])                \n\t"
            "lhu     $t0,       0(%[xx])                 \n\t"
            "lhu     $t1,       2(%[xx])                 \n\t"
            "lhu     $t2,       4(%[xx])                 \n\t"
            "lhu     $t3,       6(%[xx])                 \n\t"
            "lhu     $t4,       8(%[xx])                 \n\t"
            "lhu     $t5,       10(%[xx])                \n\t"
            "lhu     $t6,       12(%[xx])                \n\t"
            "lhu     $t7,       14(%[xx])                \n\t"
            "pref    0,         8(%[srcAddr])            \n\t"
            "lbux    $t0,       $t0(%[srcAddr])          \n\t"
            "lbux    $t1,       $t1(%[srcAddr])          \n\t"
            "lbux    $t2,       $t2(%[srcAddr])          \n\t"
            "lbux    $t3,       $t3(%[srcAddr])          \n\t"
            "lbux    $t4,       $t4(%[srcAddr])          \n\t"
            "lbux    $t5,       $t5(%[srcAddr])          \n\t"
            "lbux    $t6,       $t6(%[srcAddr])          \n\t"
            "lbux    $t7,       $t7(%[srcAddr])          \n\t"
            "addu    $t0,       $t0,           $t0       \n\t"
            "addu    $t1,       $t1,           $t1       \n\t"
            "addu    $t2,       $t2,           $t2       \n\t"
            "addu    $t3,       $t3,           $t3       \n\t"
            "addu    $t4,       $t4,           $t4       \n\t"
            "addu    $t5,       $t5,           $t5       \n\t"
            "addu    $t6,       $t6,           $t6       \n\t"
            "addu    $t7,       $t7,           $t7       \n\t"
            "pref    0,         16(%[table])             \n\t"
            "lhx     $t0,       $t0(%[table])            \n\t"
            "lhx     $t1,       $t1(%[table])            \n\t"
            "lhx     $t2,       $t2(%[table])            \n\t"
            "lhx     $t3,       $t3(%[table])            \n\t"
            "lhx     $t4,       $t4(%[table])            \n\t"
            "lhx     $t5,       $t5(%[table])            \n\t"
            "lhx     $t6,       $t6(%[table])            \n\t"
            "lhx     $t7,       $t7(%[table])            \n\t"
            "sh      $t0,       0(%[colors])             \n\t"
            "sh      $t1,       2(%[colors])             \n\t"
            "sh      $t2,       4(%[colors])             \n\t"
            "sh      $t3,       6(%[colors])             \n\t"
            "sh      $t4,       8(%[colors])             \n\t"
            "sh      $t5,       10(%[colors])            \n\t"
            "sh      $t6,       12(%[colors])            \n\t"
            "sh      $t7,       14(%[colors])            \n\t"
            "addiu   %[xx],     %[xx],         16        \n\t"
            "bgtz    %[count8], 1b                       \n\t"
            " addiu  %[colors], %[colors],     16        \n\t"
        "2:                                              \n\t"
            "lhu     $t0,       0(%[xx])                 \n\t"
            "lhu     $t1,       2(%[xx])                 \n\t"
            "lhu     $t2,       4(%[xx])                 \n\t"
            "lhu     $t3,       6(%[xx])                 \n\t"
            "lhu     $t4,       8(%[xx])                 \n\t"
            "lhu     $t5,       10(%[xx])                \n\t"
            "lhu     $t6,       12(%[xx])                \n\t"
            "lhu     $t7,       14(%[xx])                \n\t"
            "lbux    $t0,       $t0(%[srcAddr])          \n\t"
            "lbux    $t1,       $t1(%[srcAddr])          \n\t"
            "lbux    $t2,       $t2(%[srcAddr])          \n\t"
            "lbux    $t3,       $t3(%[srcAddr])          \n\t"
            "lbux    $t4,       $t4(%[srcAddr])          \n\t"
            "lbux    $t5,       $t5(%[srcAddr])          \n\t"
            "lbux    $t6,       $t6(%[srcAddr])          \n\t"
            "lbux    $t7,       $t7(%[srcAddr])          \n\t"
            "addu    $t0,       $t0,           $t0       \n\t"
            "addu    $t1,       $t1,           $t1       \n\t"
            "addu    $t2,       $t2,           $t2       \n\t"
            "addu    $t3,       $t3,           $t3       \n\t"
            "addu    $t4,       $t4,           $t4       \n\t"
            "addu    $t5,       $t5,           $t5       \n\t"
            "addu    $t6,       $t6,           $t6       \n\t"
            "addu    $t7,       $t7,           $t7       \n\t"
            "lhx     $t0,       $t0(%[table])            \n\t"
            "lhx     $t1,       $t1(%[table])            \n\t"
            "lhx     $t2,       $t2(%[table])            \n\t"
            "lhx     $t3,       $t3(%[table])            \n\t"
            "lhx     $t4,       $t4(%[table])            \n\t"
            "lhx     $t5,       $t5(%[table])            \n\t"
            "lhx     $t6,       $t6(%[table])            \n\t"
            "lhx     $t7,       $t7(%[table])            \n\t"
            "sh      $t0,       0(%[colors])             \n\t"
            "sh      $t1,       2(%[colors])             \n\t"
            "sh      $t2,       4(%[colors])             \n\t"
            "sh      $t3,       6(%[colors])             \n\t"
            "sh      $t4,       8(%[colors])             \n\t"
            "sh      $t5,       10(%[colors])            \n\t"
            "sh      $t6,       12(%[colors])            \n\t"
            "sh      $t7,       14(%[colors])            \n\t"
            "addiu   %[xx],     %[xx],         16        \n\t"
            "addiu   %[colors], %[colors],     16        \n\t"
        "3:                                              \n\t"
            ".set    pop                                 \n\t"
            : [xx]"+r"(xx), [count8]"=&r"(count8), [colors]"+r"(colors)
            : [table]"r"(table), [srcAddr]"r"(srcAddr), [count]"r"(count)
            : "memory","t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"
        );

        for (int i = (count & 7); i > 0; --i) {
            src = srcAddr[*xx++]; *colors++ = table[src];
        }
    }
}

static void SI8_opaque_D32_nofilter_DX_mips_dsp(const SkBitmapProcState& s,
                                                const uint32_t* SK_RESTRICT xy,
                                                int count, SkPMColor* SK_RESTRICT colors) {
    SkASSERT(count > 0 && colors != NULL);
    SkASSERT(s.fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask));
    SkASSERT(kNone_SkFilterQuality == s.fFilterLevel);
    const SkPMColor* SK_RESTRICT table = s.fBitmap->getColorTable()->readColors();
    const uint8_t* SK_RESTRICT srcAddr = (const uint8_t*)s.fBitmap->getPixels();
    srcAddr = (const uint8_t*)((const char*)srcAddr + xy[0] * s.fBitmap->rowBytes());

    if (1 == s.fBitmap->width()) {
        uint8_t src = srcAddr[0];
        SkPMColor dstValue = table[src];
        sk_memset32(colors, dstValue, count);
    } else {
        const uint16_t* xx = (const uint16_t*)(xy + 1);
        int s0, s1, s2, s3, s4, s5, s6, s7;
        __asm__ volatile (
            ".set    push                                \n\t"
            ".set    noreorder                           \n\t"
            ".set    noat                                \n\t"
            "srl     $t8,       %[count],    4           \n\t"
            "beqz    $t8,       3f                       \n\t"
            " nop                                        \n\t"
        "1:                                              \n\t"
            "addiu   $t8,       $t8,         -1          \n\t"
            "beqz    $t8,       2f                       \n\t"
            " addiu  %[count],  %[count],    -16         \n\t"
            "pref    0,         32(%[xx])                \n\t"
            "lhu     $t0,       0(%[xx])                 \n\t"
            "lhu     $t1,       2(%[xx])                 \n\t"
            "lhu     $t2,       4(%[xx])                 \n\t"
            "lhu     $t3,       6(%[xx])                 \n\t"
            "lhu     $t4,       8(%[xx])                 \n\t"
            "lhu     $t5,       10(%[xx])                \n\t"
            "lhu     $t6,       12(%[xx])                \n\t"
            "lhu     $t7,       14(%[xx])                \n\t"
            "lhu     %[s0],     16(%[xx])                \n\t"
            "lhu     %[s1],     18(%[xx])                \n\t"
            "lhu     %[s2],     20(%[xx])                \n\t"
            "lhu     %[s3],     22(%[xx])                \n\t"
            "lhu     %[s4],     24(%[xx])                \n\t"
            "lhu     %[s5],     26(%[xx])                \n\t"
            "lhu     %[s6],     28(%[xx])                \n\t"
            "lhu     %[s7],     30(%[xx])                \n\t"
            "lbux    $t0,       $t0(%[srcAddr])          \n\t"
            "lbux    $t1,       $t1(%[srcAddr])          \n\t"
            "lbux    $t2,       $t2(%[srcAddr])          \n\t"
            "lbux    $t3,       $t3(%[srcAddr])          \n\t"
            "lbux    $t4,       $t4(%[srcAddr])          \n\t"
            "lbux    $t5,       $t5(%[srcAddr])          \n\t"
            "lbux    $t6,       $t6(%[srcAddr])          \n\t"
            "lbux    $t7,       $t7(%[srcAddr])          \n\t"
            "lbux    %[s0],     %[s0](%[srcAddr])        \n\t"
            "lbux    %[s1],     %[s1](%[srcAddr])        \n\t"
            "lbux    %[s2],     %[s2](%[srcAddr])        \n\t"
            "lbux    %[s3],     %[s3](%[srcAddr])        \n\t"
            "lbux    %[s4],     %[s4](%[srcAddr])        \n\t"
            "lbux    %[s5],     %[s5](%[srcAddr])        \n\t"
            "lbux    %[s6],     %[s6](%[srcAddr])        \n\t"
            "lbux    %[s7],     %[s7](%[srcAddr])        \n\t"
            "sll     $t0,       $t0,         2           \n\t"
            "sll     $t1,       $t1,         2           \n\t"
            "sll     $t2,       $t2,         2           \n\t"
            "sll     $t3,       $t3,         2           \n\t"
            "sll     $t4,       $t4,         2           \n\t"
            "sll     $t5,       $t5,         2           \n\t"
            "sll     $t6,       $t6,         2           \n\t"
            "sll     $t7,       $t7,         2           \n\t"
            "sll     %[s0],     %[s0],       2           \n\t"
            "sll     %[s1],     %[s1],       2           \n\t"
            "sll     %[s2],     %[s2],       2           \n\t"
            "sll     %[s3],     %[s3],       2           \n\t"
            "sll     %[s4],     %[s4],       2           \n\t"
            "sll     %[s5],     %[s5],       2           \n\t"
            "sll     %[s6],     %[s6],       2           \n\t"
            "sll     %[s7],     %[s7],       2           \n\t"
            "pref    0,         64(%[table])             \n\t"
            "lwx     $t0,       $t0(%[table])            \n\t"
            "lwx     $t1,       $t1(%[table])            \n\t"
            "lwx     $t2,       $t2(%[table])            \n\t"
            "lwx     $t3,       $t3(%[table])            \n\t"
            "lwx     $t4,       $t4(%[table])            \n\t"
            "lwx     $t5,       $t5(%[table])            \n\t"
            "lwx     $t6,       $t6(%[table])            \n\t"
            "lwx     $t7,       $t7(%[table])            \n\t"
            "lwx     %[s0],     %[s0](%[table])          \n\t"
            "lwx     %[s1],     %[s1](%[table])          \n\t"
            "lwx     %[s2],     %[s2](%[table])          \n\t"
            "lwx     %[s3],     %[s3](%[table])          \n\t"
            "lwx     %[s4],     %[s4](%[table])          \n\t"
            "lwx     %[s5],     %[s5](%[table])          \n\t"
            "lwx     %[s6],     %[s6](%[table])          \n\t"
            "lwx     %[s7],     %[s7](%[table])          \n\t"
            "pref    30,        64(%[colors])            \n\t"
            "sw      $t0,       0(%[colors])             \n\t"
            "sw      $t1,       4(%[colors])             \n\t"
            "sw      $t2,       8(%[colors])             \n\t"
            "sw      $t3,       12(%[colors])            \n\t"
            "sw      $t4,       16(%[colors])            \n\t"
            "sw      $t5,       20(%[colors])            \n\t"
            "sw      $t6,       24(%[colors])            \n\t"
            "sw      $t7,       28(%[colors])            \n\t"
            "sw      %[s0],     32(%[colors])            \n\t"
            "sw      %[s1],     36(%[colors])            \n\t"
            "sw      %[s2],     40(%[colors])            \n\t"
            "sw      %[s3],     44(%[colors])            \n\t"
            "sw      %[s4],     48(%[colors])            \n\t"
            "sw      %[s5],     52(%[colors])            \n\t"
            "sw      %[s6],     56(%[colors])            \n\t"
            "sw      %[s7],     60(%[colors])            \n\t"
            "addiu   %[xx],     %[xx],       32          \n\t"
            "b       1b                                  \n\t"
            " addiu  %[colors], %[colors],   64          \n\t"
        "2:                                              \n\t"
            "lhu     $t0,       0(%[xx])                 \n\t"
            "lhu     $t1,       2(%[xx])                 \n\t"
            "lhu     $t2,       4(%[xx])                 \n\t"
            "lhu     $t3,       6(%[xx])                 \n\t"
            "lhu     $t4,       8(%[xx])                 \n\t"
            "lhu     $t5,       10(%[xx])                \n\t"
            "lhu     $t6,       12(%[xx])                \n\t"
            "lhu     $t7,       14(%[xx])                \n\t"
            "lhu     %[s0],     16(%[xx])                \n\t"
            "lhu     %[s1],     18(%[xx])                \n\t"
            "lhu     %[s2],     20(%[xx])                \n\t"
            "lhu     %[s3],     22(%[xx])                \n\t"
            "lhu     %[s4],     24(%[xx])                \n\t"
            "lhu     %[s5],     26(%[xx])                \n\t"
            "lhu     %[s6],     28(%[xx])                \n\t"
            "lhu     %[s7],     30(%[xx])                \n\t"
            "lbux    $t0,       $t0(%[srcAddr])          \n\t"
            "lbux    $t1,       $t1(%[srcAddr])          \n\t"
            "lbux    $t2,       $t2(%[srcAddr])          \n\t"
            "lbux    $t3,       $t3(%[srcAddr])          \n\t"
            "lbux    $t4,       $t4(%[srcAddr])          \n\t"
            "lbux    $t5,       $t5(%[srcAddr])          \n\t"
            "lbux    $t6,       $t6(%[srcAddr])          \n\t"
            "lbux    $t7,       $t7(%[srcAddr])          \n\t"
            "lbux    %[s0],     %[s0](%[srcAddr])        \n\t"
            "lbux    %[s1],     %[s1](%[srcAddr])        \n\t"
            "lbux    %[s2],     %[s2](%[srcAddr])        \n\t"
            "lbux    %[s3],     %[s3](%[srcAddr])        \n\t"
            "lbux    %[s4],     %[s4](%[srcAddr])        \n\t"
            "lbux    %[s5],     %[s5](%[srcAddr])        \n\t"
            "lbux    %[s6],     %[s6](%[srcAddr])        \n\t"
            "lbux    %[s7],     %[s7](%[srcAddr])        \n\t"
            "sll     $t0,       $t0,         2           \n\t"
            "sll     $t1,       $t1,         2           \n\t"
            "sll     $t2,       $t2,         2           \n\t"
            "sll     $t3,       $t3,         2           \n\t"
            "sll     $t4,       $t4,         2           \n\t"
            "sll     $t5,       $t5,         2           \n\t"
            "sll     $t6,       $t6,         2           \n\t"
            "sll     $t7,       $t7,         2           \n\t"
            "sll     %[s0],     %[s0],       2           \n\t"
            "sll     %[s1],     %[s1],       2           \n\t"
            "sll     %[s2],     %[s2],       2           \n\t"
            "sll     %[s3],     %[s3],       2           \n\t"
            "sll     %[s4],     %[s4],       2           \n\t"
            "sll     %[s5],     %[s5],       2           \n\t"
            "sll     %[s6],     %[s6],       2           \n\t"
            "sll     %[s7],     %[s7],       2           \n\t"
            "lwx     $t0,       $t0(%[table])            \n\t"
            "lwx     $t1,       $t1(%[table])            \n\t"
            "lwx     $t2,       $t2(%[table])            \n\t"
            "lwx     $t3,       $t3(%[table])            \n\t"
            "lwx     $t4,       $t4(%[table])            \n\t"
            "lwx     $t5,       $t5(%[table])            \n\t"
            "lwx     $t6,       $t6(%[table])            \n\t"
            "lwx     $t7,       $t7(%[table])            \n\t"
            "lwx     %[s0],     %[s0](%[table])          \n\t"
            "lwx     %[s1],     %[s1](%[table])          \n\t"
            "lwx     %[s2],     %[s2](%[table])          \n\t"
            "lwx     %[s3],     %[s3](%[table])          \n\t"
            "lwx     %[s4],     %[s4](%[table])          \n\t"
            "lwx     %[s5],     %[s5](%[table])          \n\t"
            "lwx     %[s6],     %[s6](%[table])          \n\t"
            "lwx     %[s7],     %[s7](%[table])          \n\t"
            "sw      $t0,       0(%[colors])             \n\t"
            "sw      $t1,       4(%[colors])             \n\t"
            "sw      $t2,       8(%[colors])             \n\t"
            "sw      $t3,       12(%[colors])            \n\t"
            "sw      $t4,       16(%[colors])            \n\t"
            "sw      $t5,       20(%[colors])            \n\t"
            "sw      $t6,       24(%[colors])            \n\t"
            "sw      $t7,       28(%[colors])            \n\t"
            "sw      %[s0],     32(%[colors])            \n\t"
            "sw      %[s1],     36(%[colors])            \n\t"
            "sw      %[s2],     40(%[colors])            \n\t"
            "sw      %[s3],     44(%[colors])            \n\t"
            "sw      %[s4],     48(%[colors])            \n\t"
            "sw      %[s5],     52(%[colors])            \n\t"
            "sw      %[s6],     56(%[colors])            \n\t"
            "sw      %[s7],     60(%[colors])            \n\t"
            "addiu   %[xx],     %[xx],       32          \n\t"
            "beqz    %[count],  4f                       \n\t"
            " addiu  %[colors], %[colors],   64          \n\t"
        "3:                                              \n\t"
            "addiu   %[count],  %[count],    -1          \n\t"
            "lhu     $t0,       0(%[xx])                 \n\t"
            "lbux    $t1,       $t0(%[srcAddr])          \n\t"
            "sll     $t1,       $t1,         2           \n\t"
            "lwx     $t2,       $t1(%[table])            \n\t"
            "sw      $t2,       0(%[colors])             \n\t"
            "addiu   %[xx],     %[xx],       2           \n\t"
            "bnez    %[count],  3b                       \n\t"
            " addiu  %[colors], %[colors],   4           \n\t"
        "4:                                              \n\t"
            ".set    pop                                 \n\t"
            : [xx]"+r"(xx), [count]"+r"(count), [colors]"+r"(colors),
              [s0]"=&r"(s0), [s1]"=&r"(s1), [s2]"=&r"(s2), [s3]"=&r"(s3),
              [s4]"=&r"(s4), [s5]"=&r"(s5), [s6]"=&r"(s6), [s7]"=&r"(s7)
            : [table]"r"(table), [srcAddr]"r"(srcAddr)
            : "memory", "t0", "t1", "t2", "t3",
              "t4", "t5", "t6", "t7", "t8"
        );
    }
}

/*  If we replace a sampleproc, then we null-out the associated shaderproc,
    otherwise the shader won't even look at the matrix/sampler
 */

void SkBitmapProcState::platformProcs() {
    bool isOpaque = 256 == fAlphaScale;
    bool justDx = false;

    if (fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)) {
        justDx = true;
    }

    switch (fBitmap->colorType()) {
        case kIndex_8_SkColorType:
            if (justDx && kNone_SkFilterQuality == fFilterLevel) {
                fSampleProc16 = SI8_D16_nofilter_DX_mips_dsp;
                fShaderProc16 = NULL;
                if (isOpaque) {
                    fSampleProc32 = SI8_opaque_D32_nofilter_DX_mips_dsp;
                    fShaderProc32 = NULL;
                }
            }
            break;
        default:
            break;
    }
}

void SkBitmapScaler::PlatformConvolutionProcs(SkConvolutionProcs*) {}
