/*
 * MIPS DSPr2 optimizations for libjpeg-turbo
 *
 * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
 * All Rights Reserved.
 * Authors:  Teodora Novkovic (teodora.novkovic@imgtec.com)
 *           Darko Laus       (darko.laus@imgtec.com)
 * Copyright (C) 2015, D. R. Commander.  All Rights Reserved.
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 * 1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software. If you use this software
 *    in a product, an acknowledgment in the product documentation would be
 *    appreciated but is not required.
 * 2. Altered source versions must be plainly marked as such, and must not be
 *    misrepresented as being the original software.
 * 3. This notice may not be removed or altered from any source distribution.
 */

#include "jsimd_mips_dspr2_asm.h"

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_c_null_convert_mips_dspr2)
/*
 * a0     - cinfo->image_width
 * a1     - input_buf
 * a2     - output_buf
 * a3     - output_row
 * 16(sp) - num_rows
 * 20(sp) - cinfo->num_components
 *
 * Null conversion for compression
 */

    SAVE_REGS_ON_STACK 8, s0, s1

    lw        t9, 24(sp)   // t9 = num_rows
    lw        s0, 28(sp)   // s0 = cinfo->num_components
    andi      t0, a0, 3    // t0 = cinfo->image_width & 3
    beqz      t0, 4f       // no residual
     nop
0:
    addiu     t9, t9, -1
    bltz      t9, 7f
     li       t1, 0
1:
    sll       t3, t1, 2
    lwx       t5, t3(a2)   // t5 = outptr = output_buf[ci]
    lw        t2, 0(a1)    // t2 = inptr = *input_buf
    sll       t4, a3, 2
    lwx       t5, t4(t5)   // t5 = outptr = output_buf[ci][output_row]
    addu      t2, t2, t1
    addu      s1, t5, a0
    addu      t6, t5, t0
2:
    lbu       t3, 0(t2)
    addiu     t5, t5, 1
    sb        t3, -1(t5)
    bne       t6, t5, 2b
     addu     t2, t2, s0
3:
    lbu       t3, 0(t2)
    addu      t4, t2, s0
    addu      t7, t4, s0
    addu      t8, t7, s0
    addu      t2, t8, s0
    lbu       t4, 0(t4)
    lbu       t7, 0(t7)
    lbu       t8, 0(t8)
    addiu     t5, t5, 4
    sb        t3, -4(t5)
    sb        t4, -3(t5)
    sb        t7, -2(t5)
    bne       s1, t5, 3b
     sb       t8, -1(t5)
    addiu     t1, t1, 1
    bne       t1, s0, 1b
     nop
    addiu     a1, a1, 4
    bgez      t9, 0b
     addiu    a3, a3, 1
    b         7f
     nop
4:
    addiu     t9, t9, -1
    bltz      t9, 7f
     li       t1, 0
5:
    sll       t3, t1, 2
    lwx       t5, t3(a2)   // t5 = outptr = output_buf[ci]
    lw        t2, 0(a1)    // t2 = inptr = *input_buf
    sll       t4, a3, 2
    lwx       t5, t4(t5)   // t5 = outptr = output_buf[ci][output_row]
    addu      t2, t2, t1
    addu      s1, t5, a0
    addu      t6, t5, t0
6:
    lbu       t3, 0(t2)
    addu      t4, t2, s0
    addu      t7, t4, s0
    addu      t8, t7, s0
    addu      t2, t8, s0
    lbu       t4, 0(t4)
    lbu       t7, 0(t7)
    lbu       t8, 0(t8)
    addiu     t5, t5, 4
    sb        t3, -4(t5)
    sb        t4, -3(t5)
    sb        t7, -2(t5)
    bne       s1, t5, 6b
     sb       t8, -1(t5)
    addiu     t1, t1, 1
    bne       t1, s0, 5b
     nop
    addiu     a1, a1, 4
    bgez      t9, 4b
     addiu    a3, a3, 1
7:
    RESTORE_REGS_FROM_STACK 8, s0, s1

    j         ra
     nop

END(jsimd_c_null_convert_mips_dspr2)

/*****************************************************************************/
/*
 * jsimd_extrgb_ycc_convert_mips_dspr2
 * jsimd_extbgr_ycc_convert_mips_dspr2
 * jsimd_extrgbx_ycc_convert_mips_dspr2
 * jsimd_extbgrx_ycc_convert_mips_dspr2
 * jsimd_extxbgr_ycc_convert_mips_dspr2
 * jsimd_extxrgb_ycc_convert_mips_dspr2
 *
 * Colorspace conversion RGB -> YCbCr
 */

.macro GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 colorid, pixel_size, r_offs, g_offs, b_offs

.macro DO_RGB_TO_YCC r,    \
                     g,    \
                     b,    \
                     inptr
    lbu     \r, \r_offs(\inptr)
    lbu     \g, \g_offs(\inptr)
    lbu     \b, \b_offs(\inptr)
    addiu   \inptr, \pixel_size
.endm

LEAF_MIPS_DSPR2(jsimd_\colorid\()_ycc_convert_mips_dspr2)
/*
 * a0     - cinfo->image_width
 * a1     - input_buf
 * a2     - output_buf
 * a3     - output_row
 * 16(sp) - num_rows
 */

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    lw      t7, 48(sp)        // t7 = num_rows
    li      s0, 0x4c8b        // FIX(0.29900)
    li      s1, 0x9646        // FIX(0.58700)
    li      s2, 0x1d2f        // FIX(0.11400)
    li      s3, 0xffffd4cd    // -FIX(0.16874)
    li      s4, 0xffffab33    // -FIX(0.33126)
    li      s5, 0x8000        // FIX(0.50000)
    li      s6, 0xffff94d1    // -FIX(0.41869)
    li      s7, 0xffffeb2f    // -FIX(0.08131)
    li      t8, 0x807fff      // CBCR_OFFSET + ONE_HALF-1

0:
    addiu   t7, -1            // --num_rows
    lw      t6, 0(a1)         // t6 = input_buf[0]
    lw      t0, 0(a2)
    lw      t1, 4(a2)
    lw      t2, 8(a2)
    sll     t3, a3, 2
    lwx     t0, t3(t0)        // t0 = output_buf[0][output_row]
    lwx     t1, t3(t1)        // t1 = output_buf[1][output_row]
    lwx     t2, t3(t2)        // t2 = output_buf[2][output_row]

    addu    t9, t2, a0        // t9 = end address
    addiu   a3, 1

1:
    DO_RGB_TO_YCC t3, t4, t5, t6

    mtlo    s5, $ac0
    mtlo    t8, $ac1
    mtlo    t8, $ac2
    maddu   $ac0, s2, t5
    maddu   $ac1, s5, t5
    maddu   $ac2, s5, t3
    maddu   $ac0, s0, t3
    maddu   $ac1, s3, t3
    maddu   $ac2, s6, t4
    maddu   $ac0, s1, t4
    maddu   $ac1, s4, t4
    maddu   $ac2, s7, t5
    extr.w  t3, $ac0, 16
    extr.w  t4, $ac1, 16
    extr.w  t5, $ac2, 16
    sb      t3, 0(t0)
    sb      t4, 0(t1)
    sb      t5, 0(t2)
    addiu   t0, 1
    addiu   t2, 1
    bne     t2, t9, 1b
     addiu  t1, 1
    bgtz    t7, 0b
     addiu  a1, 4

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j ra
     nop
END(jsimd_\colorid\()_ycc_convert_mips_dspr2)

.purgem DO_RGB_TO_YCC

.endm

/*------------------------------------------id -- pix R  G  B */
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extrgb,  3, 0, 1, 2
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extbgr,  3, 2, 1, 0
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extrgbx, 4, 0, 1, 2
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extbgrx, 4, 2, 1, 0
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extxbgr, 4, 3, 2, 1
GENERATE_JSIMD_RGB_YCC_CONVERT_MIPS_DSPR2 extxrgb, 4, 1, 2, 3

/*****************************************************************************/
/*
 * jsimd_ycc_extrgb_convert_mips_dspr2
 * jsimd_ycc_extbgr_convert_mips_dspr2
 * jsimd_ycc_extrgbx_convert_mips_dspr2
 * jsimd_ycc_extbgrx_convert_mips_dspr2
 * jsimd_ycc_extxbgr_convert_mips_dspr2
 * jsimd_ycc_extxrgb_convert_mips_dspr2
 *
 * Colorspace conversion YCbCr -> RGB
 */

.macro GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 colorid, pixel_size, r_offs, g_offs, b_offs, a_offs

.macro STORE_YCC_TO_RGB  scratch0 \
                         scratch1 \
                         scratch2 \
                         outptr
    sb       \scratch0, \r_offs(\outptr)
    sb       \scratch1, \g_offs(\outptr)
    sb       \scratch2, \b_offs(\outptr)
.if (\pixel_size == 4)
    li       t0, 0xFF
    sb       t0, \a_offs(\outptr)
.endif
    addiu    \outptr, \pixel_size
.endm

LEAF_MIPS_DSPR2(jsimd_ycc_\colorid\()_convert_mips_dspr2)
/*
 * a0     - cinfo->image_width
 * a1     - input_buf
 * a2     - input_row
 * a3     - output_buf
 * 16(sp) - num_rows
 */

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    lw         s1, 48(sp)
    li         t3, 0x8000
    li         t4, 0x166e9     // FIX(1.40200)
    li         t5, 0x1c5a2     // FIX(1.77200)
    li         t6, 0xffff492e  // -FIX(0.71414)
    li         t7, 0xffffa7e6  // -FIX(0.34414)
    repl.ph    t8, 128

0:
    lw         s0, 0(a3)
    lw         t0, 0(a1)
    lw         t1, 4(a1)
    lw         t2, 8(a1)
    sll        s5, a2, 2
    addiu      s1, -1
    lwx        s2, s5(t0)
    lwx        s3, s5(t1)
    lwx        s4, s5(t2)
    addu       t9, s2, a0
    addiu      a2, 1

1:
    lbu        s7, 0(s4)       // cr
    lbu        s6, 0(s3)       // cb
    lbu        s5, 0(s2)       // y
    addiu      s2, 1
    addiu      s4, 1
    addiu      s7, -128
    addiu      s6, -128
    mul        t2, t7, s6
    mul        t0, t6, s7      // Crgtab[cr]
    sll        s7, 15
    mulq_rs.w  t1, t4, s7      // Crrtab[cr]
    sll        s6, 15
    addu       t2, t3          // Cbgtab[cb]
    addu       t2, t0

    mulq_rs.w  t0, t5, s6      // Cbbtab[cb]
    sra        t2, 16
    addu       t1, s5
    addu       t2, s5          // add y
    ins        t2, t1, 16, 16
    subu.ph    t2, t2, t8
    addu       t0, s5
    shll_s.ph  t2, t2, 8
    subu       t0, 128
    shra.ph    t2, t2, 8
    shll_s.w   t0, t0, 24
    addu.ph    t2, t2, t8      // clip & store
    sra        t0, t0, 24
    sra        t1, t2, 16
    addiu      t0, 128

    STORE_YCC_TO_RGB t1, t2, t0, s0

    bne        s2, t9, 1b
     addiu     s3, 1
    bgtz       s1, 0b
     addiu     a3, 4

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j ra
     nop
END(jsimd_ycc_\colorid\()_convert_mips_dspr2)

.purgem STORE_YCC_TO_RGB

.endm

/*------------------------------------------id -- pix R  G  B  A */
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extrgb,  3, 0, 1, 2, 3
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extbgr,  3, 2, 1, 0, 3
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extrgbx, 4, 0, 1, 2, 3
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extbgrx, 4, 2, 1, 0, 3
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extxbgr, 4, 3, 2, 1, 0
GENERATE_JSIMD_YCC_RGB_CONVERT_MIPS_DSPR2 extxrgb, 4, 1, 2, 3, 0

/*****************************************************************************/
/*
 * jsimd_extrgb_gray_convert_mips_dspr2
 * jsimd_extbgr_gray_convert_mips_dspr2
 * jsimd_extrgbx_gray_convert_mips_dspr2
 * jsimd_extbgrx_gray_convert_mips_dspr2
 * jsimd_extxbgr_gray_convert_mips_dspr2
 * jsimd_extxrgb_gray_convert_mips_dspr2
 *
 * Colorspace conversion RGB -> GRAY
 */

.macro GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 colorid, pixel_size, r_offs, g_offs, b_offs

.macro DO_RGB_TO_GRAY r,    \
                      g,    \
                      b,    \
                      inptr
    lbu     \r, \r_offs(\inptr)
    lbu     \g, \g_offs(\inptr)
    lbu     \b, \b_offs(\inptr)
    addiu   \inptr, \pixel_size
.endm

LEAF_MIPS_DSPR2(jsimd_\colorid\()_gray_convert_mips_dspr2)
/*
 * a0     - cinfo->image_width
 * a1     - input_buf
 * a2     - output_buf
 * a3     - output_row
 * 16(sp) - num_rows
 */

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    li      s0, 0x4c8b             // s0 = FIX(0.29900)
    li      s1, 0x9646             // s1 = FIX(0.58700)
    li      s2, 0x1d2f             // s2 = FIX(0.11400)
    li      s7, 0x8000             // s7 = FIX(0.50000)
    lw      s6, 48(sp)
    andi    t7, a0, 3

0:
    addiu   s6, -1                 // s6 = num_rows
    lw      t0, 0(a1)
    lw      t1, 0(a2)
    sll     t3, a3, 2
    lwx     t1, t3(t1)
    addiu   a3, 1
    addu    t9, t1, a0
    subu    t8, t9, t7
    beq     t1, t8, 2f
     nop

1:
    DO_RGB_TO_GRAY t3, t4, t5, t0
    DO_RGB_TO_GRAY s3, s4, s5, t0

    mtlo    s7, $ac0
    maddu   $ac0, s2, t5
    maddu   $ac0, s1, t4
    maddu   $ac0, s0, t3
    mtlo    s7, $ac1
    maddu   $ac1, s2, s5
    maddu   $ac1, s1, s4
    maddu   $ac1, s0, s3
    extr.w  t6, $ac0, 16

    DO_RGB_TO_GRAY t3, t4, t5, t0
    DO_RGB_TO_GRAY s3, s4, s5, t0

    mtlo    s7, $ac0
    maddu   $ac0, s2, t5
    maddu   $ac0, s1, t4
    extr.w  t2, $ac1, 16
    maddu   $ac0, s0, t3
    mtlo    s7, $ac1
    maddu   $ac1, s2, s5
    maddu   $ac1, s1, s4
    maddu   $ac1, s0, s3
    extr.w  t5, $ac0, 16
    sb      t6, 0(t1)
    sb      t2, 1(t1)
    extr.w  t3, $ac1, 16
    addiu   t1, 4
    sb      t5, -2(t1)
    sb      t3, -1(t1)
    bne     t1, t8, 1b
     nop

2:
    beqz    t7, 4f
     nop

3:
    DO_RGB_TO_GRAY t3, t4, t5, t0

    mtlo    s7, $ac0
    maddu   $ac0, s2, t5
    maddu   $ac0, s1, t4
    maddu   $ac0, s0, t3
    extr.w  t6, $ac0, 16
    sb      t6, 0(t1)
    addiu   t1, 1
    bne     t1, t9, 3b
     nop

4:
    bgtz    s6, 0b
     addiu  a1, 4

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j ra
     nop
END(jsimd_\colorid\()_gray_convert_mips_dspr2)

.purgem DO_RGB_TO_GRAY

.endm

/*------------------------------------------id --  pix R  G  B */
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extrgb,  3, 0, 1, 2
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extbgr,  3, 2, 1, 0
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extrgbx, 4, 0, 1, 2
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extbgrx, 4, 2, 1, 0
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extxbgr, 4, 3, 2, 1
GENERATE_JSIMD_RGB_GRAY_CONVERT_MIPS_DSPR2 extxrgb, 4, 1, 2, 3
/*****************************************************************************/
/*
 * jsimd_h2v2_merged_upsample_mips_dspr2
 * jsimd_h2v2_extrgb_merged_upsample_mips_dspr2
 * jsimd_h2v2_extrgbx_merged_upsample_mips_dspr2
 * jsimd_h2v2_extbgr_merged_upsample_mips_dspr2
 * jsimd_h2v2_extbgrx_merged_upsample_mips_dspr2
 * jsimd_h2v2_extxbgr_merged_upsample_mips_dspr2
 * jsimd_h2v2_extxrgb_merged_upsample_mips_dspr2
 *
 * Merged h2v2 upsample routines
 */
.macro GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 colorid,    \
                                                pixel_size, \
                                                r1_offs,    \
                                                g1_offs,    \
                                                b1_offs,    \
                                                a1_offs,    \
                                                r2_offs,    \
                                                g2_offs,    \
                                                b2_offs,    \
                                                a2_offs

.macro STORE_H2V2_2_PIXELS  scratch0 \
                            scratch1 \
                            scratch2 \
                            scratch3 \
                            scratch4 \
                            scratch5 \
                            outptr
    sb       \scratch0, \r1_offs(\outptr)
    sb       \scratch1, \g1_offs(\outptr)
    sb       \scratch2, \b1_offs(\outptr)
    sb       \scratch3, \r2_offs(\outptr)
    sb       \scratch4, \g2_offs(\outptr)
    sb       \scratch5, \b2_offs(\outptr)
.if (\pixel_size == 8)
    li       \scratch0, 0xFF
    sb       \scratch0, \a1_offs(\outptr)
    sb       \scratch0, \a2_offs(\outptr)
.endif
    addiu    \outptr, \pixel_size
.endm

.macro STORE_H2V2_1_PIXEL  scratch0 \
                           scratch1 \
                           scratch2 \
                           outptr
    sb    \scratch0, \r1_offs(\outptr)
    sb    \scratch1, \g1_offs(\outptr)
    sb    \scratch2, \b1_offs(\outptr)

.if (\pixel_size == 8)
    li    t0, 0xFF
    sb    t0, \a1_offs(\outptr)
.endif
.endm

LEAF_MIPS_DSPR2(jsimd_h2v2_\colorid\()_merged_upsample_mips_dspr2)
/*
 * a0     - cinfo->output_width
 * a1     - input_buf
 * a2     - in_row_group_ctr
 * a3     - output_buf
 * 16(sp) - cinfo->sample_range_limit
 */

    SAVE_REGS_ON_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, ra

    lw           t9, 56(sp)        // cinfo->sample_range_limit
    lw           v0, 0(a1)
    lw           v1, 4(a1)
    lw           t0, 8(a1)
    sll          t1, a2, 3
    addiu        t2, t1, 4
    sll          t3, a2, 2
    lw           t4, 0(a3)         // t4 = output_buf[0]
    lwx          t1, t1(v0)        // t1 = input_buf[0][in_row_group_ctr*2]
    lwx          t2, t2(v0)        // t2 = input_buf[0][in_row_group_ctr*2 + 1]
    lwx          t5, t3(v1)        // t5 = input_buf[1][in_row_group_ctr]
    lwx          t6, t3(t0)        // t6 = input_buf[2][in_row_group_ctr]
    lw           t7, 4(a3)         // t7 = output_buf[1]
    li           s1, 0xe6ea
    addiu        t8, s1, 0x7fff    // t8 = 0x166e9 [FIX(1.40200)]
    addiu        s0, t8, 0x5eb9    // s0 = 0x1c5a2 [FIX(1.77200)]
    addiu        s1, zero, 0xa7e6  // s4 = 0xffffa7e6 [-FIX(0.34414)]
    xori         s2, s1, 0xeec8    // s3 = 0xffff492e [-FIX(0.71414)]
    srl          t3, a0, 1
    blez         t3, 2f
     addu        t0, t5, t3        // t0 = end address
 1:
    lbu          t3, 0(t5)
    lbu          s3, 0(t6)
    addiu        t5, t5, 1
    addiu        t3, t3, -128      // (cb - 128)
    addiu        s3, s3, -128      // (cr - 128)
    mult         $ac1, s1, t3
    madd         $ac1, s2, s3
    sll          s3, s3, 15
    sll          t3, t3, 15
    mulq_rs.w    s4, t8, s3        // s4 = (C1 * cr + ONE_HALF)>> SCALEBITS
    extr_r.w     s5, $ac1, 16
    mulq_rs.w    s6, s0, t3        // s6 = (C2 * cb + ONE_HALF)>> SCALEBITS
    lbu          v0, 0(t1)
    addiu        t6, t6, 1
    addiu        t1, t1, 2
    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          AT, 0(t3)
    lbu          s7, 0(s3)
    lbu          ra, 0(v1)
    lbu          v0, -1(t1)
    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          t3, 0(t3)
    lbu          s3, 0(s3)
    lbu          v1, 0(v1)
    lbu          v0, 0(t2)

    STORE_H2V2_2_PIXELS AT, s7, ra, t3, s3, v1, t4

    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          AT, 0(t3)
    lbu          s7, 0(s3)
    lbu          ra, 0(v1)
    lbu          v0, 1(t2)
    addiu        t2, t2, 2
    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          t3, 0(t3)
    lbu          s3, 0(s3)
    lbu          v1, 0(v1)

    STORE_H2V2_2_PIXELS AT, s7, ra, t3, s3, v1, t7

    bne          t0, t5, 1b
     nop
