all.s 2.21 KB

#include "rsp.h"

#include "all.h"

.base	RSPBOOTBASE

proc_mb:
    nop
    nop			/* Get MB info here */
    nop
    nop

    lh	mbtype,		 MBH_MBTYPE(rzero)

    andi flag,   mbtype,	MBT_REQUANT

    blez flag, dont_new_qmat
    nop

do_new_qmat:
    lh	quant,		 MBH_QUANT(rzero)
    jal new_qmat
    nop

dont_new_qmat:

    andi flag,  mbtype,	MBT_INTRA
    bgtz flag, dont_mc
    nop

    andi flag,  mbtype,	MBT_FOR
    blez flag, dont_for

#include "mc_io.h"

    lh	 mc_in_mvx,  MBH_MVFX(rzero)
    lh	 mc_in_mvy,  MBH_MVFY(rzero)
    addi mc_in_dat,  rzero, MB_DATA_FREF
    addi mc_out_dat, rzero, MB_DATA_FREF
    addi mc_in_blend, rzero, 0
    jal	mc
    nop

    andi flag,  mbtype,	MBT_BAK
    blez flag, dont_bak

both:

    lh	 mc_in_mvx,  MBH_MVBX(rzero)
    lh	 mc_in_mvy,  MBH_MVBY(rzero)
    addi mc_in_dat,  rzero, MB_DATA_BREF
    addi mc_out_dat, rzero, MB_DATA_FREF
    addi mc_in_blend, rzero, 1
    jal	mc
    nop

    j	dont_mc
    nop

dont_for:

    andi flag,  mbtype,	MBT_BAK
    blez flag, dont_bak

    lh	 mc_in_mvx,  MBH_MVBX(rzero)
    lh	 mc_in_mvy,  MBH_MVBY(rzero)
    addi mc_in_dat,  rzero, MB_DATA_BREF
    addi mc_out_dat, rzero, MB_DATA_FREF	/* Put the output in the right place! */
    addi mc_in_blend, rzero, 0
    jal	mc
    nop

#include "mc_io.h"

dont_bak:
    nop

dont_mc:

    lh	cbp,	MBH_CBP(rzero)

    nop
    nop
    nop
    nop

    blez cbp, skip_mb
    nop

#include "idct_io.h"


    addi idct_in_dat,  rzero, MB_DATA
    addi idct_out_dat, rzero, MB_DATA
    addi idct_in_cbp,  cbp, 0
    jal	iq
    nop

    addi idct_in_dat,  rzero, MB_DATA
    addi idct_out_dat, rzero, MB_DATA
    addi idct_in_cbp,  cbp, 0
    jal	idct
    nop

#include "idct_io.h"

#include "mc_io.h"

    addi mc_in_dat,  rzero, MB_DATA
    addi mc_out_dat, rzero, MB_DATA
    addi mc_in_cbp,  cbp, 0
    jal	mc_comb
    nop

#include "mc_io.h"

skip_mb:

    nop
    nop

    jal	recon_sav
    nop

    nop
    nop			/* break here to output results */
    nop
    nop

    j	proc_mb
    nop

#include "all_un.h"

new_qmat:
	nop
	ret
	nop

iq:
	nop
	ret
	nop

#include "idct_io.h"
#include "idct.s"
#include "idct_io.h"

#include "mc_io.h"
#include "mc.s"
#include "mc_io.h"

mc_comb:
	nop
	ret
	nop

recon_sav:
	nop
	ret
	nop