/*
 * 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_dspr2_asm.h"


/*****************************************************************************/
LEAF_DSPR2(jsimd_c_null_convert_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_dspr2)


/*****************************************************************************/
/*
 * jsimd_extrgb_ycc_convert_dspr2
 * jsimd_extbgr_ycc_convert_dspr2
 * jsimd_extrgbx_ycc_convert_dspr2
 * jsimd_extbgrx_ycc_convert_dspr2
 * jsimd_extxbgr_ycc_convert_dspr2
 * jsimd_extxrgb_ycc_convert_dspr2
 *
 * Colorspace conversion RGB -> YCbCr
 */

.macro GENERATE_JSIMD_RGB_YCC_CONVERT_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_DSPR2(jsimd_\colorid\()_ycc_convert_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_dspr2)

.purgem DO_RGB_TO_YCC

.endm

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


/*****************************************************************************/
/*
 * jsimd_ycc_extrgb_convert_dspr2
 * jsimd_ycc_extbgr_convert_dspr2
 * jsimd_ycc_extrgbx_convert_dspr2
 * jsimd_ycc_extbgrx_convert_dspr2
 * jsimd_ycc_extxbgr_convert_dspr2
 * jsimd_ycc_extxrgb_convert_dspr2
 *
 * Colorspace conversion YCbCr -> RGB
 */

.macro GENERATE_JSIMD_YCC_RGB_CONVERT_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_DSPR2(jsimd_ycc_\colorid\()_convert_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_dspr2)

.purgem STORE_YCC_TO_RGB

.endm

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


/*****************************************************************************/
/*
 * jsimd_extrgb_gray_convert_dspr2
 * jsimd_extbgr_gray_convert_dspr2
 * jsimd_extrgbx_gray_convert_dspr2
 * jsimd_extbgrx_gray_convert_dspr2
 * jsimd_extxbgr_gray_convert_dspr2
 * jsimd_extxrgb_gray_convert_dspr2
 *
 * Colorspace conversion RGB -> GRAY
 */

.macro GENERATE_JSIMD_RGB_GRAY_CONVERT_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_DSPR2(jsimd_\colorid\()_gray_convert_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_dspr2)

.purgem DO_RGB_TO_GRAY

.endm

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


/*****************************************************************************/
/*
 * jsimd_h2v2_merged_upsample_dspr2
 * jsimd_h2v2_extrgb_merged_upsample_dspr2
 * jsimd_h2v2_extrgbx_merged_upsample_dspr2
 * jsimd_h2v2_extbgr_merged_upsample_dspr2
 * jsimd_h2v2_extbgrx_merged_upsample_dspr2
 * jsimd_h2v2_extxbgr_merged_upsample_dspr2
 * jsimd_h2v2_extxrgb_merged_upsample_dspr2
 *
 * Merged h2v2 upsample routines
 */
.macro GENERATE_H2V2_MERGED_UPSAMPLE_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_DSPR2(jsimd_h2v2_\colorid\()_merged_upsample_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_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_DSPR2 extrgb,  6, 0, 1, 2, 6, 3, 4, 5, 6
GENERATE_H2V2_MERGED_UPSAMPLE_DSPR2 extbgr,  6, 2, 1, 0, 3, 5, 4, 3, 6
GENERATE_H2V2_MERGED_UPSAMPLE_DSPR2 extrgbx, 8, 0, 1, 2, 3, 4, 5, 6, 7
GENERATE_H2V2_MERGED_UPSAMPLE_DSPR2 extbgrx, 8, 2, 1, 0, 3, 6, 5, 4, 7
GENERATE_H2V2_MERGED_UPSAMPLE_DSPR2 extxbgr, 8, 3, 2, 1, 0, 7, 6, 5, 4
GENERATE_H2V2_MERGED_UPSAMPLE_DSPR2 extxrgb, 8, 1, 2, 3, 0, 5, 6, 7, 4


/*****************************************************************************/
/*
 * jsimd_h2v1_merged_upsample_dspr2
 * jsimd_h2v1_extrgb_merged_upsample_dspr2
 * jsimd_h2v1_extrgbx_merged_upsample_dspr2
 * jsimd_h2v1_extbgr_merged_upsample_dspr2
 * jsimd_h2v1_extbgrx_merged_upsample_dspr2
 * jsimd_h2v1_extxbgr_merged_upsample_dspr2
 * jsimd_h2v1_extxrgb_merged_upsample_dspr2
 *
 * Merged h2v1 upsample routines
 */

.macro GENERATE_H2V1_MERGED_UPSAMPLE_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_DSPR2(jsimd_h2v1_\colorid\()_merged_upsample_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_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_DSPR2 extrgb,  6, 0, 1, 2, 6, 3, 4, 5, 6
GENERATE_H2V1_MERGED_UPSAMPLE_DSPR2 extbgr,  6, 2, 1, 0, 3, 5, 4, 3, 6
GENERATE_H2V1_MERGED_UPSAMPLE_DSPR2 extrgbx, 8, 0, 1, 2, 3, 4, 5, 6, 7
GENERATE_H2V1_MERGED_UPSAMPLE_DSPR2 extbgrx, 8, 2, 1, 0, 3, 6, 5, 4, 7
GENERATE_H2V1_MERGED_UPSAMPLE_DSPR2 extxbgr, 8, 3, 2, 1, 0, 7, 6, 5, 4
GENERATE_H2V1_MERGED_UPSAMPLE_DSPR2 extxrgb, 8, 1, 2, 3, 0, 5, 6, 7, 4


/*****************************************************************************/
/*
 * jsimd_h2v2_fancy_upsample_dspr2
 *
 * Fancy processing for the common case of 2:1 horizontal and 2:1 vertical.
 */
LEAF_DSPR2(jsimd_h2v2_fancy_upsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v1_fancy_upsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v1_downsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v2_downsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v2_smooth_downsample_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 address
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 address
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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_int_upsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v1_upsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_h2v2_upsample_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_islow_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], quantptr[DCTSIZE*7])
    mul         t1, t2, t3      // DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3])
    mul         t2, t4, t5      // DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5])
    mul         t3, t6, t7      // DEQUANTIZE(inptr[DCTSIZE*1], quantptr[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], quantptr[DCTSIZE*2])
    addiu       t9, zero, 6270   // FIX_0_765366865
    mul         s1, t6, t7       // DEQUANTIZE(inptr[DCTSIZE*6], quantptr[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], quantptr[DCTSIZE*0])
    mul         t6, t6, t7       // DEQUANTIZE(inptr[DCTSIZE*4], quantptr[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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_ifast_cols_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_ifast_rows_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_fdct_islow_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_dspr2)


/**************************************************************************/
LEAF_DSPR2(jsimd_fdct_ifast_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_quantize_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_quantize_float_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_2x2_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_4x4_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_6x6_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_12x12_pass1_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_idct_12x12_pass2_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_convsamp_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_dspr2)


/*****************************************************************************/
LEAF_DSPR2(jsimd_convsamp_float_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_dspr2)

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