2:
    andi         t0, a0, 1
    beqz         t0, 4f
     lbu          t3, 0(t5)
    lbu          s3, 0(t6)
    addiu        t3, t3, -128      // (cb - 128)
    addiu        s3, s3, -128      // (cr - 128)
    mult         $ac1, s1, t3
    madd         $ac1, s2, s3
    sll          s3, s3, 15
    sll          t3, t3, 15
    lbu          v0, 0(t1)
    extr_r.w     s5, $ac1, 16
    mulq_rs.w    s4, t8, s3        // s4 = (C1 * cr + ONE_HALF)>> SCALEBITS
    mulq_rs.w    s6, s0, t3        // s6 = (C2 * cb + ONE_HALF)>> SCALEBITS
    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          t3, 0(t3)
    lbu          s3, 0(s3)
    lbu          v1, 0(v1)
    lbu          v0, 0(t2)

    STORE_H2V2_1_PIXEL t3, s3, v1, t4

    addu         t3, v0, s4        // y+cred
    addu         s3, v0, s5        // y+cgreen
    addu         v1, v0, s6        // y+cblue
    addu         t3, t9, t3        // y+cred
    addu         s3, t9, s3        // y+cgreen
    addu         v1, t9, v1        // y+cblue
    lbu          t3, 0(t3)
    lbu          s3, 0(s3)
    lbu          v1, 0(v1)

    STORE_H2V2_1_PIXEL t3, s3, v1, t7
4:
    RESTORE_REGS_FROM_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, ra

    j           ra
     nop

END(jsimd_h2v2_\colorid\()_merged_upsample_mips_dspr2)

.purgem STORE_H2V2_1_PIXEL
.purgem STORE_H2V2_2_PIXELS
.endm

/*-----------------------------------------id -- pix R1 G1 B1 A1 R2 G2 B2 A2 */
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extrgb,  6, 0, 1, 2, 6, 3, 4, 5, 6
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extbgr,  6, 2, 1, 0, 3, 5, 4, 3, 6
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extrgbx, 8, 0, 1, 2, 3, 4, 5, 6, 7
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extbgrx, 8, 2, 1, 0, 3, 6, 5, 4, 7
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extxbgr, 8, 3, 2, 1, 0, 7, 6, 5, 4
GENERATE_H2V2_MERGED_UPSAMPLE_MIPS_DSPR2 extxrgb, 8, 1, 2, 3, 0, 5, 6, 7, 4
/*****************************************************************************/
/*
 * jsimd_h2v1_merged_upsample_mips_dspr2
 * jsimd_h2v1_extrgb_merged_upsample_mips_dspr2
 * jsimd_h2v1_extrgbx_merged_upsample_mips_dspr2
 * jsimd_h2v1_extbgr_merged_upsample_mips_dspr2
 * jsimd_h2v1_extbgrx_merged_upsample_mips_dspr2
 * jsimd_h2v1_extxbgr_merged_upsample_mips_dspr2
 * jsimd_h2v1_extxrgb_merged_upsample_mips_dspr2
 *
 * Merged h2v1 upsample routines
 */

.macro GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 colorid,    \
                                                pixel_size, \
                                                r1_offs,    \
                                                g1_offs,    \
                                                b1_offs,    \
                                                a1_offs,    \
                                                r2_offs,    \
                                                g2_offs,    \
                                                b2_offs,    \
                                                a2_offs

.macro STORE_H2V1_2_PIXELS  scratch0 \
                            scratch1 \
                            scratch2 \
                            scratch3 \
                            scratch4 \
                            scratch5 \
                            outptr
    sb       \scratch0, \r1_offs(\outptr)
    sb       \scratch1, \g1_offs(\outptr)
    sb       \scratch2, \b1_offs(\outptr)
    sb       \scratch3, \r2_offs(\outptr)
    sb       \scratch4, \g2_offs(\outptr)
    sb       \scratch5, \b2_offs(\outptr)
.if (\pixel_size == 8)
    li       t0, 0xFF
    sb       t0, \a1_offs(\outptr)
    sb       t0, \a2_offs(\outptr)
.endif
    addiu    \outptr, \pixel_size
.endm

.macro STORE_H2V1_1_PIXEL  scratch0 \
                           scratch1 \
                           scratch2 \
                           outptr
    sb    \scratch0, \r1_offs(\outptr)
    sb    \scratch1, \g1_offs(\outptr)
    sb    \scratch2, \b1_offs(\outptr)
.if (\pixel_size == 8)
    li    t0, 0xFF
    sb    t0, \a1_offs(\outptr)
.endif
.endm

LEAF_MIPS_DSPR2(jsimd_h2v1_\colorid\()_merged_upsample_mips_dspr2)
/*
 * a0     - cinfo->output_width
 * a1     - input_buf
 * a2     - in_row_group_ctr
 * a3     - output_buf
 * 16(sp) - range_limit
 */

    SAVE_REGS_ON_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, ra

    li           t0, 0xe6ea
    lw           t1, 0(a1)         // t1 = input_buf[0]
    lw           t2, 4(a1)         // t2 = input_buf[1]
    lw           t3, 8(a1)         // t3 = input_buf[2]
    lw           t8, 56(sp)        // t8 = range_limit
    addiu        s1, t0, 0x7fff    // s1 = 0x166e9 [FIX(1.40200)]
    addiu        s2, s1, 0x5eb9    // s2 = 0x1c5a2 [FIX(1.77200)]
    addiu        s0, t0, 0x9916    // s0 = 0x8000
    addiu        s4, zero, 0xa7e6  // s4 = 0xffffa7e6 [-FIX(0.34414)]
    xori         s3, s4, 0xeec8    // s3 = 0xffff492e [-FIX(0.71414)]
    srl          t0, a0, 1
    sll          t4, a2, 2
    lwx          s5, t4(t1)        // s5 = inptr0
    lwx          s6, t4(t2)        // s6 = inptr1
    lwx          s7, t4(t3)        // s7 = inptr2
    lw           t7, 0(a3)         // t7 = outptr
    blez         t0, 2f
     addu        t9, s6, t0        // t9 = end address
1:
    lbu          t2, 0(s6)         // t2 = cb
    lbu          t0, 0(s7)         // t0 = cr
    lbu          t1, 0(s5)         // t1 = y
    addiu        t2, t2, -128      // t2 = cb - 128
    addiu        t0, t0, -128      // t0 = cr - 128
    mult         $ac1, s4, t2
    madd         $ac1, s3, t0
    sll          t0, t0, 15
    sll          t2, t2, 15
    mulq_rs.w    t0, s1, t0        // t0 = (C1*cr + ONE_HALF)>> SCALEBITS
    extr_r.w     t5, $ac1, 16
    mulq_rs.w    t6, s2, t2        // t6 = (C2*cb + ONE_HALF)>> SCALEBITS
    addiu        s7, s7, 1
    addiu        s6, s6, 1
    addu         t2, t1, t0        // t2 = y + cred
    addu         t3, t1, t5        // t3 = y + cgreen
    addu         t4, t1, t6        // t4 = y + cblue
    addu         t2, t8, t2
    addu         t3, t8, t3
    addu         t4, t8, t4
    lbu          t1, 1(s5)
    lbu          v0, 0(t2)
    lbu          v1, 0(t3)
    lbu          ra, 0(t4)
    addu         t2, t1, t0
    addu         t3, t1, t5
    addu         t4, t1, t6
    addu         t2, t8, t2
    addu         t3, t8, t3
    addu         t4, t8, t4
    lbu          t2, 0(t2)
    lbu          t3, 0(t3)
    lbu          t4, 0(t4)

    STORE_H2V1_2_PIXELS v0, v1, ra, t2, t3, t4, t7

    bne          t9, s6, 1b
     addiu       s5, s5, 2
2:
    andi         t0, a0, 1
    beqz         t0, 4f
     nop
3:
    lbu          t2, 0(s6)
    lbu          t0, 0(s7)
    lbu          t1, 0(s5)
    addiu        t2, t2, -128      //(cb - 128)
    addiu        t0, t0, -128      //(cr - 128)
    mul          t3, s4, t2
    mul          t4, s3, t0
    sll          t0, t0, 15
    sll          t2, t2, 15
    mulq_rs.w    t0, s1, t0       // (C1*cr + ONE_HALF)>> SCALEBITS
    mulq_rs.w    t6, s2, t2       // (C2*cb + ONE_HALF)>> SCALEBITS
    addu         t3, t3, s0
    addu         t3, t4, t3
    sra          t5, t3, 16       // (C4*cb + ONE_HALF + C3*cr)>> SCALEBITS
    addu         t2, t1, t0       // y + cred
    addu         t3, t1, t5       // y + cgreen
    addu         t4, t1, t6       // y + cblue
    addu         t2, t8, t2
    addu         t3, t8, t3
    addu         t4, t8, t4
    lbu          t2, 0(t2)
    lbu          t3, 0(t3)
    lbu          t4, 0(t4)

    STORE_H2V1_1_PIXEL t2, t3, t4, t7
4:
    RESTORE_REGS_FROM_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, ra

    j            ra
     nop

END(jsimd_h2v1_\colorid\()_merged_upsample_mips_dspr2)

.purgem STORE_H2V1_1_PIXEL
.purgem STORE_H2V1_2_PIXELS
.endm

/*-----------------------------------------id -- pix R1 G1 B1 A1 R2 G2 B2 A2 */
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extrgb,  6, 0, 1, 2, 6, 3, 4, 5, 6
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extbgr,  6, 2, 1, 0, 3, 5, 4, 3, 6
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extrgbx, 8, 0, 1, 2, 3, 4, 5, 6, 7
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extbgrx, 8, 2, 1, 0, 3, 6, 5, 4, 7
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extxbgr, 8, 3, 2, 1, 0, 7, 6, 5, 4
GENERATE_H2V1_MERGED_UPSAMPLE_MIPS_DSPR2 extxrgb, 8, 1, 2, 3, 0, 5, 6, 7, 4
/*****************************************************************************/
/*
 * jsimd_h2v2_fancy_upsample_mips_dspr2
 *
 * Fancy processing for the common case of 2:1 horizontal and 2:1 vertical.
 */
LEAF_MIPS_DSPR2(jsimd_h2v2_fancy_upsample_mips_dspr2)
/*
 * a0     - cinfo->max_v_samp_factor
 * a1     - downsampled_width
 * a2     - input_data
 * a3     - output_data_ptr
 */

    SAVE_REGS_ON_STACK 24, s0, s1, s2, s3, s4, s5

    li             s4, 0
    lw             s2, 0(a3)       // s2 = *output_data_ptr
0:
    li             t9, 2
    lw             s1, -4(a2)      // s1 = inptr1

1:
    lw             s0, 0(a2)       // s0 = inptr0
    lwx            s3, s4(s2)
    addiu          s5, a1, -2      // s5 = downsampled_width - 2
    srl            t4, s5, 1
    sll            t4, t4, 1
    lbu            t0, 0(s0)
    lbu            t1, 1(s0)
    lbu            t2, 0(s1)
    lbu            t3, 1(s1)
    addiu          s0, 2
    addiu          s1, 2
    addu           t8, s0, t4      // t8 = end address
    andi           s5, s5, 1       // s5 = residual
    sll            t4, t0, 1
    sll            t6, t1, 1
    addu           t0, t0, t4      // t0 = (*inptr0++) * 3
    addu           t1, t1, t6      // t1 = (*inptr0++) * 3
    addu           t7, t0, t2      // t7 = thiscolsum
    addu           t6, t1, t3      // t5 = nextcolsum
    sll            t0, t7, 2       // t0 = thiscolsum * 4
    subu           t1, t0, t7      // t1 = thiscolsum * 3
    shra_r.w       t0, t0, 4
    addiu          t1, 7
    addu           t1, t1, t6
    srl            t1, t1, 4
    sb             t0, 0(s3)
    sb             t1, 1(s3)
    beq            t8, s0, 22f     // skip to final iteration if width == 3
     addiu          s3, 2
2:
    lh             t0, 0(s0)       // t0 = A3|A2
    lh             t2, 0(s1)       // t2 = B3|B2
    addiu          s0, 2
    addiu          s1, 2
    preceu.ph.qbr  t0, t0          // t0 = 0|A3|0|A2
    preceu.ph.qbr  t2, t2          // t2 = 0|B3|0|B2
    shll.ph        t1, t0, 1
    sll            t3, t6, 1
    addu.ph        t0, t1, t0      // t0 = A3*3|A2*3
    addu           t3, t3, t6      // t3 = this * 3
    addu.ph        t0, t0, t2      // t0 = next2|next1
    addu           t1, t3, t7
    andi           t7, t0, 0xFFFF  // t7 = next1
    sll            t2, t7, 1
    addu           t2, t7, t2      // t2 = next1*3
    addu           t4, t2, t6
    srl            t6, t0, 16      // t6 = next2
    shra_r.w       t1, t1, 4       // t1 = (this*3 + last + 8) >> 4
    addu           t0, t3, t7
    addiu          t0, 7
    srl            t0, t0, 4       // t0 = (this*3 + next1 + 7) >> 4
    shra_r.w       t4, t4, 4       // t3 = (next1*3 + this + 8) >> 4
    addu           t2, t2, t6
    addiu          t2, 7
    srl            t2, t2, 4       // t2 = (next1*3 + next2 + 7) >> 4
    sb             t1, 0(s3)
    sb             t0, 1(s3)
    sb             t4, 2(s3)
    sb             t2, 3(s3)
    bne            t8, s0, 2b
     addiu         s3, 4
22:
    beqz           s5, 4f
     addu          t8, s0, s5
3:
    lbu            t0, 0(s0)
    lbu            t2, 0(s1)
    addiu          s0, 1
    addiu          s1, 1
    sll            t3, t6, 1
    sll            t1, t0, 1
    addu           t1, t0, t1      // t1 = inptr0 * 3
    addu           t3, t3, t6      // t3 = thiscolsum * 3
    addu           t5, t1, t2
    addu           t1, t3, t7
    shra_r.w       t1, t1, 4
    addu           t0, t3, t5
    addiu          t0, 7
    srl            t0, t0, 4
    sb             t1, 0(s3)
    sb             t0, 1(s3)
    addiu          s3, 2
    move           t7, t6
    bne            t8, s0, 3b
     move          t6, t5
4:
    sll            t0, t6, 2       // t0 = thiscolsum * 4
    subu           t1, t0, t6      // t1 = thiscolsum * 3
    addu           t1, t1, t7
    addiu          s4, 4
    shra_r.w       t1, t1, 4
    addiu          t0, 7
    srl            t0, t0, 4
    sb             t1, 0(s3)
    sb             t0, 1(s3)
    addiu          t9, -1
    addiu          s3, 2
    bnez           t9, 1b
     lw            s1, 4(a2)
    srl            t0, s4, 2
    subu           t0, a0, t0
    bgtz           t0, 0b
     addiu         a2, 4

    RESTORE_REGS_FROM_STACK 24, s0, s1, s2, s3, s4, s5

    j ra
     nop
END(jsimd_h2v2_fancy_upsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v1_fancy_upsample_mips_dspr2)
/*
 * a0     - cinfo->max_v_samp_factor
 * a1     - downsampled_width
 * a2     - input_data
 * a3     - output_data_ptr
 */

    SAVE_REGS_ON_STACK 16, s0, s1, s2, s3

    .set at

    beqz           a0, 3f
     sll           t0, a0, 2
    lw             s1, 0(a3)
    li             s3, 0x10001
    addu           s0, s1, t0
0:
    addiu          t8, a1, -2
    srl            t9, t8, 2
    lw             t7, 0(a2)
    lw             s2, 0(s1)
    lbu            t0, 0(t7)
    lbu            t1, 1(t7)   // t1 = inptr[1]
    sll            t2, t0, 1
    addu           t2, t2, t0  // t2 = invalue*3
    addu           t2, t2, t1
    shra_r.w       t2, t2, 2
    sb             t0, 0(s2)
    sb             t2, 1(s2)
    beqz           t9, 11f
     addiu         s2, 2
1:
    ulw            t0, 0(t7)   // t0 = |P3|P2|P1|P0|
    ulw            t1, 1(t7)
    ulh            t2, 4(t7)   // t2 = |0|0|P5|P4|
    preceu.ph.qbl  t3, t0      // t3 = |0|P3|0|P2|
    preceu.ph.qbr  t0, t0      // t0 = |0|P1|0|P0|
    preceu.ph.qbr  t2, t2      // t2 = |0|P5|0|P4|
    preceu.ph.qbl  t4, t1      // t4 = |0|P4|0|P3|
    preceu.ph.qbr  t1, t1      // t1 = |0|P2|0|P1|
    shll.ph        t5, t4, 1
    shll.ph        t6, t1, 1
    addu.ph        t5, t5, t4  // t5 = |P4*3|P3*3|
    addu.ph        t6, t6, t1  // t6 = |P2*3|P1*3|
    addu.ph        t4, t3, s3
    addu.ph        t0, t0, s3
    addu.ph        t4, t4, t5
    addu.ph        t0, t0, t6
    shrl.ph        t4, t4, 2   // t4 = |0|P3|0|P2|
    shrl.ph        t0, t0, 2   // t0 = |0|P1|0|P0|
    addu.ph        t2, t2, t5
    addu.ph        t3, t3, t6
    shra_r.ph      t2, t2, 2   // t2 = |0|P5|0|P4|
    shra_r.ph      t3, t3, 2   // t3 = |0|P3|0|P2|
    shll.ph        t2, t2, 8
    shll.ph        t3, t3, 8
    or             t2, t4, t2
    or             t3, t3, t0
    addiu          t9, -1
    usw            t3, 0(s2)
    usw            t2, 4(s2)
    addiu          s2, 8
    bgtz           t9, 1b
     addiu         t7, 4
11:
    andi           t8, 3
    beqz           t8, 22f
     addiu         t7, 1

2:
    lbu            t0, 0(t7)
    addiu          t7, 1
    sll            t1, t0, 1
    addu           t2, t0, t1  // t2 = invalue
    lbu            t3, -2(t7)
    lbu            t4, 0(t7)
    addiu          t3, 1
    addiu          t4, 2
    addu           t3, t3, t2
    addu           t4, t4, t2
    srl            t3, 2
    srl            t4, 2
    sb             t3, 0(s2)
    sb             t4, 1(s2)
    addiu          t8, -1
    bgtz           t8, 2b
     addiu         s2, 2

22:
    lbu            t0, 0(t7)
    lbu            t2, -1(t7)
    sll            t1, t0, 1
    addu           t1, t1, t0 // t1 = invalue * 3
    addu           t1, t1, t2
    addiu          t1, 1
    srl            t1, t1, 2
    sb             t1, 0(s2)
    sb             t0, 1(s2)
    addiu          s1, 4
    bne            s1, s0, 0b
     addiu         a2, 4
3:
    RESTORE_REGS_FROM_STACK 16, s0, s1, s2, s3

    j              ra
     nop
END(jsimd_h2v1_fancy_upsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v1_downsample_mips_dspr2)
/*
 * a0     - cinfo->image_width
 * a1     - cinfo->max_v_samp_factor
 * a2     - compptr->v_samp_factor
 * a3     - compptr->width_in_blocks
 * 16(sp) - input_data
 * 20(sp) - output_data
 */
    .set at

    SAVE_REGS_ON_STACK 24, s0, s1, s2, s3, s4

    beqz        a2, 7f
     lw         s1, 44(sp)  // s1 = output_data
    lw          s0, 40(sp)  // s0 = input_data
    srl         s2, a0, 2
    andi        t9, a0, 2
    srl         t7, t9, 1
    addu        s2, t7, s2
    sll         t0, a3, 3   // t0 = width_in_blocks*DCT
    srl         t7, t0, 1
    subu        s2, t7, s2
0:
    andi        t6, a0, 1   // t6 = temp_index
    addiu       t6, -1
    lw          t4, 0(s1)   // t4 = outptr
    lw          t5, 0(s0)   // t5 = inptr0
    li          s3, 0       // s3 = bias
    srl         t7, a0, 1   // t7 = image_width1
    srl         s4, t7, 2
    andi        t8, t7, 3
1:
    ulhu        t0, 0(t5)
    ulhu        t1, 2(t5)
    ulhu        t2, 4(t5)
    ulhu        t3, 6(t5)
    raddu.w.qb  t0, t0
    raddu.w.qb  t1, t1
    raddu.w.qb  t2, t2
    raddu.w.qb  t3, t3
    shra.ph     t0, t0, 1
    shra_r.ph   t1, t1, 1
    shra.ph     t2, t2, 1
    shra_r.ph   t3, t3, 1
    sb          t0, 0(t4)
    sb          t1, 1(t4)
    sb          t2, 2(t4)
    sb          t3, 3(t4)
    addiu       s4, -1
    addiu       t4, 4
    bgtz        s4, 1b
     addiu      t5, 8
    beqz        t8, 3f
     addu       s4, t4, t8
2:
    ulhu        t0, 0(t5)
    raddu.w.qb  t0, t0
    addqh.w     t0, t0, s3
    xori        s3, s3, 1
    sb          t0, 0(t4)
    addiu       t4, 1
    bne         t4, s4, 2b
     addiu      t5, 2
3:
    lbux        t1, t6(t5)
    sll         t1, 1
    addqh.w     t2, t1, s3  // t2 = pixval1
    xori        s3, s3, 1
    addqh.w     t3, t1, s3  // t3 = pixval2
    blez        s2, 5f
     append     t3, t2,  8
    addu        t5, t4, s2  // t5 = loop_end2
4:
    ush         t3, 0(t4)
    addiu       s2, -1
    bgtz        s2, 4b
     addiu      t4,  2
5:
    beqz        t9, 6f
     nop
    sb          t2, 0(t4)
6:
    addiu       s1, 4
    addiu       a2, -1
    bnez        a2, 0b
     addiu      s0, 4
7:
    RESTORE_REGS_FROM_STACK 24, s0, s1, s2, s3, s4

    j           ra
    nop
END(jsimd_h2v1_downsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v2_downsample_mips_dspr2)

/*
 * a0     - cinfo->image_width
 * a1     - cinfo->max_v_samp_factor
 * a2     - compptr->v_samp_factor
 * a3     - compptr->width_in_blocks
 * 16(sp) - input_data
 * 20(sp) - output_data
 */
    .set at
    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    beqz         a2, 8f
     lw          s1, 52(sp)      // s1 = output_data
    lw           s0, 48(sp)      // s0 = input_data

    andi         t6, a0, 1       // t6 = temp_index
    addiu        t6, -1
    srl          t7, a0, 1       // t7 = image_width1
    srl          s4, t7, 2
    andi         t8, t7, 3
    andi         t9, a0, 2
    srl          s2, a0, 2
    srl          t7, t9, 1
    addu         s2, t7, s2
    sll          t0, a3, 3       // s2 = width_in_blocks*DCT
    srl          t7, t0, 1
    subu         s2, t7, s2
0:
    lw           t4, 0(s1)       // t4 = outptr
    lw           t5, 0(s0)       // t5 = inptr0
    lw           s7, 4(s0)       // s7 = inptr1
    li           s6, 1           // s6 = bias
2:
    ulw          t0, 0(t5)       // t0 = |P3|P2|P1|P0|
    ulw          t1, 0(s7)       // t1 = |Q3|Q2|Q1|Q0|
    ulw          t2, 4(t5)
    ulw          t3, 4(s7)
    precrq.ph.w  t7, t0, t1      // t2 = |P3|P2|Q3|Q2|
    ins          t0, t1, 16, 16  // t0 = |Q1|Q0|P1|P0|
    raddu.w.qb   t1, t7
    raddu.w.qb   t0, t0
    shra_r.w     t1, t1, 2
    addiu        t0, 1
    srl          t0, 2
    precrq.ph.w  t7, t2, t3
    ins          t2, t3, 16, 16
    raddu.w.qb   t7, t7
    raddu.w.qb   t2, t2
    shra_r.w     t7, t7, 2
    addiu        t2, 1
    srl          t2, 2
    sb           t0, 0(t4)
    sb           t1, 1(t4)
    sb           t2, 2(t4)
    sb           t7, 3(t4)
    addiu        t4, 4
    addiu        t5, 8
    addiu        s4, s4, -1
    bgtz         s4, 2b
     addiu       s7, 8
    beqz         t8, 4f
     addu        t8, t4, t8
3:
    ulhu         t0, 0(t5)
    ulhu         t1, 0(s7)
    ins          t0, t1, 16, 16
    raddu.w.qb   t0, t0
    addu         t0, t0, s6
    srl          t0, 2
    xori         s6, s6, 3
    sb           t0, 0(t4)
    addiu        t5, 2
    addiu        t4, 1
    bne          t8, t4, 3b
     addiu       s7, 2
4:
    lbux         t1, t6(t5)
    sll          t1, 1
    lbux         t0, t6(s7)
    sll          t0, 1
    addu         t1, t1, t0
    addu         t3, t1, s6
    srl          t0, t3, 2       // t2 = pixval1
    xori         s6, s6, 3
    addu         t2, t1, s6
    srl          t1, t2, 2       // t3 = pixval2
    blez         s2, 6f
     append      t1, t0, 8
5:
    ush          t1, 0(t4)
    addiu        s2, -1
    bgtz         s2, 5b
     addiu       t4, 2
6:
    beqz         t9, 7f
     nop
    sb           t0, 0(t4)
7:
    addiu        s1, 4
    addiu        a2, -1
    bnez         a2, 0b
     addiu       s0, 8
8:
    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j            ra
     nop
END(jsimd_h2v2_downsample_mips_dspr2)
/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v2_smooth_downsample_mips_dspr2)
/*
 * a0     - input_data
 * a1     - output_data
 * a2     - compptr->v_samp_factor
 * a3     - cinfo->max_v_samp_factor
 * 16(sp) - cinfo->smoothing_factor
 * 20(sp) - compptr->width_in_blocks
 * 24(sp) - cinfo->image_width
 */

    .set at

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    lw          s7, 52(sp)      // compptr->width_in_blocks
    lw          s0, 56(sp)      // cinfo->image_width
    lw          s6, 48(sp)      // cinfo->smoothing_factor
    sll         s7, 3           // output_cols = width_in_blocks * DCTSIZE
    sll         v0, s7, 1
    subu        v0, v0, s0
    blez        v0, 2f
    move        v1, zero
    addiu       t0, a3, 2       // t0 = cinfo->max_v_samp_factor + 2
0:
    addiu       t1, a0, -4
    sll         t2, v1, 2
    lwx         t1, t2(t1)
    move        t3, v0
    addu        t1, t1, s0
    lbu         t2, -1(t1)
1:
    addiu       t3, t3, -1
    sb          t2, 0(t1)
    bgtz        t3, 1b
    addiu       t1, t1, 1
    addiu       v1, v1, 1
    bne         v1, t0, 0b
    nop
2:
    li          v0, 80
    mul         v0, s6, v0
    li          v1, 16384
    move        t4, zero
    move        t5, zero
    subu        t6, v1, v0      // t6 = 16384 - tmp_smoot_f * 80
    sll         t7, s6, 4       // t7 = tmp_smoot_f * 16
3:
/* Special case for first column: pretend column -1 is same as column 0 */
    sll         v0, t4, 2
    lwx         t8, v0(a1)      //  outptr = output_data[outrow]
    sll         v1, t5, 2
    addiu       t9, v1, 4
    addiu       s0, v1, -4
    addiu       s1, v1, 8
    lwx         s2, v1(a0)      // inptr0 = input_data[inrow]
    lwx         t9, t9(a0)      // inptr1 = input_data[inrow+1]
    lwx         s0, s0(a0)      // above_ptr = input_data[inrow-1]
    lwx         s1, s1(a0)      // below_ptr = input_data[inrow+2]
    lh          v0, 0(s2)
    lh          v1, 0(t9)
    lh          t0, 0(s0)
    lh          t1, 0(s1)
    ins         v0, v1, 16, 16
    ins         t0, t1, 16, 16
    raddu.w.qb  t2, v0
    raddu.w.qb  s3, t0
    lbu         v0, 0(s2)
    lbu         v1, 2(s2)
    lbu         t0, 0(t9)
    lbu         t1, 2(t9)
    addu        v0, v0, v1
    mult        $ac1,t2, t6
    addu        t0, t0, t1
    lbu         t2, 2(s0)
    addu        t0, t0, v0
    lbu         t3, 2(s1)
    addu        s3, t0, s3
    lbu         v0, 0(s0)
    lbu         t0, 0(s1)
    sll         s3, s3, 1
    addu        v0, v0, t2
    addu        t0, t0, t3
    addu        t0, t0, v0
    addu        s3, t0, s3
    madd        $ac1,s3, t7
    extr_r.w    v0, $ac1, 16
    addiu       t8, t8, 1
    addiu       s2, s2, 2
    addiu       t9, t9, 2
    addiu       s0, s0, 2
    addiu       s1, s1, 2
    sb          v0, -1(t8)
    addiu       s4, s7, -2
    and         s4, s4, 3
    addu        s5, s4, t8      //end adress
4:
    lh          v0, 0(s2)
    lh          v1, 0(t9)
    lh          t0, 0(s0)
    lh          t1, 0(s1)
    ins         v0, v1, 16, 16
    ins         t0, t1, 16, 16
    raddu.w.qb  t2, v0
    raddu.w.qb  s3, t0
    lbu         v0, -1(s2)
    lbu         v1, 2(s2)
    lbu         t0, -1(t9)
    lbu         t1, 2(t9)
    addu        v0, v0, v1
    mult        $ac1, t2, t6
    addu        t0, t0, t1
    lbu         t2, 2(s0)
    addu        t0, t0, v0
    lbu         t3, 2(s1)
    addu        s3, t0, s3
    lbu         v0, -1(s0)
    lbu         t0, -1(s1)
    sll         s3, s3, 1
    addu        v0, v0, t2
    addu        t0, t0, t3
    addu        t0, t0, v0
    addu        s3, t0, s3
    madd        $ac1, s3, t7
    extr_r.w    t2, $ac1, 16
    addiu       t8, t8, 1
    addiu       s2, s2, 2
    addiu       t9, t9, 2
    addiu       s0, s0, 2
    sb          t2, -1(t8)
    bne         s5, t8, 4b
    addiu       s1, s1, 2
    addiu       s5, s7, -2
    subu        s5, s5, s4
    addu        s5, s5, t8      //end adress
5:
    lh          v0, 0(s2)
    lh          v1, 0(t9)
    lh          t0, 0(s0)
    lh          t1, 0(s1)
    ins         v0, v1, 16, 16
    ins         t0, t1, 16, 16
    raddu.w.qb  t2, v0
    raddu.w.qb  s3, t0
    lbu         v0, -1(s2)
    lbu         v1, 2(s2)
    lbu         t0, -1(t9)
    lbu         t1, 2(t9)
    addu        v0, v0, v1
    mult        $ac1, t2, t6
    addu        t0, t0, t1
    lbu         t2, 2(s0)
    addu        t0, t0, v0
    lbu         t3, 2(s1)
    addu        s3, t0, s3
    lbu         v0, -1(s0)
    lbu         t0, -1(s1)
    sll         s3, s3, 1
    addu        v0, v0, t2
    addu        t0, t0, t3
    lh          v1, 2(t9)
    addu        t0, t0, v0
    lh          v0, 2(s2)
    addu        s3, t0, s3
    lh          t0, 2(s0)
    lh          t1, 2(s1)
    madd        $ac1, s3, t7
    extr_r.w    t2, $ac1, 16
    ins         t0, t1, 16, 16
    ins         v0, v1, 16, 16
    raddu.w.qb  s3, t0
    lbu         v1, 4(s2)
    lbu         t0, 1(t9)
    lbu         t1, 4(t9)
    sb          t2, 0(t8)
    raddu.w.qb  t3, v0
    lbu         v0, 1(s2)
    addu        t0, t0, t1
    mult        $ac1, t3, t6
    addu        v0, v0, v1
    lbu         t2, 4(s0)
    addu        t0, t0, v0
    lbu         v0, 1(s0)
    addu        s3, t0, s3
    lbu         t0, 1(s1)
    lbu         t3, 4(s1)
    addu        v0, v0, t2
    sll         s3, s3, 1
    addu        t0, t0, t3
    lh          v1, 4(t9)
    addu        t0, t0, v0
    lh          v0, 4(s2)
    addu        s3, t0, s3
    lh          t0, 4(s0)
    lh          t1, 4(s1)
    madd        $ac1, s3, t7
    extr_r.w    t2, $ac1, 16
    ins         t0, t1, 16, 16
    ins         v0, v1, 16, 16
    raddu.w.qb  s3, t0
    lbu         v1, 6(s2)
    lbu         t0, 3(t9)
    lbu         t1, 6(t9)
    sb          t2, 1(t8)
    raddu.w.qb  t3, v0
    lbu         v0, 3(s2)
    addu        t0, t0,t1
    mult        $ac1, t3, t6
    addu        v0, v0, v1
    lbu         t2, 6(s0)
    addu        t0, t0, v0
    lbu         v0, 3(s0)
    addu        s3, t0, s3
    lbu         t0, 3(s1)
    lbu         t3, 6(s1)
    addu        v0, v0, t2
    sll         s3, s3, 1
    addu        t0, t0, t3
    lh          v1, 6(t9)
    addu        t0, t0, v0
    lh          v0, 6(s2)
    addu        s3, t0, s3
    lh          t0, 6(s0)
    lh          t1, 6(s1)
    madd        $ac1, s3, t7
    extr_r.w    t3, $ac1, 16
    ins         t0, t1, 16, 16
    ins         v0, v1, 16, 16
    raddu.w.qb  s3, t0
    lbu         v1, 8(s2)
    lbu         t0, 5(t9)
    lbu         t1, 8(t9)
    sb          t3, 2(t8)
    raddu.w.qb  t2, v0
    lbu         v0, 5(s2)
    addu        t0, t0, t1
    mult        $ac1, t2, t6
    addu        v0, v0, v1
    lbu         t2, 8(s0)
    addu        t0, t0, v0
    lbu         v0, 5(s0)
    addu        s3, t0, s3
    lbu         t0, 5(s1)
    lbu         t3, 8(s1)
    addu        v0, v0, t2
    sll         s3, s3, 1
    addu        t0, t0, t3
    addiu       t8, t8, 4
    addu        t0, t0, v0
    addiu       s2, s2, 8
    addu        s3, t0, s3
    addiu       t9, t9, 8
    madd        $ac1, s3, t7
    extr_r.w    t1, $ac1, 16
    addiu       s0, s0, 8
    addiu       s1, s1, 8
    bne         s5, t8, 5b
    sb          t1, -1(t8)
/* Special case for last column */
    lh          v0, 0(s2)
    lh          v1, 0(t9)
    lh          t0, 0(s0)
    lh          t1, 0(s1)
    ins         v0, v1, 16, 16
    ins         t0, t1, 16, 16
    raddu.w.qb  t2, v0
    raddu.w.qb  s3, t0
    lbu         v0, -1(s2)
    lbu         v1, 1(s2)
    lbu         t0, -1(t9)
    lbu         t1, 1(t9)
    addu        v0, v0, v1
    mult        $ac1, t2, t6
    addu        t0, t0, t1
    lbu         t2, 1(s0)
    addu        t0, t0, v0
    lbu         t3, 1(s1)
    addu        s3, t0, s3
    lbu         v0, -1(s0)
    lbu         t0, -1(s1)
    sll         s3, s3, 1
    addu        v0, v0, t2
    addu        t0, t0, t3
    addu        t0, t0, v0
    addu        s3, t0, s3
    madd        $ac1, s3, t7
    extr_r.w    t0, $ac1, 16
    addiu       t5, t5, 2
    sb          t0, 0(t8)
    addiu       t4, t4, 1
    bne         t4, a2, 3b
    addiu       t5, t5, 2

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j           ra
     nop

END(jsimd_h2v2_smooth_downsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_int_upsample_mips_dspr2)
/*
 * a0     - upsample->h_expand[compptr->component_index]
 * a1     - upsample->v_expand[compptr->component_index]
 * a2     - input_data
 * a3     - output_data_ptr
 * 16(sp) - cinfo->output_width
 * 20(sp) - cinfo->max_v_samp_factor
 */
    .set at

    SAVE_REGS_ON_STACK 16, s0, s1, s2, s3

    lw      s0, 0(a3)    // s0 = output_data
    lw      s1, 32(sp)   // s1 = cinfo->output_width
    lw      s2, 36(sp)   // s2 = cinfo->max_v_samp_factor
    li      t6, 0        // t6 = inrow
    beqz    s2, 10f
     li     s3, 0        // s3 = outrow
0:
    addu    t0, a2, t6
    addu    t7, s0, s3
    lw      t3, 0(t0)    // t3 = inptr
    lw      t8, 0(t7)    // t8 = outptr
    beqz    s1, 4f
     addu   t5, t8, s1   // t5 = outend
1:
    lb      t2, 0(t3)    // t2 = invalue = *inptr++
    addiu   t3, 1
    beqz    a0, 3f
     move   t0, a0       // t0 = h_expand
2:
    sb      t2, 0(t8)
    addiu   t0, -1
    bgtz    t0, 2b
     addiu  t8, 1
3:
    bgt     t5, t8, 1b
     nop
4:
    addiu   t9, a1, -1   // t9 = v_expand - 1
    blez    t9, 9f
     nop
5:
    lw      t3, 0(s0)
    lw      t4, 4(s0)
    subu    t0, s1, 0xF
    blez    t0, 7f
     addu   t5, t3, s1   // t5 = end address
    andi    t7, s1, 0xF  // t7 = residual
    subu    t8, t5, t7
6:
    ulw     t0, 0(t3)
    ulw     t1, 4(t3)
    ulw     t2, 8(t3)
    usw     t0, 0(t4)
    ulw     t0, 12(t3)
    usw     t1, 4(t4)
    usw     t2, 8(t4)
    usw     t0, 12(t4)
    addiu   t3, 16
    bne     t3, t8, 6b
     addiu  t4, 16
    beqz    t7, 8f
     nop
7:
    lbu     t0, 0(t3)
    sb      t0, 0(t4)
    addiu   t3, 1
    bne     t3, t5, 7b
     addiu  t4, 1
8:
    addiu   t9, -1
    bgtz    t9, 5b
     addiu  s0, 8
9:
    addu    s3, s3, a1
    bne     s3, s2, 0b
     addiu  t6, 1
10:
    RESTORE_REGS_FROM_STACK 16, s0, s1, s2, s3

    j       ra
     nop
END(jsimd_int_upsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v1_upsample_mips_dspr2)
/*
 * a0     - cinfo->max_v_samp_factor
 * a1     - cinfo->output_width
 * a2     - input_data
 * a3     - output_data_ptr
 */
    lw      t7, 0(a3)       // t7 = output_data
    andi    t8, a1, 0xf     // t8 = residual
    sll     t0, a0, 2
    blez    a0, 4f
     addu   t9, t7, t0      // t9 = output_data end address
0:
    lw      t5, 0(t7)       // t5 = outptr
    lw      t6, 0(a2)       // t6 = inptr
    addu    t3, t5, a1      // t3 = outptr + output_width (end address)
    subu    t3, t8          // t3 = end address - residual
    beq     t5, t3, 2f
     move   t4, t8
1:
    ulw     t0, 0(t6)       // t0 = |P3|P2|P1|P0|
    ulw     t2, 4(t6)       // t2 = |P7|P6|P5|P4|
    srl     t1, t0, 16      // t1 = |X|X|P3|P2|
    ins     t0, t0, 16, 16  // t0 = |P1|P0|P1|P0|
    ins     t1, t1, 16, 16  // t1 = |P3|P2|P3|P2|
    ins     t0, t0, 8, 16   // t0 = |P1|P1|P0|P0|
    ins     t1, t1, 8, 16   // t1 = |P3|P3|P2|P2|
    usw     t0, 0(t5)
    usw     t1, 4(t5)
    srl     t0, t2, 16      // t0 = |X|X|P7|P6|
    ins     t2, t2, 16, 16  // t2 = |P5|P4|P5|P4|
    ins     t0, t0, 16, 16  // t0 = |P7|P6|P7|P6|
    ins     t2, t2, 8, 16   // t2 = |P5|P5|P4|P4|
    ins     t0, t0, 8, 16   // t0 = |P7|P7|P6|P6|
    usw     t2, 8(t5)
    usw     t0, 12(t5)
    addiu   t5, 16
    bne     t5, t3, 1b
     addiu  t6, 8
    beqz    t8, 3f
     move   t4, t8
2:
    lbu     t1, 0(t6)
    sb      t1, 0(t5)
    sb      t1, 1(t5)
    addiu   t4, -2
    addiu   t6, 1
    bgtz    t4, 2b
     addiu  t5, 2
3:
    addiu   t7, 4
    bne     t9, t7, 0b
     addiu  a2, 4
4:
    j       ra
     nop
END(jsimd_h2v1_upsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_h2v2_upsample_mips_dspr2)
/*
 * a0     - cinfo->max_v_samp_factor
 * a1     - cinfo->output_width
 * a2     - input_data
 * a3     - output_data_ptr
 */
    lw      t7, 0(a3)
    blez    a0, 7f
     andi   t9, a1, 0xf     // t9 = residual
0:
    lw      t6, 0(a2)       // t6 = inptr
    lw      t5, 0(t7)       // t5 = outptr
    addu    t8, t5, a1      // t8 = outptr end address
    subu    t8, t9          // t8 = end address - residual
    beq     t5, t8, 2f
     move   t4, t9
1:
    ulw     t0, 0(t6)
    srl     t1, t0, 16
    ins     t0, t0, 16, 16
    ins     t0, t0, 8, 16
    ins     t1, t1, 16, 16
    ins     t1, t1, 8, 16
    ulw     t2, 4(t6)
    usw     t0, 0(t5)
    usw     t1, 4(t5)
    srl     t3, t2, 16
    ins     t2, t2, 16, 16
    ins     t2, t2, 8, 16
    ins     t3, t3, 16, 16
    ins     t3, t3, 8, 16
    usw     t2, 8(t5)
    usw     t3, 12(t5)
    addiu   t5, 16
    bne     t5, t8, 1b
     addiu  t6, 8
    beqz    t9, 3f
     move   t4, t9
2:
    lbu     t0, 0(t6)
    sb      t0, 0(t5)
    sb      t0, 1(t5)
    addiu   t4, -2
    addiu   t6, 1
    bgtz    t4, 2b
     addiu  t5, 2
3:
    lw      t6, 0(t7)       // t6 = outptr[0]
    lw      t5, 4(t7)       // t5 = outptr[1]
    addu    t4, t6, a1      // t4 = new end address
    beq     a1, t9, 5f
     subu   t8, t4, t9
4:
    ulw     t0, 0(t6)
    ulw     t1, 4(t6)
    ulw     t2, 8(t6)
    usw     t0, 0(t5)
    ulw     t0, 12(t6)
    usw     t1, 4(t5)
    usw     t2, 8(t5)
    usw     t0, 12(t5)
    addiu   t6, 16
    bne     t6, t8, 4b
     addiu  t5, 16
    beqz    t9, 6f
     nop
5:
    lbu     t0, 0(t6)
    sb      t0, 0(t5)
    addiu   t6, 1
    bne     t6, t4, 5b
     addiu  t5, 1
6:
    addiu   t7, 8
    addiu   a0, -2
    bgtz    a0, 0b
     addiu  a2, 4
7:
    j       ra
     nop
END(jsimd_h2v2_upsample_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_islow_mips_dspr2)
/*
 * a0     - coef_block
 * a1     - compptr->dcttable
 * a2     - output
 * a3     - range_limit
 */

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    addiu     sp, sp, -256
    move      v0, sp
    addiu     v1, zero, 8      // v1 = DCTSIZE = 8
1:
    lh        s4, 32(a0)       // s4 = inptr[16]
    lh        s5, 64(a0)       // s5 = inptr[32]
    lh        s6, 96(a0)       // s6 = inptr[48]
    lh        t1, 112(a0)      // t1 = inptr[56]
    lh        t7, 16(a0)       // t7 = inptr[8]
    lh        t5, 80(a0)       // t5 = inptr[40]
    lh        t3, 48(a0)       // t3 = inptr[24]
    or        s4, s4, t1
    or        s4, s4, t3
    or        s4, s4, t5
    or        s4, s4, t7
    or        s4, s4, s5
    or        s4, s4, s6
    bnez      s4, 2f
     addiu    v1, v1, -1
    lh        s5, 0(a1)        // quantptr[DCTSIZE*0]
    lh        s6, 0(a0)        // inptr[DCTSIZE*0]
    mul       s5, s5, s6       // DEQUANTIZE(inptr[0], quantptr[0])
    sll       s5, s5, 2
    sw        s5, 0(v0)
    sw        s5, 32(v0)
    sw        s5, 64(v0)
    sw        s5, 96(v0)
    sw        s5, 128(v0)
    sw        s5, 160(v0)
    sw        s5, 192(v0)
    b         3f
     sw       s5, 224(v0)
2:
    lh        t0, 112(a1)
    lh        t2, 48(a1)
    lh        t4, 80(a1)
    lh        t6, 16(a1)
    mul       t0, t0, t1       // DEQUANTIZE(inptr[DCTSIZE*7],quant[DCTSIZE*7])
    mul       t1, t2, t3       // DEQUANTIZE(inptr[DCTSIZE*3],quant[DCTSIZE*3])
    mul       t2, t4, t5       // DEQUANTIZE(inptr[DCTSIZE*5],quant[DCTSIZE*5])
    mul       t3, t6, t7       // DEQUANTIZE(inptr[DCTSIZE*1],quant[DCTSIZE*1])
    lh        t4, 32(a1)
    lh        t5, 32(a0)
    lh        t6, 96(a1)
    lh        t7, 96(a0)
    addu      s0, t0, t1       // z3 = tmp0 + tmp2
    addu      s1, t1, t2       // z2 = tmp1 + tmp2
    addu      s2, t2, t3       // z4 = tmp1 + tmp3
    addu      s3, s0, s2       // z3 + z4
    addiu     t9, zero, 9633   // FIX_1_175875602
    mul       s3, s3, t9       // z5 = MULTIPLY(z3 + z4, FIX_1_175875602)
    addu      t8, t0, t3       // z1 = tmp0 + tmp3
    addiu     t9, zero, 2446   // FIX_0_298631336
    mul       t0, t0, t9       // tmp0 = MULTIPLY(tmp0, FIX_0_298631336)
    addiu     t9, zero, 16819  // FIX_2_053119869
    mul       t2, t2, t9       // tmp1 = MULTIPLY(tmp1, FIX_2_053119869)
    addiu     t9, zero, 25172  // FIX_3_072711026
    mul       t1, t1, t9       // tmp2 = MULTIPLY(tmp2, FIX_3_072711026)
    addiu     t9, zero, 12299  // FIX_1_501321110
    mul       t3, t3, t9       // tmp3 = MULTIPLY(tmp3, FIX_1_501321110)
    addiu     t9, zero, 16069  // FIX_1_961570560
    mul       s0, s0, t9       // -z3 = MULTIPLY(z3, FIX_1_961570560)
    addiu     t9, zero, 3196   // FIX_0_390180644
    mul       s2, s2, t9       // -z4 = MULTIPLY(z4, FIX_0_390180644)
    addiu     t9, zero, 7373   // FIX_0_899976223
    mul       t8, t8, t9       // -z1 = MULTIPLY(z1, FIX_0_899976223)
    addiu     t9, zero, 20995  // FIX_2_562915447
    mul       s1, s1, t9       // -z2 = MULTIPLY(z2, FIX_2_562915447)
    subu      s0, s3, s0       // z3 += z5
    addu      t0, t0, s0       // tmp0 += z3
    addu      t1, t1, s0       // tmp2 += z3
    subu      s2, s3, s2       // z4 += z5
    addu      t2, t2, s2       // tmp1 += z4
    addu      t3, t3, s2       // tmp3 += z4
    subu      t0, t0, t8       // tmp0 += z1
    subu      t1, t1, s1       // tmp2 += z2
    subu      t2, t2, s1       // tmp1 += z2
    subu      t3, t3, t8       // tmp3 += z1
    mul       s0, t4, t5       // DEQUANTIZE(inptr[DCTSIZE*2],quant[DCTSIZE*2])
    addiu     t9, zero, 6270   // FIX_0_765366865
    mul       s1, t6, t7       // DEQUANTIZE(inptr[DCTSIZE*6],quant[DCTSIZE*6])
    lh        t4, 0(a1)
    lh        t5, 0(a0)
    lh        t6, 64(a1)
    lh        t7, 64(a0)
    mul       s2, t9, s0       // MULTIPLY(z2, FIX_0_765366865)
    mul       t5, t4, t5       // DEQUANTIZE(inptr[DCTSIZE*0],quant[DCTSIZE*0])
    mul       t6, t6, t7       // DEQUANTIZE(inptr[DCTSIZE*4],quant[DCTSIZE*4])
    addiu     t9, zero, 4433   // FIX_0_541196100
    addu      s3, s0, s1       // z2 + z3
    mul       s3, s3, t9       // z1 = MULTIPLY(z2 + z3, FIX_0_541196100)
    addiu     t9, zero, 15137  // FIX_1_847759065
    mul       t8, s1, t9       // MULTIPLY(z3, FIX_1_847759065)
    addu      t4, t5, t6
    subu      t5, t5, t6
    sll       t4, t4, 13       // tmp0 = (z2 + z3) << CONST_BITS
    sll       t5, t5, 13       // tmp1 = (z2 - z3) << CONST_BITS
    addu      t7, s3, s2       // tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865)
    subu      t6, s3, t8       // tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065)
    addu      s0, t4, t7
    subu      s1, t4, t7
    addu      s2, t5, t6
    subu      s3, t5, t6
    addu      t4, s0, t3
    subu      s0, s0, t3
    addu      t3, s2, t1
    subu      s2, s2, t1
    addu      t1, s3, t2
    subu      s3, s3, t2
    addu      t2, s1, t0
    subu      s1, s1, t0
    shra_r.w  t4, t4, 11
    shra_r.w  t3, t3, 11
    shra_r.w  t1, t1, 11
    shra_r.w  t2, t2, 11
    shra_r.w  s1, s1, 11
    shra_r.w  s3, s3, 11
    shra_r.w  s2, s2, 11
    shra_r.w  s0, s0, 11
    sw        t4, 0(v0)
    sw        t3, 32(v0)
    sw        t1, 64(v0)
    sw        t2, 96(v0)
    sw        s1, 128(v0)
    sw        s3, 160(v0)
    sw        s2, 192(v0)
    sw        s0, 224(v0)
3:
    addiu     a1, a1, 2
    addiu     a0, a0, 2
    bgtz      v1, 1b
     addiu    v0, v0, 4
    move      v0, sp
    addiu     v1, zero, 8
4:
    lw        t0, 8(v0)        // z2 = (JLONG) wsptr[2]
    lw        t1, 24(v0)       // z3 = (JLONG) wsptr[6]
    lw        t2, 0(v0)        // (JLONG) wsptr[0]
    lw        t3, 16(v0)       // (JLONG) wsptr[4]
    lw        s4, 4(v0)        // (JLONG) wsptr[1]
    lw        s5, 12(v0)       // (JLONG) wsptr[3]
    lw        s6, 20(v0)       // (JLONG) wsptr[5]
    lw        s7, 28(v0)       // (JLONG) wsptr[7]
    or        s4, s4, t0
    or        s4, s4, t1
    or        s4, s4, t3
    or        s4, s4, s7
    or        s4, s4, s5
    or        s4, s4, s6
    bnez      s4, 5f
     addiu    v1, v1, -1
    shra_r.w  s5, t2, 5
    andi      s5, s5, 0x3ff
    lbux      s5, s5(a3)
    lw        s1, 0(a2)
    replv.qb  s5, s5
    usw       s5, 0(s1)
    usw       s5, 4(s1)
    b         6f
     nop
5:
    addu      t4, t0, t1       // z2 + z3
    addiu     t8, zero, 4433   // FIX_0_541196100
    mul       t5, t4, t8       // z1 = MULTIPLY(z2 + z3, FIX_0_541196100)
    addiu     t8, zero, 15137  // FIX_1_847759065
    mul       t1, t1, t8       // MULTIPLY(z3, FIX_1_847759065)
    addiu     t8, zero, 6270   // FIX_0_765366865
    mul       t0, t0, t8       // MULTIPLY(z2, FIX_0_765366865)
    addu      t4, t2, t3       // (JLONG) wsptr[0] + (JLONG) wsptr[4]
    subu      t2, t2, t3       // (JLONG) wsptr[0] - (JLONG) wsptr[4]
    sll       t4, t4, 13       // tmp0 = ((wsptr[0] + wsptr[4]) << CONST_BITS
    sll       t2, t2, 13       // tmp1 = ((wsptr[0] - wsptr[4]) << CONST_BITS
    subu      t1, t5, t1       // tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065)
    subu      t3, t2, t1       // tmp12 = tmp1 - tmp2
    addu      t2, t2, t1       // tmp11 = tmp1 + tmp2
    addu      t5, t5, t0       // tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865)
    subu      t1, t4, t5       // tmp13 = tmp0 - tmp3
    addu      t0, t4, t5       // tmp10 = tmp0 + tmp3
    lw        t4, 28(v0)       // tmp0 = (JLONG) wsptr[7]
    lw        t6, 12(v0)       // tmp2 = (JLONG) wsptr[3]
    lw        t5, 20(v0)       // tmp1 = (JLONG) wsptr[5]
    lw        t7, 4(v0)        // tmp3 = (JLONG) wsptr[1]
    addu      s0, t4, t6       // z3 = tmp0 + tmp2
    addiu     t8, zero, 9633   // FIX_1_175875602
    addu      s1, t5, t7       // z4 = tmp1 + tmp3
    addu      s2, s0, s1       // z3 + z4
    mul       s2, s2, t8       // z5 = MULTIPLY(z3 + z4, FIX_1_175875602)
    addu      s3, t4, t7       // z1 = tmp0 + tmp3
    addu      t9, t5, t6       // z2 = tmp1 + tmp2
    addiu     t8, zero, 16069  // FIX_1_961570560
    mul       s0, s0, t8       // -z3 = MULTIPLY(z3, FIX_1_961570560)
    addiu     t8, zero, 3196   // FIX_0_390180644
    mul       s1, s1, t8       // -z4 = MULTIPLY(z4, FIX_0_390180644)
    addiu     t8, zero, 2446   // FIX_0_298631336
    mul       t4, t4, t8       // tmp0 = MULTIPLY(tmp0, FIX_0_298631336)
    addiu     t8, zero, 7373   // FIX_0_899976223
    mul       s3, s3, t8       // -z1 = MULTIPLY(z1, FIX_0_899976223)
    addiu     t8, zero, 16819  // FIX_2_053119869
    mul       t5, t5, t8       // tmp1 = MULTIPLY(tmp1, FIX_2_053119869)
    addiu     t8, zero, 20995  // FIX_2_562915447
    mul       t9, t9, t8       // -z2 = MULTIPLY(z2, FIX_2_562915447)
    addiu     t8, zero, 25172  // FIX_3_072711026
    mul       t6, t6, t8       // tmp2 = MULTIPLY(tmp2, FIX_3_072711026)
    addiu     t8, zero, 12299  // FIX_1_501321110
    mul       t7, t7, t8       // tmp3 = MULTIPLY(tmp3, FIX_1_501321110)
    subu      s0, s2, s0       // z3 += z5
    subu      s1, s2, s1       // z4 += z5
    addu      t4, t4, s0
    subu      t4, t4, s3       // tmp0
    addu      t5, t5, s1
    subu      t5, t5, t9       // tmp1
    addu      t6, t6, s0
    subu      t6, t6, t9       // tmp2
    addu      t7, t7, s1
    subu      t7, t7, s3       // tmp3
    addu      s0, t0, t7
    subu      t0, t0, t7
    addu      t7, t2, t6
    subu      t2, t2, t6
    addu      t6, t3, t5
    subu      t3, t3, t5
    addu      t5, t1, t4
    subu      t1, t1, t4
    shra_r.w  s0, s0, 18
    shra_r.w  t7, t7, 18
    shra_r.w  t6, t6, 18
    shra_r.w  t5, t5, 18
    shra_r.w  t1, t1, 18
    shra_r.w  t3, t3, 18
    shra_r.w  t2, t2, 18
    shra_r.w  t0, t0, 18
    andi      s0, s0, 0x3ff
    andi      t7, t7, 0x3ff
    andi      t6, t6, 0x3ff
    andi      t5, t5, 0x3ff
    andi      t1, t1, 0x3ff
    andi      t3, t3, 0x3ff
    andi      t2, t2, 0x3ff
    andi      t0, t0, 0x3ff
    lw        s1, 0(a2)
    lbux      s0, s0(a3)
    lbux      t7, t7(a3)
    lbux      t6, t6(a3)
    lbux      t5, t5(a3)
    lbux      t1, t1(a3)
    lbux      t3, t3(a3)
    lbux      t2, t2(a3)
    lbux      t0, t0(a3)
    sb        s0, 0(s1)
    sb        t7, 1(s1)
    sb        t6, 2(s1)
    sb        t5, 3(s1)
    sb        t1, 4(s1)
    sb        t3, 5(s1)
    sb        t2, 6(s1)
    sb        t0, 7(s1)
6:
    addiu     v0, v0, 32
    bgtz      v1, 4b
     addiu    a2, a2, 4
    addiu     sp, sp, 256

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j         ra
     nop

END(jsimd_idct_islow_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_ifast_cols_mips_dspr2)
/*
 * a0     - inptr
 * a1     - quantptr
 * a2     - wsptr
 * a3     - mips_idct_ifast_coefs
 */

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    addiu          t9, a0, 16            // end address
    or             AT, a3, zero

0:
    lw             s0, 0(a1)             // quantptr[DCTSIZE*0]
    lw             t0, 0(a0)             // inptr[DCTSIZE*0]
    lw             t1, 16(a0)            // inptr[DCTSIZE*1]
    muleq_s.w.phl  v0, t0, s0            // tmp0 ...
    lw             t2, 32(a0)            // inptr[DCTSIZE*2]
    lw             t3, 48(a0)            // inptr[DCTSIZE*3]
    lw             t4, 64(a0)            // inptr[DCTSIZE*4]
    lw             t5, 80(a0)            // inptr[DCTSIZE*5]
    muleq_s.w.phr  t0, t0, s0            // ... tmp0 ...
    lw             t6, 96(a0)            // inptr[DCTSIZE*6]
    lw             t7, 112(a0)           // inptr[DCTSIZE*7]
    or             s4, t1, t2
    or             s5, t3, t4
    bnez           s4, 1f
     ins           t0, v0, 16, 16        // ... tmp0
    bnez           s5, 1f
     or            s6, t5, t6
    or             s6, s6, t7
    bnez           s6, 1f
     sw            t0, 0(a2)             // wsptr[DCTSIZE*0]
    sw             t0, 16(a2)            // wsptr[DCTSIZE*1]
    sw             t0, 32(a2)            // wsptr[DCTSIZE*2]
    sw             t0, 48(a2)            // wsptr[DCTSIZE*3]
    sw             t0, 64(a2)            // wsptr[DCTSIZE*4]
    sw             t0, 80(a2)            // wsptr[DCTSIZE*5]
    sw             t0, 96(a2)            // wsptr[DCTSIZE*6]
    sw             t0, 112(a2)           // wsptr[DCTSIZE*7]
    addiu          a0, a0, 4
    b              2f
     addiu         a1, a1, 4

1:
    lw             s1, 32(a1)            // quantptr[DCTSIZE*2]
    lw             s2, 64(a1)            // quantptr[DCTSIZE*4]
    muleq_s.w.phl  v0, t2, s1            // tmp1 ...
    muleq_s.w.phr  t2, t2, s1            // ... tmp1 ...
    lw             s0, 16(a1)            // quantptr[DCTSIZE*1]
    lw             s1, 48(a1)            // quantptr[DCTSIZE*3]
    lw             s3, 96(a1)            // quantptr[DCTSIZE*6]
    muleq_s.w.phl  v1, t4, s2            // tmp2 ...
    muleq_s.w.phr  t4, t4, s2            // ... tmp2 ...
    lw             s2, 80(a1)            // quantptr[DCTSIZE*5]
    lw             t8, 4(AT)             // FIX(1.414213562)
    ins            t2, v0, 16, 16        // ... tmp1
    muleq_s.w.phl  v0, t6, s3            // tmp3 ...
    muleq_s.w.phr  t6, t6, s3            // ... tmp3 ...
    ins            t4, v1, 16, 16        // ... tmp2
    addq.ph        s4, t0, t4            // tmp10
    subq.ph        s5, t0, t4            // tmp11
    ins            t6, v0, 16, 16        // ... tmp3
    subq.ph        s6, t2, t6            // tmp12 ...
    addq.ph        s7, t2, t6            // tmp13
    mulq_s.ph      s6, s6, t8            // ... tmp12 ...
    addq.ph        t0, s4, s7            // tmp0
    subq.ph        t6, s4, s7            // tmp3
    muleq_s.w.phl  v0, t1, s0            // tmp4 ...
    muleq_s.w.phr  t1, t1, s0            // ... tmp4 ...
    shll_s.ph      s6, s6, 1             // x2
    lw             s3, 112(a1)           // quantptr[DCTSIZE*7]
    subq.ph        s6, s6, s7            // ... tmp12
    muleq_s.w.phl  v1, t7, s3            // tmp7 ...
    muleq_s.w.phr  t7, t7, s3            // ... tmp7 ...
    ins            t1, v0, 16, 16        // ... tmp4
    addq.ph        t2, s5, s6            // tmp1
    subq.ph        t4, s5, s6            // tmp2
    muleq_s.w.phl  v0, t5, s2            // tmp6 ...
    muleq_s.w.phr  t5, t5, s2            // ... tmp6 ...
    ins            t7, v1, 16, 16        // ... tmp7
    addq.ph        s5, t1, t7            // z11
    subq.ph        s6, t1, t7            // z12
    muleq_s.w.phl  v1, t3, s1            // tmp5 ...
    muleq_s.w.phr  t3, t3, s1            // ... tmp5 ...
    ins            t5, v0, 16, 16        // ... tmp6
    ins            t3, v1, 16, 16        // ... tmp5
    addq.ph        s7, t5, t3            // z13
    subq.ph        v0, t5, t3            // z10
    addq.ph        t7, s5, s7            // tmp7
    subq.ph        s5, s5, s7            // tmp11 ...
    addq.ph        v1, v0, s6            // z5 ...
    mulq_s.ph      s5, s5, t8            // ... tmp11
    lw             t8, 8(AT)             // FIX(1.847759065)
    lw             s4, 0(AT)             // FIX(1.082392200)
    addq.ph        s0, t0, t7
    subq.ph        s1, t0, t7
    mulq_s.ph      v1, v1, t8            // ... z5
    shll_s.ph      s5, s5, 1             // x2
    lw             t8, 12(AT)            // FIX(-2.613125930)
    sw             s0, 0(a2)             // wsptr[DCTSIZE*0]
    shll_s.ph      v0, v0, 1             // x4
    mulq_s.ph      v0, v0, t8            // tmp12 ...
    mulq_s.ph      s4, s6, s4            // tmp10 ...
    shll_s.ph      v1, v1, 1             // x2
    addiu          a0, a0, 4
    addiu          a1, a1, 4
    sw             s1, 112(a2)           // wsptr[DCTSIZE*7]
    shll_s.ph      s6, v0, 1             // x4
    shll_s.ph      s4, s4, 1             // x2
    addq.ph        s6, s6, v1            // ... tmp12
    subq.ph        t5, s6, t7            // tmp6
    subq.ph        s4, s4, v1            // ... tmp10
    subq.ph        t3, s5, t5            // tmp5
    addq.ph        s2, t2, t5
    addq.ph        t1, s4, t3            // tmp4
    subq.ph        s3, t2, t5
    sw             s2, 16(a2)            // wsptr[DCTSIZE*1]
    sw             s3, 96(a2)            // wsptr[DCTSIZE*6]
    addq.ph        v0, t4, t3
    subq.ph        v1, t4, t3
    sw             v0, 32(a2)            // wsptr[DCTSIZE*2]
    sw             v1, 80(a2)            // wsptr[DCTSIZE*5]
    addq.ph        v0, t6, t1
    subq.ph        v1, t6, t1
    sw             v0, 64(a2)            // wsptr[DCTSIZE*4]
    sw             v1, 48(a2)            // wsptr[DCTSIZE*3]

2:
    bne            a0, t9, 0b
     addiu         a2, a2, 4

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j              ra
     nop

END(jsimd_idct_ifast_cols_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_ifast_rows_mips_dspr2)
/*
 * a0     - wsptr
 * a1     - output_buf
 * a2     - output_col
 * a3     - mips_idct_ifast_coefs
 */

    SAVE_REGS_ON_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, s8, a3

    addiu         t9, a0, 128        // end address
    lui           s8, 0x8080
    ori           s8, s8, 0x8080

0:
    lw            AT, 36(sp)         // restore $a3 (mips_idct_ifast_coefs)
    lw            t0, 0(a0)          // wsptr[DCTSIZE*0+0/1]  b a
    lw            s0, 16(a0)         // wsptr[DCTSIZE*1+0/1]  B A
    lw            t2, 4(a0)          // wsptr[DCTSIZE*0+2/3]  d c
    lw            s2, 20(a0)         // wsptr[DCTSIZE*1+2/3]  D C
    lw            t4, 8(a0)          // wsptr[DCTSIZE*0+4/5]  f e
    lw            s4, 24(a0)         // wsptr[DCTSIZE*1+4/5]  F E
    lw            t6, 12(a0)         // wsptr[DCTSIZE*0+6/7]  h g
    lw            s6, 28(a0)         // wsptr[DCTSIZE*1+6/7]  H G
    precrq.ph.w   t1, s0, t0         // B b
    ins           t0, s0, 16, 16     // A a
    bnez          t1, 1f
     or           s0, t2, s2
    bnez          s0, 1f
     or           s0, t4, s4
    bnez          s0, 1f
     or           s0, t6, s6
    bnez          s0, 1f
     shll_s.ph    s0, t0, 2          // A a
    lw            a3, 0(a1)
    lw            AT, 4(a1)
    precrq.ph.w   t0, s0, s0         // A A
    ins           s0, s0, 16, 16     // a a
    addu          a3, a3, a2
    addu          AT, AT, a2
    precrq.qb.ph  t0, t0, t0         // A A A A
    precrq.qb.ph  s0, s0, s0         // a a a a
    addu.qb       s0, s0, s8
    addu.qb       t0, t0, s8
    sw            s0, 0(a3)
    sw            s0, 4(a3)
    sw            t0, 0(AT)
    sw            t0, 4(AT)
    addiu         a0, a0, 32
    bne           a0, t9, 0b
     addiu        a1, a1, 8
    b             2f
     nop

1:
    precrq.ph.w   t3, s2, t2
    ins           t2, s2, 16, 16
    precrq.ph.w   t5, s4, t4
    ins           t4, s4, 16, 16
    precrq.ph.w   t7, s6, t6
    ins           t6, s6, 16, 16
    lw            t8, 4(AT)          // FIX(1.414213562)
    addq.ph       s4, t0, t4         // tmp10
    subq.ph       s5, t0, t4         // tmp11
    subq.ph       s6, t2, t6         // tmp12 ...
    addq.ph       s7, t2, t6         // tmp13
    mulq_s.ph     s6, s6, t8         // ... tmp12 ...
    addq.ph       t0, s4, s7         // tmp0
    subq.ph       t6, s4, s7         // tmp3
    shll_s.ph     s6, s6, 1          // x2
    subq.ph       s6, s6, s7         // ... tmp12
    addq.ph       t2, s5, s6         // tmp1
    subq.ph       t4, s5, s6         // tmp2
    addq.ph       s5, t1, t7         // z11
    subq.ph       s6, t1, t7         // z12
    addq.ph       s7, t5, t3         // z13
    subq.ph       v0, t5, t3         // z10
    addq.ph       t7, s5, s7         // tmp7
    subq.ph       s5, s5, s7         // tmp11 ...
    addq.ph       v1, v0, s6         // z5 ...
    mulq_s.ph     s5, s5, t8         // ... tmp11
    lw            t8, 8(AT)          // FIX(1.847759065)
    lw            s4, 0(AT)          // FIX(1.082392200)
    addq.ph       s0, t0, t7         // tmp0 + tmp7
    subq.ph       s7, t0, t7         // tmp0 - tmp7
    mulq_s.ph     v1, v1, t8         // ... z5
    lw            a3, 0(a1)
    lw            t8, 12(AT)         // FIX(-2.613125930)
    shll_s.ph     s5, s5, 1          // x2
    addu          a3, a3, a2
    shll_s.ph     v0, v0, 1          // x4
    mulq_s.ph     v0, v0, t8         // tmp12 ...
    mulq_s.ph     s4, s6, s4         // tmp10 ...
    shll_s.ph     v1, v1, 1          // x2
    addiu         a0, a0, 32
    addiu         a1, a1, 8
    shll_s.ph     s6, v0, 1          // x4
    shll_s.ph     s4, s4, 1          // x2
    addq.ph       s6, s6, v1         // ... tmp12
    shll_s.ph     s0, s0, 2
    subq.ph       t5, s6, t7         // tmp6
    subq.ph       s4, s4, v1         // ... tmp10
    subq.ph       t3, s5, t5         // tmp5
    shll_s.ph     s7, s7, 2
    addq.ph       t1, s4, t3         // tmp4
    addq.ph       s1, t2, t5         // tmp1 + tmp6
    subq.ph       s6, t2, t5         // tmp1 - tmp6
    addq.ph       s2, t4, t3         // tmp2 + tmp5
    subq.ph       s5, t4, t3         // tmp2 - tmp5
    addq.ph       s4, t6, t1         // tmp3 + tmp4
    subq.ph       s3, t6, t1         // tmp3 - tmp4
    shll_s.ph     s1, s1, 2
    shll_s.ph     s2, s2, 2
    shll_s.ph     s3, s3, 2
    shll_s.ph     s4, s4, 2
    shll_s.ph     s5, s5, 2
    shll_s.ph     s6, s6, 2
    precrq.ph.w   t0, s1, s0         // B A
    ins           s0, s1, 16, 16     // b a
    precrq.ph.w   t2, s3, s2         // D C
    ins           s2, s3, 16, 16     // d c
    precrq.ph.w   t4, s5, s4         // F E
    ins           s4, s5, 16, 16     // f e
    precrq.ph.w   t6, s7, s6         // H G
    ins           s6, s7, 16, 16     // h g
    precrq.qb.ph  t0, t2, t0         // D C B A
    precrq.qb.ph  s0, s2, s0         // d c b a
    precrq.qb.ph  t4, t6, t4         // H G F E
    precrq.qb.ph  s4, s6, s4         // h g f e
    addu.qb       s0, s0, s8
    addu.qb       s4, s4, s8
    sw            s0, 0(a3)          // outptr[0/1/2/3]       d c b a
    sw            s4, 4(a3)          // outptr[4/5/6/7]       h g f e
    lw            a3, -4(a1)
    addu.qb       t0, t0, s8
    addu          a3, a3, a2
    addu.qb       t4, t4, s8
    sw            t0, 0(a3)          // outptr[0/1/2/3]       D C B A
    bne           a0, t9, 0b
     sw           t4, 4(a3)          // outptr[4/5/6/7]       H G F E

2:

    RESTORE_REGS_FROM_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, s8, a3

    j             ra
     nop

END(jsimd_idct_ifast_rows_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_fdct_islow_mips_dspr2)
/*
 * a0     - data
 */

    SAVE_REGS_ON_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, s8

    lui       t0, 6437
    ori       t0, 2260
    lui       t1, 9633
    ori       t1, 11363
    lui       t2, 0xd39e
    ori       t2, 0xe6dc
    lui       t3, 0xf72d
    ori       t3, 9633
    lui       t4, 2261
    ori       t4, 9633
    lui       t5, 0xd39e
    ori       t5, 6437
    lui       t6, 9633
    ori       t6, 0xd39d
    lui       t7, 0xe6dc
    ori       t7, 2260
    lui       t8, 4433
    ori       t8, 10703
    lui       t9, 0xd630
    ori       t9, 4433
    li        s8, 8
    move      a1, a0
1:
    lw        s0, 0(a1)     // tmp0 = 1|0
    lw        s1, 4(a1)     // tmp1 = 3|2
    lw        s2, 8(a1)     // tmp2 = 5|4
    lw        s3, 12(a1)    // tmp3 = 7|6
    packrl.ph s1, s1, s1    // tmp1 = 2|3
    packrl.ph s3, s3, s3    // tmp3 = 6|7
    subq.ph   s7, s1, s2    // tmp7 = 2-5|3-4 = t5|t4
    subq.ph   s5, s0, s3    // tmp5 = 1-6|0-7 = t6|t7
    mult      $0, $0        // ac0  = 0
    dpa.w.ph  $ac0, s7, t0  // ac0 += t5*  6437 + t4*  2260
    dpa.w.ph  $ac0, s5, t1  // ac0 += t6*  9633 + t7* 11363
    mult      $ac1, $0, $0  // ac1  = 0
    dpa.w.ph  $ac1, s7, t2  // ac1 += t5*-11362 + t4* -6436
    dpa.w.ph  $ac1, s5, t3  // ac1 += t6* -2259 + t7*  9633
    mult      $ac2, $0, $0  // ac2  = 0
    dpa.w.ph  $ac2, s7, t4  // ac2 += t5*  2261 + t4*  9633
    dpa.w.ph  $ac2, s5, t5  // ac2 += t6*-11362 + t7*  6437
    mult      $ac3, $0, $0  // ac3  = 0
    dpa.w.ph  $ac3, s7, t6  // ac3 += t5*  9633 + t4*-11363
    dpa.w.ph  $ac3, s5, t7  // ac3 += t6* -6436 + t7*  2260
    addq.ph   s6, s1, s2    // tmp6 = 2+5|3+4 = t2|t3
    addq.ph   s4, s0, s3    // tmp4 = 1+6|0+7 = t1|t0
    extr_r.w  s0, $ac0, 11  // tmp0 = (ac0 + 1024) >> 11
    extr_r.w  s1, $ac1, 11  // tmp1 = (ac1 + 1024) >> 11
    extr_r.w  s2, $ac2, 11  // tmp2 = (ac2 + 1024) >> 11
    extr_r.w  s3, $ac3, 11  // tmp3 = (ac3 + 1024) >> 11
    addq.ph   s5, s4, s6    // tmp5 = t1+t2|t0+t3 = t11|t10
    subq.ph   s7, s4, s6    // tmp7 = t1-t2|t0-t3 = t12|t13
    sh        s0, 2(a1)
    sh        s1, 6(a1)
    sh        s2, 10(a1)
    sh        s3, 14(a1)
    mult      $0, $0        // ac0  = 0
    dpa.w.ph  $ac0, s7, t8  // ac0 += t12*  4433 + t13* 10703
    mult      $ac1, $0, $0  // ac1  = 0
    dpa.w.ph  $ac1, s7, t9  // ac1 += t12*-10704 + t13*  4433
    sra       s4, s5, 16    // tmp4 = t11
    addiu     a1, a1, 16
    addiu     s8, s8, -1
    extr_r.w  s0, $ac0, 11  // tmp0 = (ac0 + 1024) >> 11
    extr_r.w  s1, $ac1, 11  // tmp1 = (ac1 + 1024) >> 11
    addu      s2, s5, s4    // tmp2 = t10 + t11
    subu      s3, s5, s4    // tmp3 = t10 - t11
    sll       s2, s2, 2     // tmp2 = (t10 + t11) << 2
    sll       s3, s3, 2     // tmp3 = (t10 - t11) << 2
    sh        s2, -16(a1)
    sh        s3, -8(a1)
    sh        s0, -12(a1)
    bgtz      s8, 1b
     sh       s1, -4(a1)
    li        t0, 2260
    li        t1, 11363
    li        t2, 9633
    li        t3, 6436
    li        t4, 6437
    li        t5, 2261
    li        t6, 11362
    li        t7, 2259
    li        t8, 4433
    li        t9, 10703
    li        a1, 10704
    li        s8, 8

2:
    lh        a2, 0(a0)     // 0
    lh        a3, 16(a0)    // 8
    lh        v0, 32(a0)    // 16
    lh        v1, 48(a0)    // 24
    lh        s4, 64(a0)    // 32
    lh        s5, 80(a0)    // 40
    lh        s6, 96(a0)    // 48
    lh        s7, 112(a0)   // 56
    addu      s2, v0, s5    // tmp2 = 16 + 40
    subu      s5, v0, s5    // tmp5 = 16 - 40
    addu      s3, v1, s4    // tmp3 = 24 + 32
    subu      s4, v1, s4    // tmp4 = 24 - 32
    addu      s0, a2, s7    // tmp0 =  0 + 56
    subu      s7, a2, s7    // tmp7 =  0 - 56
    addu      s1, a3, s6    // tmp1 =  8 + 48
    subu      s6, a3, s6    // tmp6 =  8 - 48
    addu      a2, s0, s3    // tmp10 = tmp0 + tmp3
    subu      v1, s0, s3    // tmp13 = tmp0 - tmp3
    addu      a3, s1, s2    // tmp11 = tmp1 + tmp2
    subu      v0, s1, s2    // tmp12 = tmp1 - tmp2
    mult      s7, t1        // ac0  = tmp7 * c1
    madd      s4, t0        // ac0 += tmp4 * c0
    madd      s5, t4        // ac0 += tmp5 * c4
    madd      s6, t2        // ac0 += tmp6 * c2
    mult      $ac1, s7, t2  // ac1  = tmp7 * c2
    msub      $ac1, s4, t3  // ac1 -= tmp4 * c3
    msub      $ac1, s5, t6  // ac1 -= tmp5 * c6
    msub      $ac1, s6, t7  // ac1 -= tmp6 * c7
    mult      $ac2, s7, t4  // ac2  = tmp7 * c4
    madd      $ac2, s4, t2  // ac2 += tmp4 * c2
    madd      $ac2, s5, t5  // ac2 += tmp5 * c5
    msub      $ac2, s6, t6  // ac2 -= tmp6 * c6
    mult      $ac3, s7, t0  // ac3  = tmp7 * c0
    msub      $ac3, s4, t1  // ac3 -= tmp4 * c1
    madd      $ac3, s5, t2  // ac3 += tmp5 * c2
    msub      $ac3, s6, t3  // ac3 -= tmp6 * c3
    extr_r.w  s0, $ac0, 15  // tmp0 = (ac0 + 16384) >> 15
    extr_r.w  s1, $ac1, 15  // tmp1 = (ac1 + 16384) >> 15
    extr_r.w  s2, $ac2, 15  // tmp2 = (ac2 + 16384) >> 15
    extr_r.w  s3, $ac3, 15  // tmp3 = (ac3 + 16384) >> 15
    addiu     s8, s8, -1
    addu      s4, a2, a3    // tmp4 = tmp10 + tmp11
    subu      s5, a2, a3    // tmp5 = tmp10 - tmp11
    sh        s0, 16(a0)
    sh        s1, 48(a0)
    sh        s2, 80(a0)
    sh        s3, 112(a0)
    mult      v0, t8        // ac0  = tmp12 * c8
    madd      v1, t9        // ac0 += tmp13 * c9
    mult      $ac1, v1, t8  // ac1  = tmp13 * c8
    msub      $ac1, v0, a1  // ac1 -= tmp12 * c10
    addiu     a0, a0, 2
    extr_r.w  s6, $ac0, 15  // tmp6 = (ac0 + 16384) >> 15
    extr_r.w  s7, $ac1, 15  // tmp7 = (ac1 + 16384) >> 15
    shra_r.w  s4, s4, 2     // tmp4 = (tmp4 + 2) >> 2
    shra_r.w  s5, s5, 2     // tmp5 = (tmp5 + 2) >> 2
    sh        s4, -2(a0)
    sh        s5, 62(a0)
    sh        s6, 30(a0)
    bgtz      s8, 2b
     sh       s7, 94(a0)

    RESTORE_REGS_FROM_STACK 40, s0, s1, s2, s3, s4, s5, s6, s7, s8

    jr       ra
     nop

END(jsimd_fdct_islow_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_fdct_ifast_mips_dspr2)
/*
 * a0     - data
 */
    .set at
    SAVE_REGS_ON_STACK 8, s0, s1
    li           a1, 0x014e014e  // FIX_1_306562965 (334 << 16)|(334 & 0xffff)
    li           a2, 0x008b008b  // FIX_0_541196100 (139 << 16)|(139 & 0xffff)
    li           a3, 0x00620062  // FIX_0_382683433 (98 << 16) |(98 & 0xffff)
    li           s1, 0x00b500b5  // FIX_0_707106781 (181 << 16)|(181 & 0xffff)

    move         v0, a0
    addiu        v1, v0, 128     // end address

0:
    lw           t0, 0(v0)       // tmp0 = 1|0
    lw           t1, 4(v0)       // tmp1 = 3|2
    lw           t2, 8(v0)       // tmp2 = 5|4
    lw           t3, 12(v0)      // tmp3 = 7|6
    packrl.ph    t1, t1, t1      // tmp1 = 2|3
    packrl.ph    t3, t3, t3      // tmp3 = 6|7
    subq.ph      t7, t1, t2      // tmp7 = 2-5|3-4 = t5|t4
    subq.ph      t5, t0, t3      // tmp5 = 1-6|0-7 = t6|t7
    addq.ph      t6, t1, t2      // tmp6 = 2+5|3+4 = t2|t3
    addq.ph      t4, t0, t3      // tmp4 = 1+6|0+7 = t1|t0
    addq.ph      t8, t4, t6      // tmp5 = t1+t2|t0+t3 = t11|t10
    subq.ph      t9, t4, t6      // tmp7 = t1-t2|t0-t3 = t12|t13
    sra          t4, t8, 16      // tmp4 = t11
    mult         $0, $0          // ac0  = 0
    dpa.w.ph     $ac0, t9, s1
    mult         $ac1, $0, $0    // ac1  = 0
    dpa.w.ph     $ac1, t7, a3    // ac1 += t4*98 + t5*98
    dpsx.w.ph    $ac1, t5, a3    // ac1 += t6*98 + t7*98
    mult         $ac2, $0, $0    // ac2  = 0
    dpa.w.ph     $ac2, t7, a2    // ac2 += t4*139 + t5*139
    mult         $ac3, $0, $0    // ac3  = 0
    dpa.w.ph     $ac3, t5, a1    // ac3 += t6*334 + t7*334
    precrq.ph.w  t0, t5, t7      // t0 = t5|t6
    addq.ph      t2, t8, t4      // tmp2 = t10 + t11
    subq.ph      t3, t8, t4      // tmp3 = t10 - t11
    extr.w       t4, $ac0, 8
    mult         $0, $0          // ac0  = 0
    dpa.w.ph     $ac0, t0, s1    // ac0 += t5*181 + t6*181
    extr.w       t0, $ac1, 8     // t0 = z5
    extr.w       t1, $ac2, 8     // t1 = MULTIPLY(tmp10, 139)
    extr.w       t7, $ac3, 8     // t2 = MULTIPLY(tmp12, 334)
    extr.w       t8, $ac0, 8     // t8 = z3 = MULTIPLY(tmp11, 181)
    add          t6, t1, t0      // t6 = z2
    add          t7, t7, t0      // t7 = z4
    subq.ph      t0, t5, t8      // t0 = z13 = tmp7 - z3
    addq.ph      t8, t5, t8      // t9 = z11 = tmp7 + z3
    addq.ph      t1, t0, t6      // t1 = z13 + z2
    subq.ph      t6, t0, t6      // t6 = z13 - z2
    addq.ph      t0, t8, t7      // t0 = z11 + z4
    subq.ph      t7, t8, t7      // t7 = z11 - z4
    addq.ph      t5, t4, t9
    subq.ph      t4, t9, t4
    sh           t2, 0(v0)
    sh           t5, 4(v0)
    sh           t3, 8(v0)
    sh           t4, 12(v0)
    sh           t1, 10(v0)
    sh           t6, 6(v0)
    sh           t0, 2(v0)
    sh           t7, 14(v0)
    addiu        v0, 16
    bne          v1, v0, 0b
     nop
    move         v0, a0
    addiu        v1, v0, 16

1:
    lh           t0, 0(v0)       // 0
    lh           t1, 16(v0)      // 8
    lh           t2, 32(v0)      // 16
    lh           t3, 48(v0)      // 24
    lh           t4, 64(v0)      // 32
    lh           t5, 80(v0)      // 40
    lh           t6, 96(v0)      // 48
    lh           t7, 112(v0)     // 56
    add          t8, t0, t7      // t8 = tmp0
    sub          t7, t0, t7      // t7 = tmp7
    add          t0, t1, t6      // t0 = tmp1
    sub          t1, t1, t6      // t1 = tmp6
    add          t6, t2, t5      // t6 = tmp2
    sub          t5, t2, t5      // t5 = tmp5
    add          t2, t3, t4      // t2 = tmp3
    sub          t3, t3, t4      // t3 = tmp4
    add          t4, t8, t2      // t4 = tmp10 = tmp0 + tmp3
    sub          t8, t8, t2      // t8 = tmp13 = tmp0 - tmp3
    sub          s0, t0, t6      // s0 = tmp12 = tmp1 - tmp2
    ins          t8, s0, 16, 16  // t8 = tmp12|tmp13
    add          t2, t0, t6      // t2 = tmp11 = tmp1 + tmp2
    mult         $0, $0          // ac0  = 0
    dpa.w.ph     $ac0, t8, s1    // ac0 += t12*181 + t13*181
    add          s0, t4, t2      // t8 = tmp10+tmp11
    sub          t4, t4, t2      // t4 = tmp10-tmp11
    sh           s0, 0(v0)
    sh           t4, 64(v0)
    extr.w       t2, $ac0, 8     // z1 = MULTIPLY(tmp12+tmp13,FIX_0_707106781)
    addq.ph      t4, t8, t2      // t9 = tmp13 + z1
    subq.ph      t8, t8, t2      // t2 = tmp13 - z1
    sh           t4, 32(v0)
    sh           t8, 96(v0)
    add          t3, t3, t5      // t3 = tmp10 = tmp4 + tmp5
    add          t0, t5, t1      // t0 = tmp11 = tmp5 + tmp6
    add          t1, t1, t7      // t1 = tmp12 = tmp6 + tmp7
    andi         t4, a1, 0xffff
    mul          s0, t1, t4
    sra          s0, s0, 8       // s0 = z4 = MULTIPLY(tmp12, FIX_1_306562965)
    ins          t1, t3, 16, 16  // t1 = tmp10|tmp12
    mult         $0, $0          // ac0  = 0
    mulsa.w.ph   $ac0, t1, a3    // ac0 += t10*98 - t12*98
    extr.w       t8, $ac0, 8     // z5 = MULTIPLY(tmp10-tmp12,FIX_0_382683433)
    add          t2, t7, t8      // t2 = tmp7 + z5
    sub          t7, t7, t8      // t7 = tmp7 - z5
    andi         t4, a2, 0xffff
    mul          t8, t3, t4
    sra          t8, t8, 8       // t8 = z2 = MULTIPLY(tmp10, FIX_0_541196100)
    andi         t4, s1, 0xffff
    mul          t6, t0, t4
    sra          t6, t6, 8       // t6 = z3 = MULTIPLY(tmp11, FIX_0_707106781)
    add          t0, t6, t8      // t0 = z3 + z2
    sub          t1, t6, t8      // t1 = z3 - z2
    add          t3, t6, s0      // t3 = z3 + z4
    sub          t4, t6, s0      // t4 = z3 - z4
    sub          t5, t2, t1      // t5 = dataptr[5]
    sub          t6, t7, t0      // t6 = dataptr[3]
    add          t3, t2, t3      // t3 = dataptr[1]
    add          t4, t7, t4      // t4 = dataptr[7]
    sh           t5, 80(v0)
    sh           t6, 48(v0)
    sh           t3, 16(v0)
    sh           t4, 112(v0)
    addiu        v0, 2
    bne          v0, v1, 1b
     nop

    RESTORE_REGS_FROM_STACK 8, s0, s1

    j            ra
     nop
END(jsimd_fdct_ifast_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_quantize_mips_dspr2)
/*
 * a0     - coef_block
 * a1     - divisors
 * a2     - workspace
 */

    .set at

    SAVE_REGS_ON_STACK 16, s0, s1, s2

    addiu   v0, a2, 124  // v0 = workspace_end
    lh      t0, 0(a2)
    lh      t1, 0(a1)
    lh      t2, 128(a1)
    sra     t3, t0, 15
    sll     t3, t3, 1
    addiu   t3, t3, 1
    mul     t0, t0, t3
    lh      t4, 384(a1)
    lh      t5, 130(a1)
    lh      t6, 2(a2)
    lh      t7, 2(a1)
    lh      t8, 386(a1)

1:
    andi    t1, 0xffff
    add     t9, t0, t2
    andi    t9, 0xffff
    mul     v1, t9, t1
    sra     s0, t6, 15
    sll     s0, s0, 1
    addiu   s0, s0, 1
    addiu   t9, t4, 16
    srav    v1, v1, t9
    mul     v1, v1, t3
    mul     t6, t6, s0
    andi    t7, 0xffff
    addiu   a2, a2, 4
    addiu   a1, a1, 4
    add     s1, t6, t5
    andi    s1, 0xffff
    sh      v1, 0(a0)

    mul     s2, s1, t7
    addiu   s1, t8, 16
    srav    s2, s2, s1
    mul     s2,s2, s0
    lh      t0, 0(a2)
    lh      t1, 0(a1)
    sra     t3, t0, 15
    sll     t3, t3, 1
    addiu   t3, t3, 1
    mul     t0, t0, t3
    lh      t2, 128(a1)
    lh      t4, 384(a1)
    lh      t5, 130(a1)
    lh      t8, 386(a1)
    lh      t6, 2(a2)
    lh      t7, 2(a1)
    sh      s2, 2(a0)
    lh      t0, 0(a2)
    sra     t3, t0, 15
    sll     t3, t3, 1
    addiu   t3, t3, 1
    mul     t0, t0,t3
    bne     a2, v0, 1b
     addiu  a0, a0, 4

    andi    t1, 0xffff
    add     t9, t0, t2
    andi    t9, 0xffff
    mul     v1, t9, t1
    sra     s0, t6, 15
    sll     s0, s0, 1
    addiu   s0, s0, 1
    addiu   t9, t4, 16
    srav    v1, v1, t9
    mul     v1, v1, t3
    mul     t6, t6, s0
    andi    t7, 0xffff
    sh      v1, 0(a0)
    add     s1, t6, t5
    andi    s1, 0xffff
    mul     s2, s1, t7
    addiu   s1, t8, 16
    addiu   a2, a2, 4
    addiu   a1, a1, 4
    srav    s2, s2, s1
    mul     s2, s2, s0
    sh      s2, 2(a0)

    RESTORE_REGS_FROM_STACK 16, s0, s1, s2

    j       ra
     nop

END(jsimd_quantize_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_quantize_float_mips_dspr2)
/*
 * a0     - coef_block
 * a1     - divisors
 * a2     - workspace
 */

    .set at

    li         t1, 0x46800100     //integer representation 16384.5
    mtc1       t1, f0
    li         t0, 63
0:
    lwc1       f2, 0(a2)
    lwc1       f10, 0(a1)
    lwc1       f4, 4(a2)
    lwc1       f12, 4(a1)
    lwc1       f6, 8(a2)
    lwc1       f14, 8(a1)
    lwc1       f8, 12(a2)
    lwc1       f16, 12(a1)
    madd.s     f2, f0, f2, f10
    madd.s     f4, f0, f4, f12
    madd.s     f6, f0, f6, f14
    madd.s     f8, f0, f8, f16
    lwc1       f10, 16(a1)
    lwc1       f12, 20(a1)
    trunc.w.s  f2, f2
    trunc.w.s  f4, f4
    trunc.w.s  f6, f6
    trunc.w.s  f8, f8
    lwc1       f14, 24(a1)
    lwc1       f16, 28(a1)
    mfc1       t1, f2
    mfc1       t2, f4
    mfc1       t3, f6
    mfc1       t4, f8
    lwc1       f2, 16(a2)
    lwc1       f4, 20(a2)
    lwc1       f6, 24(a2)
    lwc1       f8, 28(a2)
    madd.s     f2, f0, f2, f10
    madd.s     f4, f0, f4, f12
    madd.s     f6, f0, f6, f14
    madd.s     f8, f0, f8, f16
    addiu      t1, t1, -16384
    addiu      t2, t2, -16384
    addiu      t3, t3, -16384
    addiu      t4, t4, -16384
    trunc.w.s  f2, f2
    trunc.w.s  f4, f4
    trunc.w.s  f6, f6
    trunc.w.s  f8, f8
    sh         t1, 0(a0)
    sh         t2, 2(a0)
    sh         t3, 4(a0)
    sh         t4, 6(a0)
    mfc1       t1, f2
    mfc1       t2, f4
    mfc1       t3, f6
    mfc1       t4, f8
    addiu      t0, t0, -8
    addiu      a2, a2, 32
    addiu      a1, a1, 32
    addiu      t1, t1, -16384
    addiu      t2, t2, -16384
    addiu      t3, t3, -16384
    addiu      t4, t4, -16384
    sh         t1, 8(a0)
    sh         t2, 10(a0)
    sh         t3, 12(a0)
    sh         t4, 14(a0)
    bgez       t0, 0b
     addiu     a0, a0, 16

    j          ra
     nop

END(jsimd_quantize_float_mips_dspr2)
/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_2x2_mips_dspr2)
/*
 * a0     - compptr->dct_table
 * a1     - coef_block
 * a2     - output_buf
 * a3     - output_col
 */
    .set at

    SAVE_REGS_ON_STACK 24, s0, s1, s2, s3, s4, s5

    addiu     sp, sp, -40
    move      v0, sp
    addiu     s2, zero, 29692
    addiu     s3, zero, -10426
    addiu     s4, zero, 6967
    addiu     s5, zero, -5906
    lh        t0, 0(a1)         // t0 = inptr[DCTSIZE*0]
    lh        t5, 0(a0)         // t5 = quantptr[DCTSIZE*0]
    lh        t1, 48(a1)        // t1 = inptr[DCTSIZE*3]
    lh        t6, 48(a0)        // t6 = quantptr[DCTSIZE*3]
    mul       t4, t5, t0
    lh        t0, 16(a1)        // t0 = inptr[DCTSIZE*1]
    lh        t5, 16(a0)        // t5 = quantptr[DCTSIZE*1]
    mul       t6, t6, t1
    mul       t5, t5, t0
    lh        t2, 80(a1)        // t2 = inptr[DCTSIZE*5]
    lh        t7, 80(a0)        // t7 = quantptr[DCTSIZE*5]
    lh        t3, 112(a1)       // t3 = inptr[DCTSIZE*7]
    lh        t8, 112(a0)       // t8 = quantptr[DCTSIZE*7]
    mul       t7, t7, t2
    mult      zero, zero
    mul       t8, t8, t3
    li        s0, 0x73FCD746    // s0 = (29692 << 16) | (-10426 & 0xffff)
    li        s1, 0x1B37E8EE    // s1 = (6967 << 16) | (-5906 & 0xffff)
    ins       t6, t5, 16, 16    // t6 = t5|t6
    sll       t4, t4, 15
    dpa.w.ph  $ac0, t6, s0
    lh        t1, 2(a1)
    lh        t6, 2(a0)
    ins       t8, t7, 16, 16    // t8 = t7|t8
    dpa.w.ph  $ac0, t8, s1
    mflo      t0, $ac0
    mul       t5, t6, t1
    lh        t1, 18(a1)
    lh        t6, 18(a0)
    lh        t2, 50(a1)
    lh        t7, 50(a0)
    mul       t6, t6, t1
    subu      t8, t4, t0
    mul       t7, t7, t2
    addu      t0, t4, t0
    shra_r.w  t0, t0, 13
    lh        t1, 82(a1)
    lh        t2, 82(a0)
    lh        t3, 114(a1)
    lh        t4, 114(a0)
    shra_r.w  t8, t8, 13
    mul       t1, t1, t2
    mul       t3, t3, t4
    sw        t0, 0(v0)
    sw        t8, 20(v0)
    sll       t4, t5, 15
    ins       t7, t6, 16, 16
    mult      zero, zero
    dpa.w.ph  $ac0, t7, s0
    ins       t3, t1, 16, 16
    lh        t1, 6(a1)
    lh        t6, 6(a0)
    dpa.w.ph  $ac0, t3, s1
    mflo      t0, $ac0
    mul       t5, t6, t1
    lh        t1, 22(a1)
    lh        t6, 22(a0)
    lh        t2, 54(a1)
    lh        t7, 54(a0)
    mul       t6, t6, t1
    subu      t8, t4, t0
    mul       t7, t7, t2
    addu      t0, t4, t0
    shra_r.w  t0, t0, 13
    lh        t1, 86(a1)
    lh        t2, 86(a0)
    lh        t3, 118(a1)
    lh        t4, 118(a0)
    shra_r.w  t8, t8, 13
    mul       t1, t1, t2
    mul       t3, t3, t4
    sw        t0, 4(v0)
    sw        t8, 24(v0)
    sll       t4, t5, 15
    ins       t7, t6, 16, 16
    mult      zero, zero
    dpa.w.ph  $ac0, t7, s0
    ins       t3, t1, 16, 16
    lh        t1, 10(a1)
    lh        t6, 10(a0)
    dpa.w.ph  $ac0, t3, s1
    mflo      t0, $ac0
    mul       t5, t6, t1
    lh        t1, 26(a1)
    lh        t6, 26(a0)
    lh        t2, 58(a1)
    lh        t7, 58(a0)
    mul       t6, t6, t1
    subu      t8, t4, t0
    mul       t7, t7, t2
    addu      t0, t4, t0
    shra_r.w  t0, t0, 13
    lh        t1, 90(a1)
    lh        t2, 90(a0)
    lh        t3, 122(a1)
    lh        t4, 122(a0)
    shra_r.w  t8, t8, 13
    mul       t1, t1, t2
    mul       t3, t3, t4
    sw        t0, 8(v0)
    sw        t8, 28(v0)
    sll       t4, t5, 15
    ins       t7, t6, 16, 16
    mult      zero, zero
    dpa.w.ph  $ac0, t7, s0
    ins       t3, t1, 16, 16
    lh        t1, 14(a1)
    lh        t6, 14(a0)
    dpa.w.ph  $ac0, t3, s1
    mflo      t0, $ac0
    mul       t5, t6, t1
    lh        t1, 30(a1)
    lh        t6, 30(a0)
    lh        t2, 62(a1)
    lh        t7, 62(a0)
    mul       t6, t6, t1
    subu      t8, t4, t0
    mul       t7, t7, t2
    addu      t0, t4, t0
    shra_r.w  t0, t0, 13
    lh        t1, 94(a1)
    lh        t2, 94(a0)
    lh        t3, 126(a1)
    lh        t4, 126(a0)
    shra_r.w  t8, t8, 13
    mul       t1, t1, t2
    mul       t3, t3, t4
    sw        t0, 12(v0)
    sw        t8, 32(v0)
    sll       t4, t5, 15
    ins       t7, t6, 16, 16
    mult      zero, zero
    dpa.w.ph  $ac0, t7, s0
    ins       t3, t1, 16, 16
    dpa.w.ph  $ac0, t3, s1
    mflo      t0, $ac0
    lw        t9, 0(a2)
    lw        t3, 0(v0)
    lw        t7, 4(v0)
    lw        t1, 8(v0)
    addu      t9, t9, a3
    sll       t3, t3, 15
    subu      t8, t4, t0
    addu      t0, t4, t0
    shra_r.w  t0, t0, 13
    shra_r.w  t8, t8, 13
    sw        t0, 16(v0)
    sw        t8, 36(v0)
    lw        t5, 12(v0)
    lw        t6, 16(v0)
    mult      t7, s2
    madd      t1, s3
    madd      t5, s4
    madd      t6, s5
    lw        t5, 24(v0)
    lw        t7, 28(v0)
    mflo      t0, $ac0
    lw        t8, 32(v0)
    lw        t2, 36(v0)
    mult      $ac1, t5, s2
    madd      $ac1, t7, s3
    madd      $ac1, t8, s4
    madd      $ac1, t2, s5
    addu      t1, t3, t0
    subu      t6, t3, t0
    shra_r.w  t1, t1, 20
    shra_r.w  t6, t6, 20
    mflo      t4, $ac1
    shll_s.w  t1, t1, 24
    shll_s.w  t6, t6, 24
    sra       t1, t1, 24
    sra       t6, t6, 24
    addiu     t1, t1, 128
    addiu     t6, t6, 128
    lw        t0, 20(v0)
    sb        t1, 0(t9)
    sb        t6, 1(t9)
    sll       t0, t0, 15
    lw        t9, 4(a2)
    addu      t1, t0, t4
    subu      t6, t0, t4
    addu      t9, t9, a3
    shra_r.w  t1, t1, 20
    shra_r.w  t6, t6, 20
    shll_s.w  t1, t1, 24
    shll_s.w  t6, t6, 24
    sra       t1, t1, 24
    sra       t6, t6, 24
    addiu     t1, t1, 128
    addiu     t6, t6, 128
    sb        t1, 0(t9)
    sb        t6, 1(t9)
    addiu     sp, sp, 40

    RESTORE_REGS_FROM_STACK 24, s0, s1, s2, s3, s4, s5

    j         ra
     nop

END(jsimd_idct_2x2_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_4x4_mips_dspr2)
/*
 * a0     - compptr->dct_table
 * a1     - coef_block
 * a2     - output_buf
 * a3     - output_col
 * 16(sp) - workspace[DCTSIZE*4];  // buffers data between passes
 */

    .set at
    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    lw        v1, 48(sp)
    move      t0, a1
    move      t1, v1
    li        t9, 4
    li        s0, 0x2e75f93e
    li        s1, 0x21f9ba79
    li        s2, 0xecc2efb0
    li        s3, 0x52031ccd

0:
    lh        s6, 32(t0)        // inptr[DCTSIZE*2]
    lh        t6, 32(a0)        // quantptr[DCTSIZE*2]
    lh        s7, 96(t0)        // inptr[DCTSIZE*6]
    lh        t7, 96(a0)        // quantptr[DCTSIZE*6]
    mul       t6, s6, t6        // z2 = (inptr[DCTSIZE*2] * quantptr[DCTSIZE*2])
    lh        s4, 0(t0)         // inptr[DCTSIZE*0]
    mul       t7, s7, t7        // z3 = (inptr[DCTSIZE*6] * quantptr[DCTSIZE*6])
    lh        s5, 0(a0)         // quantptr[0]
    li        s6, 15137
    li        s7, 6270
    mul       t2, s4, s5        // tmp0 = (inptr[0] * quantptr[0])
    mul       t6, s6, t6        // z2 = (inptr[DCTSIZE*2] * quantptr[DCTSIZE*2])
    lh        t5, 112(t0)       // inptr[DCTSIZE*7]
    mul       t7, s7, t7        // z3 = (inptr[DCTSIZE*6] * quantptr[DCTSIZE*6])
    lh        s4, 112(a0)       // quantptr[DCTSIZE*7]
    lh        v0, 80(t0)        // inptr[DCTSIZE*5]
    lh        s5, 80(a0)        // quantptr[DCTSIZE*5]
    lh        s6, 48(a0)        // quantptr[DCTSIZE*3]
    sll       t2, t2, 14        // tmp0 <<= (CONST_BITS+1)
    lh        s7, 16(a0)        // quantptr[DCTSIZE*1]
    lh        t8, 16(t0)        // inptr[DCTSIZE*1]
    subu      t6, t6, t7        // tmp2 = MULTIPLY(z2, t5) - MULTIPLY(z3, t6)
    lh        t7, 48(t0)        // inptr[DCTSIZE*3]
    mul       t5, s4, t5        // z1 = (inptr[DCTSIZE*7] * quantptr[DCTSIZE*7])
    mul       v0, s5, v0        // z2 = (inptr[DCTSIZE*5] * quantptr[DCTSIZE*5])
    mul       t7, s6, t7        // z3 = (inptr[DCTSIZE*3] * quantptr[DCTSIZE*3])
    mul       t8, s7, t8        // z4 = (inptr[DCTSIZE*1] * quantptr[DCTSIZE*1])
    addu      t3, t2, t6        // tmp10 = tmp0 + z2
    subu      t4, t2, t6        // tmp10 = tmp0 - z2
    mult      $ac0, zero, zero
    mult      $ac1, zero, zero
    ins       t5, v0, 16, 16
    ins       t7, t8, 16, 16
    addiu     t9, t9, -1
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    mflo      s4, $ac0
    mflo      s5, $ac1
    addiu     a0, a0, 2
    addiu     t1, t1, 4
    addiu     t0, t0, 2
    addu      t6, t4, s4
    subu      t5, t4, s4
    addu      s6, t3, s5
    subu      s7, t3, s5
    shra_r.w  t6, t6, 12        // DESCALE(tmp12 + temp1, 12)
    shra_r.w  t5, t5, 12        // DESCALE(tmp12 - temp1, 12)
    shra_r.w  s6, s6, 12        // DESCALE(tmp10 + temp2, 12)
    shra_r.w  s7, s7, 12        // DESCALE(tmp10 - temp2, 12)
    sw        t6, 28(t1)
    sw        t5, 60(t1)
    sw        s6, -4(t1)
    bgtz      t9, 0b
     sw       s7, 92(t1)
    // second loop three pass
    li        t9, 3
1:
    lh        s6, 34(t0)        // inptr[DCTSIZE*2]
    lh        t6, 34(a0)        // quantptr[DCTSIZE*2]
    lh        s7, 98(t0)        // inptr[DCTSIZE*6]
    lh        t7, 98(a0)        // quantptr[DCTSIZE*6]
    mul       t6, s6, t6        // z2 = (inptr[DCTSIZE*2] * quantptr[DCTSIZE*2])
    lh        s4, 2(t0)         // inptr[DCTSIZE*0]
    mul       t7, s7, t7        // z3 = (inptr[DCTSIZE*6] * quantptr[DCTSIZE*6])
    lh        s5, 2(a0)         // quantptr[DCTSIZE*0]
    li        s6, 15137
    li        s7, 6270
    mul       t2, s4, s5        // tmp0 = (inptr[0] * quantptr[0])
    mul       v0, s6, t6        // z2 = (inptr[DCTSIZE*2] * quantptr[DCTSIZE*2])
    lh        t5, 114(t0)       // inptr[DCTSIZE*7]
    mul       t7, s7, t7        // z3 = (inptr[DCTSIZE*6] * quantptr[DCTSIZE*6])
    lh        s4, 114(a0)       // quantptr[DCTSIZE*7]
    lh        s5, 82(a0)        // quantptr[DCTSIZE*5]
    lh        t6, 82(t0)        // inptr[DCTSIZE*5]
    sll       t2, t2, 14        // tmp0 <<= (CONST_BITS+1)
    lh        s6, 50(a0)        // quantptr[DCTSIZE*3]
    lh        t8, 18(t0)        // inptr[DCTSIZE*1]
    subu      v0, v0, t7        // tmp2 = MULTIPLY(z2, t5) - MULTIPLY(z3, t6)
    lh        t7, 50(t0)        // inptr[DCTSIZE*3]
    lh        s7, 18(a0)        // quantptr[DCTSIZE*1]
    mul       t5, s4, t5        // z1 = (inptr[DCTSIZE*7] * quantptr[DCTSIZE*7])
    mul       t6, s5, t6        // z2 = (inptr[DCTSIZE*5] * quantptr[DCTSIZE*5])
    mul       t7, s6, t7        // z3 = (inptr[DCTSIZE*3] * quantptr[DCTSIZE*3])
    mul       t8, s7, t8        // z4 = (inptr[DCTSIZE*1] * quantptr[DCTSIZE*1])
    addu      t3, t2, v0        // tmp10 = tmp0 + z2
    subu      t4, t2, v0        // tmp10 = tmp0 - z2
    mult      $ac0, zero, zero
    mult      $ac1, zero, zero
    ins       t5, t6, 16, 16
    ins       t7, t8, 16, 16
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    mflo      t5, $ac0
    mflo      t6, $ac1
    addiu     t9, t9, -1
    addiu     t0, t0, 2
    addiu     a0, a0, 2
    addiu     t1, t1, 4
    addu      s5, t4, t5
    subu      s4, t4, t5
    addu      s6, t3, t6
    subu      s7, t3, t6
    shra_r.w  s5, s5, 12        // DESCALE(tmp12 + temp1, 12)
    shra_r.w  s4, s4, 12        // DESCALE(tmp12 - temp1, 12)
    shra_r.w  s6, s6, 12        // DESCALE(tmp10 + temp2, 12)
    shra_r.w  s7, s7, 12        // DESCALE(tmp10 - temp2, 12)
    sw        s5, 32(t1)
    sw        s4, 64(t1)
    sw        s6, 0(t1)
    bgtz      t9, 1b
     sw       s7, 96(t1)
    move      t1, v1
    li        s4, 15137
    lw        s6, 8(t1)         // wsptr[2]
    li        s5, 6270
    lw        s7, 24(t1)        // wsptr[6]
    mul       s4, s4, s6        // MULTIPLY((JLONG) wsptr[2], FIX_1_847759065)
    lw        t2, 0(t1)         // wsptr[0]
    mul       s5, s5, s7        // MULTIPLY((JLONG) wsptr[6], - FIX_0_765366865)
    lh        t5, 28(t1)        // wsptr[7]
    lh        t6, 20(t1)        // wsptr[5]
    lh        t7, 12(t1)        // wsptr[3]
    lh        t8, 4(t1)         // wsptr[1]
    ins       t5, t6, 16, 16
    ins       t7, t8, 16, 16
    mult      $ac0, zero, zero
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    mult      $ac1, zero, zero
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    sll       t2, t2, 14        // tmp0 = ((JLONG) wsptr[0]) << (CONST_BITS+1)
    mflo      s6, $ac0
    // MULTIPLY(wsptr[2], FIX_1_847759065 + MULTIPLY(wsptr[6], -FIX_0_765366865)
    subu      s4, s4, s5
    addu      t3, t2, s4        // tmp10 = tmp0 + z2
    mflo      s7, $ac1
    subu      t4, t2, s4        // tmp10 = tmp0 - z2
    addu      t7, t4, s6
    subu      t8, t4, s6
    addu      t5, t3, s7
    subu      t6, t3, s7
    shra_r.w  t5, t5, 19        // DESCALE(tmp10 + temp2, 19)
    shra_r.w  t6, t6, 19        // DESCALE(tmp10 - temp2, 19)
    shra_r.w  t7, t7, 19        // DESCALE(tmp12 + temp1, 19)
    shra_r.w  t8, t8, 19        // DESCALE(tmp12 - temp1, 19)
    sll       s4, t9, 2
    lw        v0, 0(a2)         // output_buf[ctr]
    shll_s.w  t5, t5, 24
    shll_s.w  t6, t6, 24
    shll_s.w  t7, t7, 24
    shll_s.w  t8, t8, 24
    sra       t5, t5, 24
    sra       t6, t6, 24
    sra       t7, t7, 24
    sra       t8, t8, 24
    addu      v0, v0, a3        // outptr = output_buf[ctr] + output_col
    addiu     t5, t5, 128
    addiu     t6, t6, 128
    addiu     t7, t7, 128
    addiu     t8, t8, 128
    sb        t5, 0(v0)
    sb        t7, 1(v0)
    sb        t8, 2(v0)
    sb        t6, 3(v0)
    // 2
    li        s4, 15137
    lw        s6, 40(t1)        // wsptr[2]
    li        s5, 6270
    lw        s7, 56(t1)        // wsptr[6]
    mul       s4, s4, s6        // MULTIPLY((JLONG) wsptr[2], FIX_1_847759065)
    lw        t2, 32(t1)        // wsptr[0]
    mul       s5, s5, s7        // MULTIPLY((JLONG) wsptr[6], - FIX_0_765366865)
    lh        t5, 60(t1)        // wsptr[7]
    lh        t6, 52(t1)        // wsptr[5]
    lh        t7, 44(t1)        // wsptr[3]
    lh        t8, 36(t1)        // wsptr[1]
    ins       t5, t6, 16, 16
    ins       t7, t8, 16, 16
    mult      $ac0, zero, zero
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    mult      $ac1, zero, zero
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    sll       t2, t2, 14        // tmp0 = ((JLONG) wsptr[0]) << (CONST_BITS+1)
    mflo      s6, $ac0
    // MULTIPLY(wsptr[2], FIX_1_847759065 + MULTIPLY(wsptr[6], -FIX_0_765366865)
    subu      s4, s4, s5
    addu      t3, t2, s4        // tmp10 = tmp0 + z2
    mflo      s7, $ac1
    subu      t4, t2, s4        // tmp10 = tmp0 - z2
    addu      t7, t4, s6
    subu      t8, t4, s6
    addu      t5, t3, s7
    subu      t6, t3, s7
    shra_r.w  t5, t5, 19        // DESCALE(tmp10 + temp2, CONST_BITS-PASS1_BITS+1)
    shra_r.w  t6, t6, 19        // DESCALE(tmp10 - temp2, CONST_BITS-PASS1_BITS+1)
    shra_r.w  t7, t7, 19        // DESCALE(tmp12 + temp1, CONST_BITS-PASS1_BITS+1)
    shra_r.w  t8, t8, 19        // DESCALE(tmp12 - temp1, CONST_BITS-PASS1_BITS+1)
    sll       s4, t9, 2
    lw        v0, 4(a2)         // output_buf[ctr]
    shll_s.w  t5, t5, 24
    shll_s.w  t6, t6, 24
    shll_s.w  t7, t7, 24
    shll_s.w  t8, t8, 24
    sra       t5, t5, 24
    sra       t6, t6, 24
    sra       t7, t7, 24
    sra       t8, t8, 24
    addu      v0, v0, a3        // outptr = output_buf[ctr] + output_col
    addiu     t5, t5, 128
    addiu     t6, t6, 128
    addiu     t7, t7, 128
    addiu     t8, t8, 128
    sb        t5, 0(v0)
    sb        t7, 1(v0)
    sb        t8, 2(v0)
    sb        t6, 3(v0)
    // 3
    li        s4, 15137
    lw        s6, 72(t1)        // wsptr[2]
    li        s5, 6270
    lw        s7, 88(t1)        // wsptr[6]
    mul       s4, s4, s6        // MULTIPLY((JLONG) wsptr[2], FIX_1_847759065)
    lw        t2, 64(t1)        // wsptr[0]
    mul       s5, s5, s7        // MULTIPLY((JLONG) wsptr[6], - FIX_0_765366865)
    lh        t5, 92(t1)        // wsptr[7]
    lh        t6, 84(t1)        // wsptr[5]
    lh        t7, 76(t1)        // wsptr[3]
    lh        t8, 68(t1)        // wsptr[1]
    ins       t5, t6, 16, 16
    ins       t7, t8, 16, 16
    mult      $ac0, zero, zero
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    mult      $ac1, zero, zero
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    sll       t2, t2, 14        // tmp0 = ((JLONG) wsptr[0]) << (CONST_BITS+1)
    mflo      s6, $ac0
    // MULTIPLY(wsptr[2], FIX_1_847759065 + MULTIPLY(wsptr[6], -FIX_0_765366865)
    subu      s4, s4, s5
    addu      t3, t2, s4        // tmp10 = tmp0 + z2
    mflo      s7, $ac1
    subu      t4, t2, s4        // tmp10 = tmp0 - z2
    addu      t7, t4, s6
    subu      t8, t4, s6
    addu      t5, t3, s7
    subu      t6, t3, s7
    shra_r.w  t5, t5, 19        // DESCALE(tmp10 + temp2, 19)
    shra_r.w  t6, t6, 19        // DESCALE(tmp10 - temp2, 19)
    shra_r.w  t7, t7, 19        // DESCALE(tmp12 + temp1, 19)
    shra_r.w  t8, t8, 19        // DESCALE(tmp12 - temp1, 19)
    sll       s4, t9, 2
    lw        v0, 8(a2)         // output_buf[ctr]
    shll_s.w  t5, t5, 24
    shll_s.w  t6, t6, 24
    shll_s.w  t7, t7, 24
    shll_s.w  t8, t8, 24
    sra       t5, t5, 24
    sra       t6, t6, 24
    sra       t7, t7, 24
    sra       t8, t8, 24
    addu      v0, v0, a3        // outptr = output_buf[ctr] + output_col
    addiu     t5, t5, 128
    addiu     t6, t6, 128
    addiu     t7, t7, 128
    addiu     t8, t8, 128
    sb        t5, 0(v0)
    sb        t7, 1(v0)
    sb        t8, 2(v0)
    sb        t6, 3(v0)
    li        s4, 15137
    lw        s6, 104(t1)       // wsptr[2]
    li        s5, 6270
    lw        s7, 120(t1)       // wsptr[6]
    mul       s4, s4, s6        // MULTIPLY((JLONG) wsptr[2], FIX_1_847759065)
    lw        t2, 96(t1)        // wsptr[0]
    mul       s5, s5, s7        // MULTIPLY((JLONG) wsptr[6], -FIX_0_765366865)
    lh        t5, 124(t1)       // wsptr[7]
    lh        t6, 116(t1)       // wsptr[5]
    lh        t7, 108(t1)       // wsptr[3]
    lh        t8, 100(t1)       // wsptr[1]
    ins       t5, t6, 16, 16
    ins       t7, t8, 16, 16
    mult      $ac0, zero, zero
    dpa.w.ph  $ac0, t5, s0
    dpa.w.ph  $ac0, t7, s1
    mult      $ac1, zero, zero
    dpa.w.ph  $ac1, t5, s2
    dpa.w.ph  $ac1, t7, s3
    sll       t2, t2, 14        // tmp0 = ((JLONG) wsptr[0]) << (CONST_BITS+1)
    mflo      s6, $ac0
    // MULTIPLY(wsptr[2], FIX_1_847759065 + MULTIPLY(wsptr[6], -FIX_0_765366865)
    subu      s4, s4, s5
    addu      t3, t2, s4        // tmp10 = tmp0 + z2;
    mflo      s7, $ac1
    subu      t4, t2, s4        // tmp10 = tmp0 - z2;
    addu      t7, t4, s6
    subu      t8, t4, s6
    addu      t5, t3, s7
    subu      t6, t3, s7
    shra_r.w  t5, t5, 19        // DESCALE(tmp10 + temp2, 19)
    shra_r.w  t6, t6, 19        // DESCALE(tmp10 - temp2, 19)
    shra_r.w  t7, t7, 19        // DESCALE(tmp12 + temp1, 19)
    shra_r.w  t8, t8, 19        // DESCALE(tmp12 - temp1, 19)
    sll       s4, t9, 2
    lw        v0, 12(a2)        // output_buf[ctr]
    shll_s.w  t5, t5, 24
    shll_s.w  t6, t6, 24
    shll_s.w  t7, t7, 24
    shll_s.w  t8, t8, 24
    sra       t5, t5, 24
    sra       t6, t6, 24
    sra       t7, t7, 24
    sra       t8, t8, 24
    addu      v0, v0, a3        // outptr = output_buf[ctr] + output_col
    addiu     t5, t5, 128
    addiu     t6, t6, 128
    addiu     t7, t7, 128
    addiu     t8, t8, 128
    sb        t5, 0(v0)
    sb        t7, 1(v0)
    sb        t8, 2(v0)
    sb        t6, 3(v0)

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j         ra
     nop
END(jsimd_idct_4x4_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_6x6_mips_dspr2)
/*
 * a0     - compptr->dct_table
 * a1     - coef_block
 * a2     - output_buf
 * a3     - output_col
 */
    .set at

    SAVE_REGS_ON_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    addiu     sp, sp, -144
    move      v0, sp
    addiu     v1, v0, 24
    addiu     t9, zero, 5793
    addiu     s0, zero, 10033
    addiu     s1, zero, 2998

1:
    lh        s2, 0(a0)   // q0 = quantptr[ 0]
    lh        s3, 32(a0)  // q1 = quantptr[16]
    lh        s4, 64(a0)  // q2 = quantptr[32]
    lh        t2, 64(a1)  // tmp2 = inptr[32]
    lh        t1, 32(a1)  // tmp1 = inptr[16]
    lh        t0, 0(a1)   // tmp0 = inptr[ 0]
    mul       t2, t2, s4  // tmp2 = tmp2 * q2
    mul       t1, t1, s3  // tmp1 = tmp1 * q1
    mul       t0, t0, s2  // tmp0 = tmp0 * q0
    lh        t6, 16(a1)  // z1 = inptr[ 8]
    lh        t8, 80(a1)  // z3 = inptr[40]
    lh        t7, 48(a1)  // z2 = inptr[24]
    lh        s2, 16(a0)  // q0 = quantptr[ 8]
    lh        s4, 80(a0)  // q2 = quantptr[40]
    lh        s3, 48(a0)  // q1 = quantptr[24]
    mul       t2, t2, t9  // tmp2 = tmp2 * 5793
    mul       t1, t1, s0  // tmp1 = tmp1 * 10033
    sll       t0, t0, 13  // tmp0 = tmp0 << 13
    mul       t6, t6, s2  // z1 = z1 * q0
    mul       t8, t8, s4  // z3 = z3 * q2
    mul       t7, t7, s3  // z2 = z2 * q1
    addu      t3, t0, t2  // tmp10 = tmp0 + tmp2
    sll       t2, t2, 1   // tmp2 = tmp2 << 2
    subu      t4, t0, t2  // tmp11 = tmp0 - tmp2;
    subu      t5, t3, t1  // tmp12 = tmp10 - tmp1
    addu      t3, t3, t1  // tmp10 = tmp10 + tmp1
    addu      t1, t6, t8  // tmp1 = z1 + z3
    mul       t1, t1, s1  // tmp1 = tmp1 * 2998
    shra_r.w  t4, t4, 11  // tmp11 = (tmp11 + 1024) >> 11
    subu      t2, t6, t8  // tmp2 = z1 - z3
    subu      t2, t2, t7  // tmp2 = tmp2 - z2
    sll       t2, t2, 2   // tmp2 = tmp2 << 2
    addu      t0, t6, t7  // tmp0 = z1 + z2
    sll       t0, t0, 13  // tmp0 = tmp0 << 13
    subu      s2, t8, t7  // q0 = z3 - z2
    sll       s2, s2, 13  // q0 = q0 << 13
    addu      t0, t0, t1  // tmp0 = tmp0 + tmp1
    addu      t1, s2, t1  // tmp1 = q0 + tmp1
    addu      s2, t4, t2  // q0 = tmp11 + tmp2
    subu      s3, t4, t2  // q1 = tmp11 - tmp2
    addu      t6, t3, t0  // z1 = tmp10 + tmp0
    subu      t7, t3, t0  // z2 = tmp10 - tmp0
    addu      t4, t5, t1  // tmp11 = tmp12 + tmp1
    subu      t5, t5, t1  // tmp12 = tmp12 - tmp1
    shra_r.w  t6, t6, 11  // z1 = (z1 + 1024) >> 11
    shra_r.w  t7, t7, 11  // z2 = (z2 + 1024) >> 11
    shra_r.w  t4, t4, 11  // tmp11 = (tmp11 + 1024) >> 11
    shra_r.w  t5, t5, 11  // tmp12 = (tmp12 + 1024) >> 11
    sw        s2, 24(v0)
    sw        s3, 96(v0)
    sw        t6, 0(v0)
    sw        t7, 120(v0)
    sw        t4, 48(v0)
    sw        t5, 72(v0)
    addiu     v0, v0, 4
    addiu     a1, a1, 2
    bne       v0, v1, 1b
     addiu    a0, a0, 2

    /* Pass 2: process 6 rows from work array, store into output array. */
    move      v0, sp
    addiu     v1, v0, 144

2:
    lw        t0, 0(v0)
    lw        t2, 16(v0)
    lw        s5, 0(a2)
    addiu     t0, t0, 16
    sll       t0, t0, 13
    mul       t3, t2, t9
    lw        t6, 4(v0)
    lw        t8, 20(v0)
    lw        t7, 12(v0)
    addu      s5, s5, a3
    addu      s6, t6, t8
    mul       s6, s6, s1
    addu      t1, t0, t3
    subu      t4, t0, t3
    subu      t4, t4, t3
    lw        t3, 8(v0)
    mul       t0, t3, s0
    addu      s7, t6, t7
    sll       s7, s7, 13
    addu      s7, s6, s7
    subu      t2, t8, t7
    sll       t2, t2, 13
    addu      t2, s6, t2
    subu      s6, t6, t7
    subu      s6, s6, t8
    sll       s6, s6, 13
    addu      t3, t1, t0
    subu      t5, t1, t0
    addu      t6, t3, s7
    subu      t3, t3, s7
    addu      t7, t4, s6
    subu      t4, t4, s6
    addu      t8, t5, t2
    subu      t5, t5, t2
    shll_s.w  t6, t6, 6
    shll_s.w  t3, t3, 6
    shll_s.w  t7, t7, 6
    shll_s.w  t4, t4, 6
    shll_s.w  t8, t8, 6
    shll_s.w  t5, t5, 6
    sra       t6, t6, 24
    addiu     t6, t6, 128
    sra       t3, t3, 24
    addiu     t3, t3, 128
    sb        t6, 0(s5)
    sra       t7, t7, 24
    addiu     t7, t7, 128
    sb        t3, 5(s5)
    sra       t4, t4, 24
    addiu     t4, t4, 128
    sb        t7, 1(s5)
    sra       t8, t8, 24
    addiu     t8, t8, 128
    sb        t4, 4(s5)
    addiu     v0, v0, 24
    sra       t5, t5, 24
    addiu     t5, t5, 128
    sb        t8, 2(s5)
    addiu     a2, a2,  4
    bne       v0, v1, 2b
     sb       t5, 3(s5)

    addiu     sp, sp, 144

    RESTORE_REGS_FROM_STACK 32, s0, s1, s2, s3, s4, s5, s6, s7

    j         ra
     nop

END(jsimd_idct_6x6_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_12x12_pass1_mips_dspr2)
/*
 * a0     - compptr->dct_table
 * a1     - coef_block
 * a2     - workspace
 */

    SAVE_REGS_ON_STACK 16, s0, s1, s2, s3

    li         a3, 8

1:
    // odd part
    lh         t0, 48(a1)
    lh         t1, 48(a0)
    lh         t2, 16(a1)
    lh         t3, 16(a0)
    lh         t4, 80(a1)
    lh         t5, 80(a0)
    lh         t6, 112(a1)
    lh         t7, 112(a0)
    mul        t0, t0, t1    // z2
    mul        t1, t2, t3    // z1
    mul        t2, t4, t5    // z3
    mul        t3, t6, t7    // z4
    li         t4, 10703     // FIX(1.306562965)
    li         t5, 4433      // FIX_0_541196100
    li         t6, 7053      // FIX(0.860918669)
    mul        t4, t0,t4     // tmp11
    mul        t5, t0,t5     // -tmp14
    addu       t7, t1,t2     // tmp10
    addu       t8, t7,t3     // tmp10 + z4
    mul        t6, t6, t8    // tmp15
    li         t8, 2139      // FIX(0.261052384)
    mul        t8, t7, t8    // MULTIPLY(tmp10, FIX(0.261052384))
    li         t7, 2295      // FIX(0.280143716)
    mul        t7, t1, t7    // MULTIPLY(z1, FIX(0.280143716))
    addu       t9, t2, t3    // z3 + z4
    li         s0, 8565      // FIX(1.045510580)
    mul        t9, t9, s0    // -tmp13
    li         s0, 12112     // FIX(1.478575242)
    mul        s0, t2, s0    // MULTIPLY(z3, FIX(1.478575242)
    li         s1, 12998     // FIX(1.586706681)
    mul        s1, t3, s1    // MULTIPLY(z4, FIX(1.586706681))
    li         s2, 5540      // FIX(0.676326758)
    mul        s2, t1, s2    // MULTIPLY(z1, FIX(0.676326758))
    li         s3, 16244     // FIX(1.982889723)
    mul        s3, t3, s3    // MULTIPLY(z4, FIX(1.982889723))
    subu       t1, t1, t3    // z1-=z4
    subu       t0, t0, t2    // z2-=z3
    addu       t2, t0, t1    // z1+z2
    li         t3, 4433      // FIX_0_541196100
    mul        t2, t2, t3    // z3
    li         t3, 6270      // FIX_0_765366865
    mul        t1, t1, t3    // MULTIPLY(z1, FIX_0_765366865)
    li         t3, 15137     // FIX_0_765366865
    mul        t0, t0, t3    // MULTIPLY(z2, FIX_1_847759065)
    addu       t8, t6, t8    // tmp12
    addu       t3, t8, t4    // tmp12 + tmp11
    addu       t3, t3, t7    // tmp10
    subu       t8, t8, t9    // tmp12 + tmp13
    addu       s0, t5, s0
    subu       t8, t8, s0    // tmp12
    subu       t9, t6, t9
    subu       s1, s1, t4
    addu       t9, t9, s1    // tmp13
    subu       t6, t6, t5
    subu       t6, t6, s2
    subu       t6, t6, s3    // tmp15
    // even part start
    lh         t4, 64(a1)
    lh         t5, 64(a0)
    lh         t7, 32(a1)
    lh         s0, 32(a0)
    lh         s1, 0(a1)
    lh         s2, 0(a0)
    lh         s3, 96(a1)
    lh         v0, 96(a0)
    mul        t4, t4, t5    // DEQUANTIZE(inptr[DCTSIZE*4],quantptr[DCTSIZE*4])
    mul        t5, t7, s0    // DEQUANTIZE(inptr[DCTSIZE*2],quantptr[DCTSIZE*2])
    mul        t7, s1, s2    // DEQUANTIZE(inptr[DCTSIZE*0],quantptr[DCTSIZE*0])
    mul        s0, s3, v0    // DEQUANTIZE(inptr[DCTSIZE*6],quantptr[DCTSIZE*6])
    // odd part end
    addu       t1, t2, t1    // tmp11
    subu       t0, t2, t0    // tmp14
    // update counter and pointers
    addiu      a3, a3, -1
    addiu      a0, a0, 2
    addiu      a1, a1, 2
    // even part rest
    li         s1, 10033
    li         s2, 11190
    mul        t4, t4, s1    // z4
    mul        s1, t5, s2    // z4
    sll        t5, t5, 13    // z1
    sll        t7, t7, 13
    addiu      t7, t7, 1024  // z3
    sll        s0, s0, 13    // z2
    addu       s2, t7, t4    // tmp10
    subu       t4, t7, t4    // tmp11
    subu       s3, t5, s0    // tmp12
    addu       t2, t7, s3    // tmp21
    subu       s3, t7, s3    // tmp24
    addu       t7, s1, s0    // tmp12
    addu       v0, s2, t7    // tmp20
    subu       s2, s2, t7    // tmp25
    subu       s1, s1, t5    // z4 - z1
    subu       s1, s1, s0    // tmp12
    addu       s0, t4, s1    // tmp22
    subu       t4, t4, s1    // tmp23
    // final output stage
    addu       t5, v0, t3
    subu       v0, v0, t3
    addu       t3, t2, t1
    subu       t2, t2, t1
    addu       t1, s0, t8
    subu       s0, s0, t8
    addu       t8, t4, t9
    subu       t4, t4, t9
    addu       t9, s3, t0
    subu       s3, s3, t0
    addu       t0, s2, t6
    subu       s2, s2, t6
    sra        t5, t5, 11
    sra        t3, t3, 11
    sra        t1, t1, 11
    sra        t8, t8, 11
    sra        t9, t9, 11
    sra        t0, t0, 11
    sra        s2, s2, 11
    sra        s3, s3, 11
    sra        t4, t4, 11
    sra        s0, s0, 11
    sra        t2, t2, 11
    sra        v0, v0, 11
    sw         t5, 0(a2)
    sw         t3, 32(a2)
    sw         t1, 64(a2)
    sw         t8, 96(a2)
    sw         t9, 128(a2)
    sw         t0, 160(a2)
    sw         s2, 192(a2)
    sw         s3, 224(a2)
    sw         t4, 256(a2)
    sw         s0, 288(a2)
    sw         t2, 320(a2)
    sw         v0, 352(a2)
    bgtz       a3, 1b
     addiu     a2, a2, 4

    RESTORE_REGS_FROM_STACK 16, s0, s1, s2, s3

    j          ra
     nop

END(jsimd_idct_12x12_pass1_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_idct_12x12_pass2_mips_dspr2)
/*
 * a0     - workspace
 * a1     - output
 */

    SAVE_REGS_ON_STACK 16, s0, s1, s2, s3

    li        a3, 12

1:
    // Odd part
    lw        t0, 12(a0)
    lw        t1, 4(a0)
    lw        t2, 20(a0)
    lw        t3, 28(a0)
    li        t4, 10703     // FIX(1.306562965)
    li        t5, 4433      // FIX_0_541196100
    mul       t4, t0, t4    // tmp11
    mul       t5, t0, t5    // -tmp14
    addu      t6, t1, t2    // tmp10
    li        t7, 2139      // FIX(0.261052384)
    mul       t7, t6, t7    // MULTIPLY(tmp10, FIX(0.261052384))
    addu      t6, t6, t3    // tmp10 + z4
    li        t8, 7053      // FIX(0.860918669)
    mul       t6, t6, t8    // tmp15
    li        t8, 2295      // FIX(0.280143716)
    mul       t8, t1, t8    // MULTIPLY(z1, FIX(0.280143716))
    addu      t9, t2, t3    // z3 + z4
    li        s0, 8565      // FIX(1.045510580)
    mul       t9, t9, s0    // -tmp13
    li        s0, 12112     // FIX(1.478575242)
    mul       s0, t2, s0    // MULTIPLY(z3, FIX(1.478575242))
    li        s1, 12998     // FIX(1.586706681)
    mul       s1, t3, s1    // MULTIPLY(z4, FIX(1.586706681))
    li        s2, 5540      // FIX(0.676326758)
    mul       s2, t1, s2    // MULTIPLY(z1, FIX(0.676326758))
    li        s3, 16244     // FIX(1.982889723)
    mul       s3, t3, s3    // MULTIPLY(z4, FIX(1.982889723))
    subu      t1, t1, t3    // z1 -= z4
    subu      t0, t0, t2    // z2 -= z3
    addu      t2, t1, t0    // z1 + z2
    li        t3, 4433      // FIX_0_541196100
    mul       t2, t2, t3    // z3
    li        t3, 6270      // FIX_0_765366865
    mul       t1, t1, t3    // MULTIPLY(z1, FIX_0_765366865)
    li        t3, 15137     // FIX_1_847759065
    mul       t0, t0, t3    // MULTIPLY(z2, FIX_1_847759065)
    addu      t3, t6, t7    // tmp12
    addu      t7, t3, t4
    addu      t7, t7, t8    // tmp10
    subu      t3, t3, t9
    subu      t3, t3, t5
    subu      t3, t3, s0    // tmp12
    subu      t9, t6, t9
    subu      t9, t9, t4
    addu      t9, t9, s1    // tmp13
    subu      t6, t6, t5
    subu      t6, t6, s2
    subu      t6, t6, s3    // tmp15
    addu      t1, t2, t1    // tmp11
    subu      t0, t2, t0    // tmp14
    // even part
    lw        t2, 16(a0)    // z4
    lw        t4, 8(a0)     // z1
    lw        t5, 0(a0)     // z3
    lw        t8, 24(a0)    // z2
    li        s0, 10033     // FIX(1.224744871)
    li        s1, 11190     // FIX(1.366025404)
    mul       t2, t2, s0    // z4
    mul       s0, t4, s1    // z4
    addiu     t5, t5, 0x10
    sll       t5, t5, 13    // z3
    sll       t4, t4, 13    // z1
    sll       t8, t8, 13    // z2
    subu      s1, t4, t8    // tmp12
    addu      s2, t5, t2    // tmp10
    subu      t2, t5, t2    // tmp11
    addu      s3, t5, s1    // tmp21
    subu      s1, t5, s1    // tmp24
    addu      t5, s0, t8    // tmp12
    addu      v0, s2, t5    // tmp20
    subu      t5, s2, t5    // tmp25
    subu      t4, s0, t4
    subu      t4, t4, t8    // tmp12
    addu      t8, t2, t4    // tmp22
    subu      t2, t2, t4    // tmp23
    // increment counter and pointers
    addiu     a3, a3, -1
    addiu     a0, a0, 32
    // Final stage
    addu      t4, v0, t7
    subu      v0, v0, t7
    addu      t7, s3, t1
    subu      s3, s3, t1
    addu      t1, t8, t3
    subu      t8, t8, t3
    addu      t3, t2, t9
    subu      t2, t2, t9
    addu      t9, s1, t0
    subu      s1, s1, t0
    addu      t0, t5, t6
    subu      t5, t5, t6
    sll       t4, t4, 4
    sll       t7, t7, 4
    sll       t1, t1, 4
    sll       t3, t3, 4
    sll       t9, t9, 4
    sll       t0, t0, 4
    sll       t5, t5, 4
    sll       s1, s1, 4
    sll       t2, t2, 4
    sll       t8, t8, 4
    sll       s3, s3, 4
    sll       v0, v0, 4
    shll_s.w  t4, t4, 2
    shll_s.w  t7, t7, 2
    shll_s.w  t1, t1, 2
    shll_s.w  t3, t3, 2
    shll_s.w  t9, t9, 2
    shll_s.w  t0, t0, 2
    shll_s.w  t5, t5, 2
    shll_s.w  s1, s1, 2
    shll_s.w  t2, t2, 2
    shll_s.w  t8, t8, 2
    shll_s.w  s3, s3, 2
    shll_s.w  v0, v0, 2
    srl       t4, t4, 24
    srl       t7, t7, 24
    srl       t1, t1, 24
    srl       t3, t3, 24
    srl       t9, t9, 24
    srl       t0, t0, 24
    srl       t5, t5, 24
    srl       s1, s1, 24
    srl       t2, t2, 24
    srl       t8, t8, 24
    srl       s3, s3, 24
    srl       v0, v0, 24
    lw        t6, 0(a1)
    addiu     t4, t4, 0x80
    addiu     t7, t7, 0x80
    addiu     t1, t1, 0x80
    addiu     t3, t3, 0x80
    addiu     t9, t9, 0x80
    addiu     t0, t0, 0x80
    addiu     t5, t5, 0x80
    addiu     s1, s1, 0x80
    addiu     t2, t2, 0x80
    addiu     t8, t8, 0x80
    addiu     s3, s3, 0x80
    addiu     v0, v0, 0x80
    sb        t4, 0(t6)
    sb        t7, 1(t6)
    sb        t1, 2(t6)
    sb        t3, 3(t6)
    sb        t9, 4(t6)
    sb        t0, 5(t6)
    sb        t5, 6(t6)
    sb        s1, 7(t6)
    sb        t2, 8(t6)
    sb        t8, 9(t6)
    sb        s3, 10(t6)
    sb        v0, 11(t6)
    bgtz      a3, 1b
     addiu    a1, a1, 4

    RESTORE_REGS_FROM_STACK 16, s0, s1, s2, s3

    jr        ra
     nop

END(jsimd_idct_12x12_pass2_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_convsamp_mips_dspr2)
/*
 * a0     - sample_data
 * a1     - start_col
 * a2     - workspace
 */

    lw             t0, 0(a0)
    li             t7, 0xff80ff80
    addu           t0, t0, a1
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    lw             t0, 4(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 0(a2)
    usw            t4, 4(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 8(a2)
    usw            t6, 12(a2)

    lw             t0, 8(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 16(a2)
    usw            t4, 20(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 24(a2)
    usw            t6, 28(a2)

    lw             t0, 12(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 32(a2)
    usw            t4, 36(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 40(a2)
    usw            t6, 44(a2)

    lw             t0, 16(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 48(a2)
    usw            t4, 52(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 56(a2)
    usw            t6, 60(a2)

    lw             t0, 20(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 64(a2)
    usw            t4, 68(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 72(a2)
    usw            t6, 76(a2)

    lw             t0, 24(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 80(a2)
    usw            t4, 84(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 88(a2)
    usw            t6, 92(a2)

    lw             t0, 28(a0)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu           t0, t0, a1
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    ulw            t1, 0(t0)
    ulw            t2, 4(t0)
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 96(a2)
    usw            t4, 100(a2)
    preceu.ph.qbr  t3, t1
    preceu.ph.qbl  t4, t1
    usw            t5, 104(a2)
    usw            t6, 108(a2)
    preceu.ph.qbr  t5, t2
    preceu.ph.qbl  t6, t2
    addu.ph        t3, t3, t7
    addu.ph        t4, t4, t7
    addu.ph        t5, t5, t7
    addu.ph        t6, t6, t7
    usw            t3, 112(a2)
    usw            t4, 116(a2)
    usw            t5, 120(a2)
    usw            t6, 124(a2)

    j              ra
     nop

END(jsimd_convsamp_mips_dspr2)

/*****************************************************************************/
LEAF_MIPS_DSPR2(jsimd_convsamp_float_mips_dspr2)
/*
 * a0     - sample_data
 * a1     - start_col
 * a2     - workspace
 */

    .set at

    lw       t0, 0(a0)
    addu     t0, t0, a1
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 4(a0)
    swc1     f2, 0(a2)
    swc1     f4, 4(a2)
    swc1     f6, 8(a2)
    addu     t0, t0, a1
    swc1     f8, 12(a2)
    swc1     f10, 16(a2)
    swc1     f12, 20(a2)
    swc1     f14, 24(a2)
    swc1     f16, 28(a2)
    //elemr 1
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 8(a0)
    swc1     f2, 32(a2)
    swc1     f4, 36(a2)
    swc1     f6, 40(a2)
    addu     t0, t0, a1
    swc1     f8, 44(a2)
    swc1     f10, 48(a2)
    swc1     f12, 52(a2)
    swc1     f14, 56(a2)
    swc1     f16, 60(a2)
    //elemr 2
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 12(a0)
    swc1     f2, 64(a2)
    swc1     f4, 68(a2)
    swc1     f6, 72(a2)
    addu     t0, t0, a1
    swc1     f8, 76(a2)
    swc1     f10, 80(a2)
    swc1     f12, 84(a2)
    swc1     f14, 88(a2)
    swc1     f16, 92(a2)
    //elemr 3
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 16(a0)
    swc1     f2, 96(a2)
    swc1     f4, 100(a2)
    swc1     f6, 104(a2)
    addu     t0, t0, a1
    swc1     f8, 108(a2)
    swc1     f10, 112(a2)
    swc1     f12, 116(a2)
    swc1     f14, 120(a2)
    swc1     f16, 124(a2)
    //elemr 4
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 20(a0)
    swc1     f2, 128(a2)
    swc1     f4, 132(a2)
    swc1     f6, 136(a2)
    addu     t0, t0, a1
    swc1     f8, 140(a2)
    swc1     f10, 144(a2)
    swc1     f12, 148(a2)
    swc1     f14, 152(a2)
    swc1     f16, 156(a2)
    //elemr 5
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 24(a0)
    swc1     f2, 160(a2)
    swc1     f4, 164(a2)
    swc1     f6, 168(a2)
    addu     t0, t0, a1
    swc1     f8, 172(a2)
    swc1     f10, 176(a2)
    swc1     f12, 180(a2)
    swc1     f14, 184(a2)
    swc1     f16, 188(a2)
    //elemr 6
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    lw       t0, 28(a0)
    swc1     f2, 192(a2)
    swc1     f4, 196(a2)
    swc1     f6, 200(a2)
    addu     t0, t0, a1
    swc1     f8, 204(a2)
    swc1     f10, 208(a2)
    swc1     f12, 212(a2)
    swc1     f14, 216(a2)
    swc1     f16, 220(a2)
    //elemr 7
    lbu      t1, 0(t0)
    lbu      t2, 1(t0)
    lbu      t3, 2(t0)
    lbu      t4, 3(t0)
    lbu      t5, 4(t0)
    lbu      t6, 5(t0)
    lbu      t7, 6(t0)
    lbu      t8, 7(t0)
    addiu    t1, t1, -128
    addiu    t2, t2, -128
    addiu    t3, t3, -128
    addiu    t4, t4, -128
    addiu    t5, t5, -128
    addiu    t6, t6, -128
    addiu    t7, t7, -128
    addiu    t8, t8, -128
    mtc1     t1, f2
    mtc1     t2, f4
    mtc1     t3, f6
    mtc1     t4, f8
    mtc1     t5, f10
    mtc1     t6, f12
    mtc1     t7, f14
    mtc1     t8, f16
    cvt.s.w  f2, f2
    cvt.s.w  f4, f4
    cvt.s.w  f6, f6
    cvt.s.w  f8, f8
    cvt.s.w  f10, f10
    cvt.s.w  f12, f12
    cvt.s.w  f14, f14
    cvt.s.w  f16, f16
    swc1     f2, 224(a2)
    swc1     f4, 228(a2)
    swc1     f6, 232(a2)
    swc1     f8, 236(a2)
    swc1     f10, 240(a2)
    swc1     f12, 244(a2)
    swc1     f14, 248(a2)
    swc1     f16, 252(a2)

    j        ra
     nop

END(jsimd_convsamp_float_mips_dspr2)

/*****************************************************************************/
