#define REALNAME ASMNAME
#define ASSEMBLER
#include "common.h"

#define FETCH	ld
#define	STACKSIZE	160
#define gsLQC1(base,fq,ft,offset) .word(0x32<<26|base<<21|ft<<16|0x1<<15|offset<<6|0x1<<5|fq)
#define gsSQC1(base,fq,ft,offset) .word(0x3A<<26|base<<21|ft<<16|0x1<<15|offset<<6|0x1<<5|fq)


#####	Parameter registers	####

#define M	$4
#define	N	$5
#define	K	$6
#define A	$8
#define B	$9
#define C	$10
#define LDC	$11

####	Pointer A, B, C	####
#define AO	$12
#define BO	$13

#define CO1	$14
#define CO2	$15
#define CO3	$16
#define CO4	$17

#define PREA	$18
#define PREB	$19

####	Used registers	####
#define A1	$f0
#define A2	$f1
#define A3	$f2
#define A4	$f3
#define A5	$f4
#define	A6	$f5
#define	A7	$f6
#define	A8	$f7

#define B1	$f8
#define B2	$f9
#define B3	$f10
#define B4	$f11
#define B5	$f12
#define	B6	$f13
#define	B7	$f14
#define	B8	$f15

#define C11	$f16
#define C12	$f17
#define C21	$f18
#define C22	$f19
#define C31	$f20
#define C32	$f21
#define C41	$f22
#define C42	$f23
#define C13	$f24
#define C14	$f25
#define C23	$f26
#define C24	$f27
#define C33	$f28
#define C34	$f29
#define C43	$f30
#define C44	$f31

#define I	$2
#define J	$3
#define L	$7

####	Alpha register	####
#define ALPHA	$f15

#define F31 31
#define F30 30
#define F29 29
#define F28 28
#define F27 27
#define F26 26
#define F25 25
#define F24 24
#define F23 23
#define F22 22
#define F21 21
#define F20 20
#define F19 19
#define F18 18
#define F17 17
#define F16 16
#define F15 15
#define F14 14
#define F13 13
#define F12 12
#define F11 11
#define F10 10
#define F9 9
#define F8 8
#define F7 7
#define F6 6
#define F5 5
#define F4 4
#define F3 3
#define F2 2
#define F1 1
#define F0 0

#define	R12	12
#define	R13	13

#define R14	14
#define R15	15
#define	R16	16
#define	R17	17

#if defined(TRMMKERNEL)
#define	OFFSET	$23
#define	KK		$24
#define TEMP	$25
#endif

#	.text
#	.align	2
##	.globl	gemm
#	.set	nomips16
#	.ent	gemm
#	.type	gemm, @function
#gemm:
#	.frame	$sp,STACKSIZE,$31		# vars= 48, regs= 1/0, args= 0, gp= 0
#	.mask	0x40000000,-8
#	.fmask	0x00000000,0
#	.set	noreorder
#	.set	nomacro


	PROLOGUE

	daddiu	$sp,$sp,-STACKSIZE

	sd	$16,   0($sp)
	sd	$17,   8($sp)
	sd	$18,  16($sp)
	sd	$19,  24($sp)
	sd	$20,  32($sp)
	sd	$21,  40($sp)
	sd	$22,  48($sp)

	sdc1	$f24, 56($sp)
	sdc1	$f25, 64($sp)
	sdc1	$f26, 72($sp)
	sdc1	$f27, 80($sp)
	sdc1	$f28, 88($sp)

#if defined(TRMMKERNEL)
	sd	$23,  96($sp)
	sd	$24, 104($sp)
	sd	$25, 112($sp)

	LDARG	OFFSET, 160($sp)
#endif

#ifndef __64BIT__
	sdc1	$f20,120($sp)
	sdc1	$f21,128($sp)
	sdc1	$f22,136($sp)
	sdc1	$f23,144($sp)
#endif

	.align	4
.L4:
	dsra	J, N, 2				#	NR=4
	dsll	LDC, LDC, BASE_SHIFT#	LDC*SIZE

#if	defined(TRMMKERNEL) && !defined(LEFT)
	neg		KK, OFFSET
#endif

	blez	J, .L2
	ST		ALPHA, 152($sp)

.L48:
	dsra	I, M, 3				#	MR=8
	dsll	PREA, K, BASE_SHIFT

	move	AO, A				#	Reset A
	move	CO1, C

	daddu	CO2, C,   LDC
	daddu	CO3, CO2, LDC

	daddu	CO4, CO3, LDC
	daddu	PREA, A, PREA

#if defined(TRMMKERNEL) && defined(LEFT)
	move	KK, OFFSET
#endif

	blez	I, .L44
	daddu	C,   CO4, LDC

	.align	4
.L481:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) ||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, 3 + BASE_SHIFT	# kk*8mr*datasize
	dsll	TEMP, KK, 2 + BASE_SHIFT

	daddu	AO, AO, L			#	AO point to the data addr
	daddu	BO, B,  TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	dsll	PREB, K, BASE_SHIFT
	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11
	FETCH	$0, 4 * SIZE(CO1)

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11
	FETCH	$0, 4 * SIZE(CO2)

	daddu	PREB, B, PREB
	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	FETCH	$0, 4 * SIZE(CO3)

	PLU		B3,	B1, B1
	FETCH	$0, 0 * SIZE(CO4)

	PLU		B4, B2, B2
	FETCH	$0, 4 * SIZE(CO4)

#if (defined(LEFT) && !defined(TRANSA)) ||\
		 (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK			#	TEMP is the length of the data part
#elif defined(LEFT)
	daddiu	TEMP, KK, 8
#else
	daddiu	TEMP, KK, 4
#endif
	dsra	L, TEMP, 6
	blez	L, .L482
	NOP
#else
								#	GEMM PART
	move	BO, B				#	Reset	B
	dsra	L, K, 6				#	UnRoll	K=64

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	dsll	PREB, K, BASE_SHIFT
	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11
	FETCH	$0, 4 * SIZE(CO1)

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11
	FETCH	$0, 4 * SIZE(CO2)

	daddu	PREB, B, PREB
	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	FETCH	$0, 4 * SIZE(CO3)

	PLU		B3,	B1, B1
	FETCH	$0, 0 * SIZE(CO4)

	PLU		B4, B2, B2
	blez	L, .L482
	FETCH	$0, 4 * SIZE(CO4)
#endif

.L4810:
	daddiu	L, L, -1
	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	bgtz	L, .L4810
	MADPS	C44, C44, A8, B8

	.align	4
.L482:
#ifndef TRMMKERNEL
	andi	L, K, 32
#else
	andi	L, TEMP, 32
#endif
	blez	L, .L483
	NOP

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8


	.align	4
.L483:
#ifndef TRMMKERNEL
	andi	L, K, 16
#else
	andi	L, TEMP, 16
#endif
	blez	L, .L484
	NOP

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8


	.align	4
.L484:
#ifndef TRMMKERNEL
	andi	L, K, 8
#else
	andi	L, TEMP, 8
#endif
	blez	L, .L485
	NOP

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8


	.align	4
.L485:
#ifndef TRMMKERNEL
	andi	L, K, 4
#else
	andi	L, TEMP, 4
#endif
	blez	L, .L486
	NOP

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 4)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 5)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 6)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 7)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 8 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 32 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 16 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 20 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 24 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 28 * SIZE(PREA)
	daddiu	PREA, PREA, 32 * SIZE

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8


	.align	4
.L486:
#ifndef TRMMKERNEL
	andi	L, K, 2
#else
	andi	L, TEMP, 2
#endif
	blez	L, .L487
	NOP

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 8 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 16 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	PLU		B7,	B5, B5
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C24, C24, A2, B4
	PLU		B8, B6, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4

	MADPS	C11, C11, A5, B5
	MADPS	C21, C21, A6, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C12, C12, A5, B6
	MADPS	C22, C22, A6, B6
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C31, C31, A7, B5
	MADPS	C41, C41, A8, B5
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C32, C32, A7, B6
	MADPS	C42, C42, A8, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C13, C13, A5, B7
	MADPS	C23, C23, A6, B7
	daddiu	PREB, PREB, 8 * SIZE

	MADPS	C33, C33, A7, B7
	MADPS	C43, C43, A8, B7

	MADPS	C14, C14, A5, B8
	PLU		B3,	B1, B1
	FETCH	$0, 8 * SIZE(PREA)

	MADPS	C24, C24, A6, B8
	PLU		B4, B2, B2
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C34, C34, A7, B8
	MADPS	C44, C44, A8, B8
	daddiu	PREA, PREA, 16 * SIZE


	.align	4
.L487:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L480
	LD		ALPHA, 152($sp)

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1

	MADPS	C12, C12, A1, B2
	MADPS	C22, C22, A2, B2

	MADPS	C31, C31, A3, B1
	MADPS	C41, C41, A4, B1

	MADPS	C32, C32, A3, B2
	MADPS	C42, C42, A4, B2

	MADPS	C13, C13, A1, B3
	daddiu	BO, BO, 4 * SIZE	#	4KR*4NR
	MADPS	C23, C23, A2, B3
	daddiu	AO, AO, 8 * SIZE 	#	4KR*8MR

	MADPS	C33, C33, A3, B3
	MADPS	C43, C43, A4, B3

	MADPS	C14, C14, A1, B4
	MADPS	C24, C24, A2, B4

	MADPS	C34, C34, A3, B4
	MADPS	C44, C44, A4, B4



	.align	4
.L480:							#	Write Back
#ifndef TRMMKERNEL
	daddiu	I, I, -1
	CVTU	A1, C13				#	A1=C13.upper=c12
	CVTU	A2, C11				#	A2=C11.upper=c22

	CVTU	A3, C23				#	A3=C23.upper=c14
	LD		B1, 1 * SIZE(CO1)

	CVTU	A4, C21				#	A4=C21.upper=c24
	LD		B2, 1 * SIZE(CO2)

	CVTU	A5, C33				#	A5=C33.upper=c16
	LD		B3, 3 * SIZE(CO1)

	CVTU	A6, C31				#	A6=C31.upper=c26
	LD		B4, 3 * SIZE(CO2)

	CVTU	A7, C43				#	A7=C43.upper=c18
	LD		B5, 5 * SIZE(CO1)

	CVTU	A8, C41				#	A8=C41.upper=c28
	LD		B6, 5 * SIZE(CO2)

	MADD	A1, B1, A1, ALPHA 		#	c12
	LD		B7, 7 * SIZE(CO1)

	MADD	A2, B2, A2, ALPHA 		#	c22
	LD		B1, 7 * SIZE(CO2)

	MADD	A3, B3, A3, ALPHA 		#	c14
	LD		B2, 0 * SIZE(CO1)

	MADD	A4, B4, A4, ALPHA 		#	c24
	LD		B3, 0 * SIZE(CO2)

	MADD	A5, B5, A5, ALPHA 		#	c16
	LD		B4, 2 * SIZE(CO1)

	MADD	A6, B6, A6, ALPHA 		#	c26
	LD		B5, 2 * SIZE(CO2)

	MADD	A7, B7, A7, ALPHA 		#	c18
	LD		B6, 4 * SIZE(CO1)

	MADD	A8, B1, A8, ALPHA 		#	c28
	ST		A1, 1 * SIZE(CO1)

	MADD	C11, B2, C11, ALPHA 		#	c12
	LD		B7, 4 * SIZE(CO2)

	MADD	C13, B3, C13, ALPHA 		#	c22
	ST		A2, 1 * SIZE(CO2)

	MADD	C21, B4, C21, ALPHA 		#	c14
	LD		A1, 6 * SIZE(CO1)

	MADD	C23, B5, C23, ALPHA 		#	c24
	ST		A3, 3 * SIZE(CO1)

	MADD	C31, B6, C31, ALPHA 		#	c16
	LD		A2, 6 * SIZE(CO2)

	MADD	C33, B7, C33, ALPHA 		#	c26
	ST		A4, 3 * SIZE(CO2)

	ST		A5, 5 * SIZE(CO1)
	ST		A6, 5 * SIZE(CO2)
	ST		A7, 7 * SIZE(CO1)
	ST		A8, 7 * SIZE(CO2)

	MADD	C41, A1, C41, ALPHA 		#	c18
	ST		C11, 0 * SIZE(CO1)

	MADD	C43, A2, C43, ALPHA 		#	c28
	ST		C13, 0 * SIZE(CO2)

	ST		C21, 2 * SIZE(CO1)
	ST		C23, 2 * SIZE(CO2)
	ST		C31, 4 * SIZE(CO1)
	ST		C33, 4 * SIZE(CO2)
	ST		C41, 6 * SIZE(CO1)

	CVTU	A1, C14				#	B1=C12.upper=c42
	ST		C43, 6 * SIZE(CO2)

	CVTU	A2, C12				#	B2=C14.upper=c32
	LD		B1, 1 * SIZE(CO3)

	CVTU	A3, C24				#	B3=C22.upper=c44
	LD		B2, 1 * SIZE(CO4)

	CVTU	A4, C22				#	B4=C24.upper=c34
	LD		B3, 3 * SIZE(CO3)

	CVTU	A5, C34				#	B5=C32.upper=c46
	LD		B4, 3 * SIZE(CO4)

	CVTU	A6, C32				#	B6=C24.upper=c36
	LD		B5, 5 * SIZE(CO3)

	CVTU	A7, C44				#	B7=C42.upper=c48
	LD		B6, 5 * SIZE(CO4)

	CVTU	A8, C42				#	A1=C44.upper=c38
	LD		B7, 7 * SIZE(CO3)

	MADD	A1, B1, A1, ALPHA 		#	c31
	LD		C11, 7 * SIZE(CO4)

	MADD	A2, B2, A2, ALPHA
	LD		C13, 0 * SIZE(CO3)

	MADD	A3, B3, A3, ALPHA
	LD		C21, 0 * SIZE(CO4)

	MADD	A4, B4, A4, ALPHA
	LD		C23, 2 * SIZE(CO3)

	MADD	A5, B5, A5, ALPHA
	LD		C31, 2 * SIZE(CO4)

	MADD	A6, B6, A6, ALPHA
	LD		C33, 4 * SIZE(CO3)

	MADD	A7, B7, A7, ALPHA
	LD		C41, 4 * SIZE(CO4)

	MADD	A8, C11, A8, ALPHA
	ST		A1, 1 * SIZE(CO3)

	MADD	C12, C13, C12, ALPHA
	LD		C43, 6 * SIZE(CO3)

	MADD	C14, C21, C14, ALPHA
	ST		A2, 1 * SIZE(CO4)

	MADD	C22, C23, C22, ALPHA
	LD		B1, 6 * SIZE(CO4)

	MADD	C24, C31, C24, ALPHA
	ST		A3, 3 * SIZE(CO3)

	MADD	C32, C33, C32, ALPHA
	ST		A4, 3 * SIZE(CO4)

	MADD	C34, C41, C34, ALPHA
	ST		A5, 5 * SIZE(CO3)

	MADD	C42, C43, C42, ALPHA
	ST		A6, 5 * SIZE(CO4)

	ST		A7, 7 * SIZE(CO3)
	NOP

	MADD	C44, B1, C44, ALPHA
	ST		A8, 7 * SIZE(CO4)

	ST		C12, 0 * SIZE(CO3)
	ST		C14, 0 * SIZE(CO4)
	ST		C22, 2 * SIZE(CO3)
	ST		C24, 2 * SIZE(CO4)
	ST		C32, 4 * SIZE(CO3)
	ST		C34, 4 * SIZE(CO4)
	ST		C42, 6 * SIZE(CO3)
	ST		C44, 6 * SIZE(CO4)

	daddiu	CO1, CO1, 8 * SIZE
	daddiu	CO2, CO2, 8 * SIZE
	daddiu	CO3, CO3, 8 * SIZE
	bgtz	I, .L481
	daddiu	CO4, CO4, 8 * SIZE
#else
	daddiu	I, I, -1
	CVTU	A1, C13				#	A1=C13.upper=c12
	CVTU	A2, C11				#	A2=C11.upper=c22
	CVTU	A3, C23				#	A3=C23.upper=c14
	CVTU	A4, C21				#	A4=C21.upper=c24
	CVTU	A5, C33				#	A5=C33.upper=c16
	CVTU	A6, C31				#	A6=C31.upper=c26
	CVTU	A7, C43				#	A7=C43.upper=c18
	CVTU	A8, C41				#	A8=C41.upper=c28

	MUL		A1, A1, ALPHA 		#	c12
	MUL		A2, A2, ALPHA 		#	c22
	MUL		A3, A3, ALPHA 		#	c14
	MUL		A4, A4, ALPHA 		#	c24
	MUL		A5, A5, ALPHA 		#	c16
	MUL		A6, A6, ALPHA 		#	c26
	MUL		A7, A7, ALPHA 		#	c18
	MUL		A8, A8, ALPHA 		#	c28

	MUL	C11, C11, ALPHA 		#	c12
	ST	A1, 1 * SIZE(CO1)

	MUL	C13, C13, ALPHA 		#	c22
	ST	A2, 1 * SIZE(CO2)

	MUL	C21, C21, ALPHA 		#	c14
	ST	A3, 3 * SIZE(CO1)

	MUL	C23, C23, ALPHA 		#	c24
	ST	A4, 3 * SIZE(CO2)

	MUL	C31, C31, ALPHA 		#	c16
	ST	A5, 5 * SIZE(CO1)

	MUL	C33, C33, ALPHA 		#	c26
	ST	A6, 5 * SIZE(CO2)

	MUL	C41, C41, ALPHA 		#	c18
	ST	A7, 7 * SIZE(CO1)

	MUL	C43, C43, ALPHA 		#	c28
	ST	A8, 7 * SIZE(CO2)

	CVTU	A1, C14				#	B1=C12.upper=c42
	ST		C11, 0 * SIZE(CO1)

	CVTU	A2, C12				#	B2=C14.upper=c32
	ST		C13, 0 * SIZE(CO2)

	CVTU	A3, C24				#	B3=C22.upper=c44
	ST		C21, 2 * SIZE(CO1)

	CVTU	A4, C22				#	B4=C24.upper=c34
	ST		C23, 2 * SIZE(CO2)

	CVTU	A5, C34				#	B5=C32.upper=c46
	ST		C31, 4 * SIZE(CO1)

	CVTU	A6, C32				#	B6=C24.upper=c36
	ST		C33, 4 * SIZE(CO2)

	CVTU	A7, C44				#	B7=C42.upper=c48
	ST		C41, 6 * SIZE(CO1)

	CVTU	A8, C42				#	A1=C44.upper=c38
	ST		C43, 6 * SIZE(CO2)

	MUL		A1, A1, ALPHA 		#	c31
	MUL		A2, A2, ALPHA
	MUL		A3, A3, ALPHA
	MUL		A4, A4, ALPHA
	MUL		A5, A5, ALPHA
	MUL		A6, A6, ALPHA
	MUL		A7, A7, ALPHA
	MUL		A8, A8, ALPHA

	MUL	C12, C12, ALPHA
	ST	A1, 1 * SIZE(CO3)

	MUL	C14, C14, ALPHA
	ST	A2, 1 * SIZE(CO4)

	MUL	C22, C22, ALPHA
	ST	A3, 3 * SIZE(CO3)

	MUL	C24, C24, ALPHA
	ST	A4, 3 * SIZE(CO4)

	MUL	C32, C32, ALPHA
	ST	A5, 5 * SIZE(CO3)

	MUL	C34, C34, ALPHA
	ST	A6, 5 * SIZE(CO4)

	MUL	C42, C42, ALPHA
	ST	A7, 7 * SIZE(CO3)

	MUL	C44, C44, ALPHA
	ST	A8, 7 * SIZE(CO4)

	ST		C12, 0 * SIZE(CO3)
	ST		C14, 0 * SIZE(CO4)
	ST		C22, 2 * SIZE(CO3)
	ST		C24, 2 * SIZE(CO4)
	ST		C32, 4 * SIZE(CO3)
	ST		C34, 4 * SIZE(CO4)
	ST		C42, 6 * SIZE(CO3)
	ST		C44, 6 * SIZE(CO4)

	daddiu	CO1, CO1, 8 * SIZE
	daddiu	CO2, CO2, 8 * SIZE
	daddiu	CO3, CO3, 8 * SIZE
	daddiu	CO4, CO4, 8 * SIZE

#if ( defined(LEFT) && defined(TRANSA)) ||\
		(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef	LEFT
	daddiu	TEMP, TEMP, -8
#else
	daddiu	TEMP, TEMP, -4
#endif
	dsll	L, TEMP, 3 + BASE_SHIFT
	dsll	TEMP, TEMP, 2 + BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef	LEFT
	daddiu	KK, KK, 8
#endif

	bgtz	I, .L481
	NOP
#endif

	.align	4
.L44:
	andi	I, M, 4				#	MR=4
	blez	I, .L42
	NOP

	.align	4
.L441:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) ||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B				#	Reset B
#else
	dsll	L, KK, 2 + BASE_SHIFT
	dsll	TEMP, KK, 2 + BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, B,  TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	dsll	PREB, K, BASE_SHIFT
	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11

	daddu	PREB, B, PREB
	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	PLU		B3,	B1, B1

	FETCH	$0, 0 * SIZE(CO4)
	PLU		B4, B2, B2

#if (defined(LEFT) && !defined(TRANSA)) ||\
		(!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddu	TEMP, KK, 4
#else
	daddu	TEMP, KK, 4
#endif
	dsra	L, TEMP, 2
	blez	L, .L442
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 2				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	dsll	PREB, K, BASE_SHIFT
	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11

	daddu	PREB, B, PREB
	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	PLU		B3,	B1, B1

	FETCH	$0, 0 * SIZE(CO4)
	blez	L, .L442
	PLU		B4, B2, B2
#endif

.L4410:							#
	daddiu	L, L, -1
	MADPS	C11, C11, A1, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C21, C21, A2, B1
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C12, C12, A1, B2
	FETCH	$0, 0 * SIZE(PREB)

	MADPS	C22, C22, A2, B2
	FETCH	$0, 0 * SIZE(PREA)

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C14, C14, A1, B4
	MADPS	C24, C24, A2, B4

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A3, B5
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C21, C21, A4, B5
	gsLQC1(R12, F5, F4, 2)		#	A5 A6

	MADPS	C12, C12, A3, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C22, C22, A4, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C13, C13, A3, B7
	MADPS	C23, C23, A4, B7

	MADPS	C14, C14, A3, B8
	MADPS	C24, C24, A4, B8

	PLU		B3,	B1, B1
	PLU		B4, B2, B2

	MADPS	C11, C11, A5, B1
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	MADPS	C21, C21, A6, B1
	gsLQC1(R12, F7, F6, 3)		#	A7 A8

	MADPS	C12, C12, A5, B2
	FETCH	$0, 8 * SIZE(PREB)
	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR

	MADPS	C22, C22, A6, B2
	FETCH	$0, 8 * SIZE(PREA)
	daddiu	AO, AO, 16 * SIZE 	#	4KR*4MR

	MADPS	C13, C13, A5, B3
	MADPS	C23, C23, A6, B3

	MADPS	C14, C14, A5, B4
	MADPS	C24, C24, A6, B4

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A7, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C21, C21, A8, B5
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MADPS	C12, C12, A7, B6
	FETCH	$0, 12 * SIZE(PREB)

	MADPS	C22, C22, A8, B6
	FETCH	$0, 12 * SIZE(PREA)

	MADPS	C13, C13, A7, B7
	daddiu	PREA, PREA, 16 * SIZE
	MADPS	C23, C23, A8, B7
	daddiu	PREB, PREB, 16 * SIZE

	MADPS	C14, C14, A7, B8
	MADPS	C24, C24, A8, B8

	PLU		B3,	B1, B1
	bgtz	L, .L4410
	PLU		B4, B2, B2

	.align	4
.L442:
#ifndef TRMMKERNEL
	andi	L, K, 2
#else
	andi	L, TEMP, 2
#endif
	blez	L, .L443
	NOP

	MADPS	C11, C11, A1, B1
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C21, C21, A2, B1
	gsLQC1(R12, F3, F2, 1)		#	A3 A4

	MADPS	C12, C12, A1, B2
	FETCH	$0, 0 * SIZE(PREB)
	daddiu	BO, BO, 8 * SIZE	#	2KR*4NR

	MADPS	C22, C22, A2, B2
	FETCH	$0, 0 * SIZE(PREA)
	daddiu	AO, AO, 8 * SIZE	#	2KR*4MR

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C14, C14, A1, B4
	MADPS	C24, C24, A2, B4

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A3, B5
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C21, C21, A4, B5
	gsLQC1(R12, F1, F0, 0)		#	A5 A6

	MADPS	C12, C12, A3, B6
	FETCH	$0, 4 * SIZE(PREB)

	MADPS	C22, C22, A4, B6
	FETCH	$0, 4 * SIZE(PREA)

	MADPS	C13, C13, A3, B7
	daddiu	PREB, PREB, 8
	MADPS	C23, C23, A4, B7
	daddiu	PREA, PREA, 8

	MADPS	C14, C14, A3, B8
	MADPS	C24, C24, A4, B8

	PLU		B3,	B1, B1
	PLU		B4, B2, B2


	.align	4
.L443:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L440
	LD		ALPHA, 152($sp)

	MADPS	C11, C11, A1, B1
	MADPS	C21, C21, A2, B1

	MADPS	C12, C12, A1, B2
	daddiu	BO, BO, 4 * SIZE	#	1KR*4NR
	MADPS	C22, C22, A2, B2
	daddiu	AO, AO, 4 * SIZE	#	1KR*4MR

	MADPS	C13, C13, A1, B3
	MADPS	C23, C23, A2, B3

	MADPS	C14, C14, A1, B4
	MADPS	C24, C24, A2, B4


	.align	4
.L440:
#ifndef TRMMKERNEL
	CVTU	A1, C13				#	A1=C13.upper=c12
	LD		B1, 1 * SIZE(CO1)

	CVTU	A2, C11				#	A2=C11.upper=c22
	LD		B2, 1 * SIZE(CO2)

	CVTU	A3, C23				#	A3=C23.upper=c14
	LD		B3, 3 * SIZE(CO1)

	CVTU	A4, C21				#	A4=C21.upper=c24
	LD		B4, 3 * SIZE(CO2)


	MADD	A1, B1, A1, ALPHA 		#	c12
	LD		B5, 0 * SIZE(CO1)

	MADD	A2, B2, A2, ALPHA 		#	c22
	LD		B6, 0 * SIZE(CO2)

	MADD	A3, B3, A3, ALPHA 		#	c14
	LD		B7, 2 * SIZE(CO1)

	MADD	A4, B4, A4, ALPHA 		#	c24
	LD		B1, 2 * SIZE(CO2)

	MADD	C11, B5, C11, ALPHA 		#	c12
	ST		A1, 1 * SIZE(CO1)

	MADD	C13, B6, C13, ALPHA 		#	c22
	ST		A2, 1 * SIZE(CO2)

	MADD	C21, B7, C21, ALPHA 		#	c14
	ST		A3, 3 * SIZE(CO1)

	MADD	C23, B1, C23, ALPHA 		#	c24
	ST		A4, 3 * SIZE(CO2)

	ST		C11, 0 * SIZE(CO1)
	ST		C13, 0 * SIZE(CO2)
	ST		C21, 2 * SIZE(CO1)
	ST		C23, 2 * SIZE(CO2)

	CVTU	A1, C14				#	B1=C12.upper=c42
	LD		B1, 1 * SIZE(CO3)

	CVTU	A2, C12				#	B2=C14.upper=c32
	LD		B2, 1 * SIZE(CO4)

	CVTU	A3, C24				#	B3=C22.upper=c44
	LD		B3, 3 * SIZE(CO3)

	CVTU	A4, C22				#	B4=C24.upper=c34
	LD		B4, 3 * SIZE(CO4)

	MADD	A1, B1, A1, ALPHA 		#	c31
	LD		A5, 0 * SIZE(CO3)

	MADD	A2, B2, A2, ALPHA
	LD		A6, 0 * SIZE(CO4)

	MADD	A3, B3, A3, ALPHA
	LD		A7, 2 * SIZE(CO3)

	MADD	A4, B4, A4, ALPHA
	LD		A8, 2 * SIZE(CO4)

	MADD	C12, A5, C12, ALPHA
	ST		A1, 1 * SIZE(CO3)

	MADD	C14, A6, C14, ALPHA
	ST		A2, 1 * SIZE(CO4)

	MADD	C22, A7, C22, ALPHA
	ST		A3, 3 * SIZE(CO3)

	MADD	C24, A8, C24, ALPHA
	ST		A4, 3 * SIZE(CO4)

	ST		C12, 0 * SIZE(CO3)
	ST		C14, 0 * SIZE(CO4)
	ST		C22, 2 * SIZE(CO3)
	ST		C24, 2 * SIZE(CO4)

	daddiu	CO1, CO1, 4 * SIZE
	daddiu	CO2, CO2, 4 * SIZE
	daddiu	CO3, CO3, 4 * SIZE
	daddiu	CO4, CO4, 4 * SIZE

#else
	CVTU	A1, C13				#	A1=C13.upper=c12
	CVTU	A2, C11				#	A2=C11.upper=c22
	CVTU	A3, C23				#	A3=C23.upper=c14
	CVTU	A4, C21				#	A4=C21.upper=c24

	MUL		A1, A1, ALPHA 		#	c12
	MUL		A2, A2, ALPHA 		#	c22
	MUL		A3, A3, ALPHA 		#	c14
	MUL		A4, A4, ALPHA 		#	c24

	MUL	C11, C11, ALPHA 		#	c12
	ST	A1, 1 * SIZE(CO1)

	MUL	C13, C13, ALPHA 		#	c22
	ST	A2, 1 * SIZE(CO2)

	MUL	C21, C21, ALPHA 		#	c14
	ST	A3, 3 * SIZE(CO1)

	MUL	C23, C23, ALPHA 		#	c24
	ST	A4, 3 * SIZE(CO2)

	CVTU	A5, C14				#	B1=C12.upper=c42
	ST		C11, 0 * SIZE(CO1)

	CVTU	A6, C12				#	B2=C14.upper=c32
	ST		C13, 0 * SIZE(CO2)

	CVTU	A7, C24				#	B3=C22.upper=c44
	ST		C21, 2 * SIZE(CO1)

	CVTU	A8, C22				#	B4=C24.upper=c34
	ST		C23, 2 * SIZE(CO2)

	MUL		A5, A5, ALPHA 		#	c31
	MUL		A6, A6, ALPHA
	MUL		A7, A7, ALPHA
	MUL		A8, A8, ALPHA

	MUL	C12, C12, ALPHA
	ST	A5, 1 * SIZE(CO3)

	MUL	C14, C14, ALPHA
	ST	A6, 1 * SIZE(CO4)

	MUL	C22, C22, ALPHA
	ST	A7, 3 * SIZE(CO3)

	MUL	C24, C24, ALPHA
	ST	A8, 3 * SIZE(CO4)

	ST		C12, 0 * SIZE(CO3)
	ST		C14, 0 * SIZE(CO4)
	ST		C22, 2 * SIZE(CO3)
	ST		C24, 2 * SIZE(CO4)

	daddiu	CO1, CO1, 4 * SIZE
	daddiu	CO2, CO2, 4 * SIZE
	daddiu	CO3, CO3, 4 * SIZE
	daddiu	CO4, CO4, 4 * SIZE

#if ( defined(LEFT) && defined(TRANSA))||\
		(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu	TEMP, TEMP, -4
#else
	daddiu	TEMP, TEMP, -4
#endif
	dsll	L, TEMP, 2 + BASE_SHIFT
	dsll	TEMP, TEMP, 2 + BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef LEFT
	daddiu	KK, KK, 4
#endif
#endif

	.align	4
.L42:
	andi	I, M, 2
	blez	I, .L41
	NOP

	.align	4
.L421:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) ||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, 1 + BASE_SHIFT
	dsll	TEMP, KK, 2 + BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11

	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	PLU		B3,	B1, B1

	FETCH	$0, 0 * SIZE(CO4)
	PLU		B4, B2, B2
#if (defined(LEFT) && !defined(TRANSA)) ||\
		(!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 2
#else
	daddiu	TEMP, KK, 4
#endif
	dsra	L, TEMP, 2
	blez	L, .L422
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 2				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11

	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MOV		C41, C11
	MOV		C42, C11
	gsLQC1(R12, F1, F0, 0)		#	A1 A2

	MOV		C13, C11
	MOV		C14, C11

	MOV		C23, C11
	FETCH	$0, 0 * SIZE(CO1)
	MOV		C24, C11

	MOV		C33, C11
	FETCH	$0, 0 * SIZE(CO2)
	MOV		C34, C11

	MOV		C43, C11
	FETCH	$0, 0 * SIZE(CO3)

	MOV		C44, C11
	PLU		B3,	B1, B1

	FETCH	$0, 0 * SIZE(CO4)
	blez	L, .L422
	PLU		B4, B2, B2
#endif

.L4210:
	daddiu	L, L, -1
	MADPS	C11, C11, A1, B1
	MADPS	C12, C12, A1, B2
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C13, C13, A1, B3
	MADPS	C14, C14, A1, B4
	gsLQC1(R12, F3, F2, 1)		#	B1 B2

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A2, B5
	MADPS	C12, C12, A2, B6
	daddiu	AO, AO, 8 * SIZE	#	4KR*2MR
	gsLQC1(R13, F9, F8, 2)		#	B1 B2

	MADPS	C13, C13, A2, B7
	MADPS	C14, C14, A2, B8

	PLU		B3,	B1, B1
	PLU		B4, B2, B2

	MADPS	C11, C11, A3, B1
	gsLQC1(R12, F1, F0, 0)		#	B3 B4

	MADPS	C12, C12, A3, B2
	gsLQC1(R13, F13, F12, 3)	#	B3 B4

	daddiu	BO, BO, 16 * SIZE	#	4KR*4NR
	MADPS	C13, C13, A3, B3
	MADPS	C14, C14, A3, B4

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A4, B5
	MADPS	C12, C12, A4, B6
	gsLQC1(R13, F9, F8, 0)		#	B3 B4

	MADPS	C13, C13, A4, B7
	MADPS	C14, C14, A4, B8

	PLU		B3,	B1, B1
	bgtz	L, .L4210
	PLU		B4, B2, B2

	.align	4
.L422:
#ifndef TRMMKERNEL
	andi	L, K, 2
#else
	andi	L, TEMP, 2
#endif
	blez	L, .L423
	NOP

	daddiu	AO, AO, 4 * SIZE	#	2KR*2MR
	MADPS	C11, C11, A1, B1
	MADPS	C12, C12, A1, B2
	gsLQC1(R13, F13, F12, 1)	#	B3 B4

	MADPS	C13, C13, A1, B3
	MADPS	C14, C14, A1, B4
	daddiu	BO, BO, 8 * SIZE	#	2KR*2MR

	PLU		B7,	B5, B5
	PLU		B8, B6, B6

	MADPS	C11, C11, A2, B5
	MADPS	C12, C12, A2, B6
	gsLQC1(R13, F9, F8, 0)		#	B1 B2

	MADPS	C13, C13, A2, B7
	MADPS	C14, C14, A2, B8
	gsLQC1(R12, F1, F0, 0)

	PLU		B3,	B1, B1
	PLU		B4, B2, B2

.L423:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L420
	LD		ALPHA, 152($sp)

	MADPS	C11, C11, A1, B1
	MADPS	C12, C12, A1, B2
	daddiu	BO, BO, 4 * SIZE	#	2KR*4NR
	daddiu	AO, AO, 2 * SIZE	#	2KR*4MR

	MADPS	C13, C13, A1, B3
	MADPS	C14, C14, A1, B4

	.align	4
.L420:
#ifndef TRMMKERNEL
	CVTU	A1, C13				#	A1=C13.upper=c12
	LD		B1, 1 * SIZE(CO1)

	CVTU	A2, C11				#	A2=C11.upper=c22
	LD		B2, 1 * SIZE(CO2)

	MADD	A1, B1, A1, ALPHA 		#	c12
	LD		B5, 0 * SIZE(CO1)

	MADD	A2, B2, A2, ALPHA 		#	c22
	LD		B6, 0 * SIZE(CO2)

	MADD	C11, B5, C11, ALPHA 		#	c12
	ST		A1, 1 * SIZE(CO1)

	MADD	C13, B6, C13, ALPHA 		#	c22
	ST		A2, 1 * SIZE(CO2)

	ST		C11, 0 * SIZE(CO1)
	ST		C13, 0 * SIZE(CO2)

	CVTU	A1, C14				#	B1=C12.upper=c42
	LD		B1, 1 * SIZE(CO3)

	CVTU	A2, C12				#	B2=C14.upper=c32
	LD		B2, 1 * SIZE(CO4)

	MADD	A1, B1, A1, ALPHA 		#	c31
	LD		A5, 0 * SIZE(CO3)

	MADD	A2, B2, A2, ALPHA
	LD		A6, 0 * SIZE(CO4)

	MADD	C12, A5, C12, ALPHA
	ST		A1, 1 * SIZE(CO3)

	MADD	C14, A6, C14, ALPHA
	ST		A2, 1 * SIZE(CO4)

	ST		C12, 0 * SIZE(CO3)
	ST		C14, 0 * SIZE(CO4)

	daddiu	CO1, CO1, 2 * SIZE
	daddiu	CO2, CO2, 2 * SIZE
	daddiu	CO3, CO3, 2 * SIZE
	daddiu	CO4, CO4, 2 * SIZE
#else
	CVTU	A1, C13				#	A1=C13.upper=c12
	CVTU	A2, C11				#	A2=C11.upper=c22

	MUL	A1, A1, ALPHA 		#	c12
	MUL	A2, A2, ALPHA 		#	c22

	MUL	C11, C11, ALPHA 		#	c12
	MUL	C13, C13, ALPHA 		#	c22

	CVTU	A3, C14				#	B1=C12.upper=c42
	CVTU	A4, C12				#	B2=C14.upper=c32

	MUL	A3, A3, ALPHA 		#	c31
	ST	A1, 1 * SIZE(CO1)

	MUL	A4, A4, ALPHA
	ST	A2, 1 * SIZE(CO2)

	MUL	C12, C12, ALPHA
	ST	C11, 0 * SIZE(CO1)

	MUL	C14, C14, ALPHA
	ST	C13, 0 * SIZE(CO2)

	ST	A3, 1 * SIZE(CO3)
	ST	A4, 1 * SIZE(CO4)

	ST	C12, 0 * SIZE(CO3)
	ST	C14, 0 * SIZE(CO4)

	daddiu	CO1, CO1, 2 * SIZE
	daddiu	CO2, CO2, 2 * SIZE
	daddiu	CO3, CO3, 2 * SIZE
	daddiu	CO4, CO4, 2 * SIZE
#if ( defined(LEFT) &&  defined(TRANSA))||\
		(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu	TEMP, TEMP, -2
#else
	daddiu	TEMP, TEMP, -4
#endif
	dsll	L, TEMP, 1 + BASE_SHIFT
	dsll	TEMP, TEMP, 2 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef LEFT
	daddiu	KK, KK, 2
#endif
#endif


	.align	4
.L41:
	andi	I, M, 1
	blez	I, .L40
	NOP

	.align	4
.L411:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) ||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, BASE_SHIFT
	dsll	TEMP, KK, 2 + BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B3, 2 * SIZE(BO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B4, 3 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA))||\
		(!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 1
#else
	daddiu	TEMP, KK, 4
#endif
	dsra	L, TEMP, 2
	blez	L, .L412

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 2				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B3, 2 * SIZE(BO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B4, 3 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	blez	L, .L412
	MOV		C44, C11
#endif

.L4110:
	daddiu	L, L, -1
	LD		A2, 1 * SIZE(AO)

	MADD	C11, C11, A1, B1
	LD		B5,	4 * SIZE(BO)

	MADD	C12, C12, A1, B2
	LD		B6, 5 * SIZE(BO)

	MADD	C13, C13, A1, B3
	LD		B7, 6 * SIZE(BO)

	MADD	C14, C14, A1, B4
	LD		B8, 7 * SIZE(BO)

	LD		A3, 2 * SIZE(AO)
	NOP

	MADD	C11, C11, A2, B5
	LD		B1,	 8 * SIZE(BO)

	MADD	C12, C12, A2, B6
	LD		B2,  9 * SIZE(BO)

	MADD	C13, C13, A2, B7
	LD		B3, 10 * SIZE(BO)

	MADD	C14, C14, A2, B8
	LD		B4, 11 * SIZE(BO)

	LD		A4, 3 * SIZE(AO)
	daddiu	AO, AO, 4 * SIZE

	MADD	C11, C11, A3, B1
	LD		B5,	12 * SIZE(BO)

	MADD	C12, C12, A3, B2
	LD		B6, 13 * SIZE(BO)

	MADD	C13, C13, A3, B3
	LD		B7, 14 * SIZE(BO)

	MADD	C14, C14, A3, B4
	LD		B8, 15 * SIZE(BO)

	LD		A1, 0 * SIZE(AO)
	daddiu 	BO, BO, 16 * SIZE

	MADD	C11, C11, A4, B5
	LD		B1,	0 * SIZE(BO)

	MADD	C12, C12, A4, B6
	LD		B2, 1 * SIZE(BO)

	MADD	C13, C13, A4, B7
	LD		B3, 2 * SIZE(BO)

	MADD	C14, C14, A4, B8
	bgtz	L, .L4110
	LD		B4, 3 * SIZE(BO)

.L412:
#ifndef TRMMKERNEL
	andi	L, K, 2
#else
	andi	L, TEMP, 2
#endif
	blez	L, .L413
	NOP

	LD		A2, 1 * SIZE(AO)
	daddiu	AO, AO, 2 * SIZE

	MADD	C11, C11, A1, B1
	LD		B5,	4 * SIZE(BO)

	MADD	C12, C12, A1, B2
	LD		B6, 5 * SIZE(BO)

	MADD	C13, C13, A1, B3
	LD		B7, 6 * SIZE(BO)

	MADD	C14, C14, A1, B4
	LD		B8, 7 * SIZE(BO)

	LD		A1, 0 * SIZE(AO)
	daddiu	BO, BO, 8 * SIZE

	MADD	C11, C11, A2, B5
	LD		B1,	0 * SIZE(BO)

	MADD	C12, C12, A2, B6
	LD		B2, 1 * SIZE(BO)

	MADD	C13, C13, A2, B7
	LD		B3, 2 * SIZE(BO)

	MADD	C14, C14, A2, B8
	LD		B4, 3 * SIZE(BO)

.L413:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L410
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C12, C12, A1, B2
	daddiu	AO, AO, 1 * SIZE
	MADD	C13, C13, A1, B3
	MADD	C14, C14, A1, B4
	daddiu	BO, BO, 4 * SIZE

	.align	4
.L410:
#ifndef TRMMKERNEL
	LD		A5, 0 * SIZE(CO1)
	LD		A6, 0 * SIZE(CO2)
	LD		A7, 0 * SIZE(CO3)
	LD		A8, 0 * SIZE(CO4)

	MADD		A5, A5, C11, ALPHA
	MADD		A6, A6, C12, ALPHA
	MADD		A7, A7, C13, ALPHA
	MADD		A8, A8, C14, ALPHA

	ST		A5, 0 * SIZE(CO1)
	ST		A6, 0 * SIZE(CO2)
	ST		A7, 0 * SIZE(CO3)
	ST		A8, 0 * SIZE(CO4)

	daddiu	CO1, CO1, 1 * SIZE
	daddiu	CO2, CO2, 1 * SIZE
	daddiu	CO3, CO3, 1 * SIZE
	daddiu	CO4, CO4, 1 * SIZE
#else
	MUL		A5, C11, ALPHA
	MUL		A6, C12, ALPHA
	MUL		A7, C13, ALPHA
	MUL		A8, C14, ALPHA

	ST		A5, 0 * SIZE(CO1)
	ST		A6, 0 * SIZE(CO2)
	ST		A7, 0 * SIZE(CO3)
	ST		A8, 0 * SIZE(CO4)

	daddiu	CO1, CO1, 1 * SIZE
	daddiu	CO2, CO2, 1 * SIZE
	daddiu	CO3, CO3, 1 * SIZE
	daddiu	CO4, CO4, 1 * SIZE

#if ( defined(LEFT) &&  defined(TRANSA))||\
		(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef	LEFT
	daddiu	TEMP, TEMP, -1
#else
	daddiu	TEMP, TEMP, -4
#endif

	dsll	L, TEMP, BASE_SHIFT
	dsll	TEMP, TEMP, 2 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif
#ifdef	LEFT
	daddiu	KK, KK, 1
#endif
#endif

	.align	4
.L40:
#if defined(TRMMKERNEL) && !defined(LEFT)
	daddiu	KK, KK, 4
#endif
	daddiu	J, J, -1
	move	B, BO
	bgtz	J, .L48
	NOP



	.align	4
.L2:							#	Nr=2
	andi	J, N, 2
	blez	J, .L1
	NOP

.L28:
	dsra	I, M, 3				#	MR=8

	move	AO, A				#	Reset A
	move	CO1, C

#if defined(TRMMKERNEL) &&  defined(LEFT)
	move	KK, OFFSET
#endif
	daddu	CO2, C,   LDC
	blez	I, .L24
	daddu	C,   CO2, LDC

	.align	4
.L281:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, 3 + BASE_SHIFT
	dsll	TEMP, KK, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	LD		A1, 0 * SIZE(AO)

	MOV		C12, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C21, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C22, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C31, C11
	LD		A5, 4 * SIZE(AO)

	MOV		C32, C11
	LD		A6, 5 * SIZE(AO)

	MOV		C41, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C13, C11
	LD		A7, 6 * SIZE(AO)

	MOV		C14, C11
	LD		A8, 7 * SIZE(AO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 8
#else
	daddiu	TEMP, KK, 2
#endif
	dsra	L, TEMP, 1
	blez	L, .L282
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	LD		A1, 0 * SIZE(AO)

	MOV		C12, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C21, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C22, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C31, C11
	LD		A5, 4 * SIZE(AO)

	MOV		C32, C11
	LD		A6, 5 * SIZE(AO)

	MOV		C41, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C13, C11
	LD		A7, 6 * SIZE(AO)

	MOV		C14, C11
	LD		A8, 7 * SIZE(AO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	blez	L, .L282
	MOV		C44, C11
#endif

	.align	4
.L2810:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		B5, 8 * SIZE(AO)

	MADD	C21, C21, A2, B1
	LD		B6, 9 * SIZE(AO)

	MADD	C31, C31, A3, B1
	LD		B7, 10 * SIZE(AO)

	MADD	C41, C41, A4, B1
	LD		B8, 11 * SIZE(AO)

	MADD	C12, C12, A1, B2
	MADD	C22, C22, A2, B2
	LD		B3, 2 * SIZE(BO)

	MADD	C32, C32, A3, B2
	MADD	C42, C42, A4, B2
	LD		B4, 3 * SIZE(BO)
	daddiu	BO, BO, 4 * SIZE

	MADD	C13, C13, A5, B1
	MADD	C23, C23, A6, B1
	LD		A1, 12 * SIZE(AO)

	MADD	C33, C33, A7, B1
	MADD	C43, C43, A8, B1
	LD		A2, 13 * SIZE(AO)

	MADD	C14, C14, A5, B2
	MADD	C24, C24, A6, B2
	LD		A3, 14 * SIZE(AO)

	MADD	C34, C34, A7, B2
	MADD	C44, C44, A8, B2
	LD		A4, 15 * SIZE(AO)
	daddiu	AO, AO, 16 * SIZE

	MADD	C11, C11, B5, B3
	LD		A5, 4 * SIZE(AO)

	MADD	C21, C21, B6, B3
	LD		A6, 5 * SIZE(AO)

	MADD	C13, C13, A1, B3
	MADD	C23, C23, A2, B3
	LD		A7, 6 * SIZE(AO)

	MADD	C33, C33, A3, B3
	MADD	C43, C43, A4, B3
	LD		A8, 7 * SIZE(AO)

	MADD	C14, C14, A1, B4
	MADD	C24, C24, A2, B4
	LD		B1, 0 * SIZE(BO)

	MADD	C34, C34, A3, B4
	MADD	C44, C44, A4, B4
	LD		B2, 1 * SIZE(BO)

	MADD	C31, C31, B7, B3
	MADD	C41, C41, B8, B3
	LD		A1, 0 * SIZE(AO)

	MADD	C12, C12, B5, B4
	LD		A2, 1 * SIZE(AO)

	MADD	C22, C22, B6, B4
	LD		A3, 2 * SIZE(AO)

	LD		A4, 3 * SIZE(AO)
	MADD	C32, C32, B7, B4
	bgtz	L, .L2810
	MADD	C42, C42, B8, B4

	.align	4
.L282:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L280
	LD		ALPHA, 152($sp)

	MADD	C13, C13, A5, B1
	MADD	C23, C23, A6, B1
	MADD	C33, C33, A7, B1
	MADD	C43, C43, A8, B1
	MADD	C14, C14, A5, B2
	MADD	C24, C24, A6, B2
	MADD	C34, C34, A7, B2
	MADD	C44, C44, A8, B2
	daddiu	AO, AO, 8 * SIZE

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	MADD	C31, C31, A3, B1
	MADD	C41, C41, A4, B1
	MADD	C12, C12, A1, B2
	MADD	C22, C22, A2, B2
	MADD	C32, C32, A3, B2
	MADD	C42, C42, A4, B2
	daddiu	BO, BO, 2 * SIZE


	.align	4
.L280:							#	Write Back
#ifndef TRMMKERNEL
	daddiu	I, I, -1

	LD		A1, 0 * SIZE(CO1)
	LD		A2, 1 * SIZE(CO1)
	LD		A3, 2 * SIZE(CO1)
	LD		A4, 3 * SIZE(CO1)
	LD		A5, 4 * SIZE(CO1)
	LD		A6, 5 * SIZE(CO1)
	LD		A7, 6 * SIZE(CO1)
	LD		A8, 7 * SIZE(CO1)

	MADD		A1, A1, C11, ALPHA
	LD		B1, 0 * SIZE(CO2)

	MADD		A2, A2, C21, ALPHA
	LD		B2, 1 * SIZE(CO2)

	MADD		A3, A3, C31, ALPHA
	LD		B3, 2 * SIZE(CO2)

	MADD		A4, A4, C41, ALPHA
	LD		B4, 3 * SIZE(CO2)

	MADD		A5, A5, C13, ALPHA
	LD		B5, 4 * SIZE(CO2)

	MADD		A6, A6, C23, ALPHA
	LD		B6, 5 * SIZE(CO2)

	MADD		A7, A7, C33, ALPHA
	LD		B7, 6 * SIZE(CO2)

	MADD		A8, A8, C43, ALPHA
	LD		C11, 7 * SIZE(CO2)

	MADD		B1, B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	MADD		B2, B2, C22, ALPHA
	ST		A2, 1 * SIZE(CO1)

	MADD		B3, B3, C32, ALPHA
	ST		A3, 2 * SIZE(CO1)

	MADD		B4, B4, C42, ALPHA
	ST		A4, 3 * SIZE(CO1)

	MADD		B5, B5, C14, ALPHA
	ST		A5, 4 * SIZE(CO1)

	MADD		B6, B6, C24, ALPHA
	ST		A6, 5 * SIZE(CO1)

	MADD		B7, B7, C34, ALPHA
	ST		A7, 6 * SIZE(CO1)

	MADD		C11, C11, C44, ALPHA
	ST		A8, 7 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)
	ST		B3, 2 * SIZE(CO2)
	ST		B4, 3 * SIZE(CO2)
	ST		B5, 4 * SIZE(CO2)
	ST		B6, 5 * SIZE(CO2)
	ST		B7, 6 * SIZE(CO2)
	ST		C11, 7 * SIZE(CO2)

	daddiu	CO1, CO1, 8 * SIZE
	bgtz	I, .L281
	daddiu	CO2, CO2, 8 * SIZE
#else
	daddiu	I, I, -1

	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA
	MUL		A3, C31, ALPHA
	MUL		A4, C41, ALPHA
	MUL		A5, C13, ALPHA
	MUL		A6, C23, ALPHA
	MUL		A7, C33, ALPHA
	MUL		A8, C43, ALPHA

	MUL		B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	MUL		B2, C22, ALPHA
	ST		A2, 1 * SIZE(CO1)

	MUL		B3, C32, ALPHA
	ST		A3, 2 * SIZE(CO1)

	MUL		B4, C42, ALPHA
	ST		A4, 3 * SIZE(CO1)

	MUL		B5, C14, ALPHA
	ST		A5, 4 * SIZE(CO1)

	MUL		B6, C24, ALPHA
	ST		A6, 5 * SIZE(CO1)

	MUL		B7, C34, ALPHA
	ST		A7, 6 * SIZE(CO1)

	MUL		C11, C44, ALPHA
	ST		A8, 7 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)
	ST		B3, 2 * SIZE(CO2)
	ST		B4, 3 * SIZE(CO2)
	ST		B5, 4 * SIZE(CO2)
	ST		B6, 5 * SIZE(CO2)
	ST		B7, 6 * SIZE(CO2)
	ST		C11, 7 * SIZE(CO2)

#if ( defined(LEFT) &&  defined(TRANSA)) ||(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu	TEMP, TEMP, -8
#else
	daddiu	TEMP, TEMP, -2
#endif
	dsll	L, TEMP, 3 + BASE_SHIFT
	dsll	TEMP, TEMP, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef LEFT
	daddiu	KK, KK, 8
#endif
	daddiu	CO1, CO1, 8 * SIZE
	bgtz	I, .L281
	daddiu	CO2, CO2, 8 * SIZE
#endif


	.align	4
.L24:
	andi	I, M, 4				#	MR=4
	blez	I, .L22
	NOP

	.align	4
.L241:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, 2 + BASE_SHIFT
	dsll	TEMP, KK, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C41, C11
	MOV		C42, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 4
#else
	daddiu	TEMP, KK, 2
#endif
	dsra	L, TEMP, 1
	blez	L, .L242
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C41, C11
	MOV		C42, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	blez	L, .L242
	MOV		C44, C11
#endif

	.align	4
.L2410:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		A5, 4 * SIZE(AO)

	MADD	C21, C21, A2, B1
	LD		B3, 2 * SIZE(BO)

	MADD	C31, C31, A3, B1
	LD		B4, 3 * SIZE(BO)

	MADD	C41, C41, A4, B1
	LD		A6, 5 * SIZE(AO)
	daddiu	BO, BO, 4 * SIZE

	MADD	C12, C12, A1, B2
	LD		A7, 6 * SIZE(AO)

	MADD	C22, C22, A2, B2
	LD		A8, 7 * SIZE(AO)
	daddiu	AO, AO, 8 * SIZE

	MADD	C32, C32, A3, B2
	MADD	C42, C42, A4, B2

	MADD	C11, C11, A5, B3
	LD		A1, 0 * SIZE(AO)

	MADD	C21, C21, A6, B3
	LD		B1, 0 * SIZE(BO)

	MADD	C31, C31, A7, B3
	LD		B2, 1 * SIZE(BO)

	MADD	C41, C41, A8, B3
	LD		A2, 1 * SIZE(AO)

	MADD	C12, C12, A5, B4
	LD		A3, 2 * SIZE(AO)

	MADD	C22, C22, A6, B4
	LD		A4, 3 * SIZE(AO)

	MADD	C32, C32, A7, B4
	bgtz	L, .L2410
	MADD	C42, C42, A8, B4

	.align	4
.L242:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L240
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	MADD	C31, C31, A3, B1
	MADD	C41, C41, A4, B1
	MADD	C12, C12, A1, B2
	MADD	C22, C22, A2, B2
	MADD	C32, C32, A3, B2
	MADD	C42, C42, A4, B2
	daddiu	AO, AO, 4 * SIZE
	daddiu	BO, BO, 2 * SIZE


	.align	4
.L240:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(CO1)
	LD		A2, 1 * SIZE(CO1)
	LD		A3, 2 * SIZE(CO1)
	LD		A4, 3 * SIZE(CO1)

	MADD		A1, A1, C11, ALPHA
	LD		B1, 0 * SIZE(CO2)

	MADD		A2, A2, C21, ALPHA
	LD		B2, 1 * SIZE(CO2)

	MADD		A3, A3, C31, ALPHA
	LD		B3, 2 * SIZE(CO2)

	MADD		A4, A4, C41, ALPHA
	LD		B4, 3 * SIZE(CO2)

	MADD		B1, B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	MADD		B2, B2, C22, ALPHA
	ST		A2, 1 * SIZE(CO1)

	MADD		B3, B3, C32, ALPHA
	ST		A3, 2 * SIZE(CO1)

	MADD		B4, B4, C42, ALPHA
	ST		A4, 3 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)
	ST		B3, 2 * SIZE(CO2)
	ST		B4, 3 * SIZE(CO2)

	daddiu	CO1, CO1, 4 * SIZE
	daddiu	CO2, CO2, 4 * SIZE
#else

	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA
	MUL		A3, C31, ALPHA
	MUL		A4, C41, ALPHA

	MUL		B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	MUL		B2, C22, ALPHA
	ST		A2, 1 * SIZE(CO1)

	MUL		B3, C32, ALPHA
	ST		A3, 2 * SIZE(CO1)

	MUL		B4, C42, ALPHA
	ST		A4, 3 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)
	ST		B3, 2 * SIZE(CO2)
	ST		B4, 3 * SIZE(CO2)

	daddiu	CO1, CO1, 4 * SIZE
	daddiu	CO2, CO2, 4 * SIZE
#if ( defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu	TEMP, TEMP, -4
#else
	daddiu	TEMP, TEMP, -2
#endif
	dsll	L, TEMP, 2 + BASE_SHIFT
	dsll	TEMP, TEMP, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef LEFT
	daddiu	KK, KK, 4
#endif
#endif

	.align	4
.L22:
	andi	I, M, 2
	blez	I, .L21
	NOP

	.align	4
.L221:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, 1 + BASE_SHIFT
	dsll	TEMP, KK, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 2
#else
	daddiu	TEMP, KK, 2
#endif
	dsra	L, TEMP, 1
	blez	L, .L222
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C43, C11
	blez	L, .L222
	MOV		C44, C11
#endif


	.align	4
.L2210:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		A3, 2 * SIZE(AO)

	MADD	C21, C21, A2, B1
	LD		B3, 2 * SIZE(BO)

	MADD	C12, C12, A1, B2
	LD		A4, 3 * SIZE(AO)
	daddiu	AO, AO, 4 * SIZE

	MADD	C22, C22, A2, B2
	LD		B4, 3 * SIZE(BO)
	daddiu	BO, BO, 4 * SIZE

	MADD	C11, C11, A3, B3
	LD		A1, 0 * SIZE(AO)

	MADD	C21, C21, A4, B3
	LD		B1, 0 * SIZE(BO)

	MADD	C12, C12, A3, B4
	LD		B2, 1 * SIZE(BO)

	MADD	C22, C22, A4, B4
	bgtz	L, .L2210
	LD		A2, 1 * SIZE(AO)


	.align	4
.L222:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L220
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	MADD	C12, C12, A1, B2
	MADD	C22, C22, A2, B2
	daddiu	AO, AO, 2 * SIZE
	daddiu	BO, BO, 2 * SIZE


	.align	4
.L220:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(CO1)
	LD		A2, 1 * SIZE(CO1)

	MADD		A1, A1, C11, ALPHA
	LD		B1, 0 * SIZE(CO2)

	MADD		A2, A2, C21, ALPHA
	LD		B2, 1 * SIZE(CO2)

	MADD		B1, B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	MADD		B2, B2, C22, ALPHA
	ST		A2, 1 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)

	daddiu	CO1, CO1, 2 * SIZE
	daddiu	CO2, CO2, 2 * SIZE
#else

	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA
	MUL		B1, C12, ALPHA
	MUL		B2, C22, ALPHA

	ST		A1, 0 * SIZE(CO1)
	ST		A2, 1 * SIZE(CO1)
	ST		B1, 0 * SIZE(CO2)
	ST		B2, 1 * SIZE(CO2)

	daddiu	CO1, CO1, 2 * SIZE
	daddiu	CO2, CO2, 2 * SIZE

#if ( defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu 	TEMP, TEMP, -2
#else
	daddiu	TEMP, TEMP, -2
#endif
	dsll	L, TEMP, 1 + BASE_SHIFT
	dsll	TEMP, TEMP, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef	LEFT
	daddu	KK, KK, 2
#endif
#endif

	.align	4
.L21:
	andi	I, M, 1
	blez	I, .L20
	NOP

	.align	4
.L211:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move	BO, B				#	Reset	B
#else
	dsll	L, KK, BASE_SHIFT
	dsll	TEMP, KK, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 1
#else
	daddiu	TEMP, KK, 2
#endif
	dsra	L, TEMP, 1
	blez	L, .L212
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11
	LD		B2, 1 * SIZE(BO)

	MOV		C43, C11
	blez	L, .L212
	MOV		C44, C11
#endif

	.align	4
.L2110:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		A2, 1 * SIZE(AO)

	MADD	C12, C12, A1, B2
	LD		B3, 2 * SIZE(BO)

	LD		B4, 3 * SIZE(BO)
	daddiu	AO, AO, 2 * SIZE
	daddiu	BO, BO, 4 * SIZE

	MADD	C11, C11, A2, B3
	LD		A1, 0 * SIZE(AO)

	MADD	C12, C12, A2, B4
	LD		B1, 0 * SIZE(BO)

	bgtz	L, .L2110
	LD		B2, 1 * SIZE(BO)


	.align	4
.L212:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L210
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C12, C12, A1, B2
	daddiu	AO, AO, 1 * SIZE
	daddiu	BO, BO, 2 * SIZE


	.align	4
.L210:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(CO1)

	MADD		A1, A1, C11, ALPHA
	LD		B1, 0 * SIZE(CO2)

	MADD		B1, B1, C12, ALPHA
	ST		A1, 0 * SIZE(CO1)

	ST		B1, 0 * SIZE(CO2)

	daddiu	CO1, CO1, 1 * SIZE
	daddiu	CO2, CO2, 1 * SIZE
#else

	MUL		A1, C11, ALPHA
	MUL		B1, C12, ALPHA

	ST		A1, 0 * SIZE(CO1)
	ST		B1, 0 * SIZE(CO2)

	daddiu	CO1, CO1, 1 * SIZE
	daddiu	CO2, CO2, 1 * SIZE
#if ( defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef	LEFT
	daddiu	TEMP, TEMP, -1
#else
	daddiu	TEMP, TEMP, -2
#endif
	dsll	L, TEMP, BASE_SHIFT
	dsll	TEMP, TEMP, 1 + BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef	LEFT
	daddiu	KK, KK, 1
#endif
#endif


	.align	4
.L20:
#if defined(TRMMKERNEL) && !defined(LEFT)
	daddiu  KK, KK, 2
#endif
	move	B, BO



	.align	4
.L1:
	andi	J, N, 1
	blez	J, .L999
	NOP

.L18:
	dsra	I, M, 3				#	MR=8
	move	AO, A				#	Reset A

#if defined(TRMMKERNEL) &&  defined(LEFT)
	move	KK, OFFSET
#endif
	blez	I, .L14
	NOP


	.align	4
.L181:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move	BO, B				#	Reset	B
#else
	dsll	L, KK, 3 + BASE_SHIFT
	dsll	TEMP, KK, BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	LD		A1, 0 * SIZE(AO)

	MOV		C12, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C21, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C22, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C31, C11
	LD		A5, 4 * SIZE(AO)

	MOV		C32, C11
	LD		A6, 5 * SIZE(AO)

	MOV		C41, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C42, C11
	LD		A7, 6 * SIZE(AO)

	MOV		C13, C11
	LD		A8, 7 * SIZE(AO)

	MOV		C14, C11

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 8
#else
	daddiu	TEMP, KK, 1
#endif
	dsra	L, TEMP, 1
	blez	L, .L182
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	LD		A1, 0 * SIZE(AO)

	MOV		C12, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C21, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C22, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C31, C11
	LD		A5, 4 * SIZE(AO)

	MOV		C32, C11
	LD		A6, 5 * SIZE(AO)

	MOV		C41, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C42, C11
	LD		A7, 6 * SIZE(AO)

	MOV		C13, C11
	LD		A8, 7 * SIZE(AO)

	MOV		C14, C11

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	blez	L, .L182
	MOV		C44, C11
#endif


	.align	4
.L1810:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		B5, 8 * SIZE(AO)

	MADD	C21, C21, A2, B1
	LD		B6, 9 * SIZE(AO)

	MADD	C31, C31, A3, B1
	LD		B7, 10 * SIZE(AO)

	MADD	C41, C41, A4, B1
	LD		B8, 11 * SIZE(AO)

	MADD	C13, C13, A5, B1
	LD		B2, 1 * SIZE(BO)
	daddiu	BO, BO, 2 * SIZE

	MADD	C23, C23, A6, B1
	LD		A1, 12 * SIZE(AO)

	MADD	C33, C33, A7, B1
	LD		A2, 13 * SIZE(AO)

	MADD	C43, C43, A8, B1
	LD		A3, 14 * SIZE(AO)

	LD		A4, 15 * SIZE(AO)
	daddiu	AO, AO, 16 * SIZE

	MADD	C11, C11, B5, B2
	LD		A5, 4 * SIZE(AO)

	MADD	C21, C21, B6, B2
	LD		A6, 5 * SIZE(AO)

	MADD	C13, C13, A1, B2
	LD		A7, 6 * SIZE(AO)

	MADD	C23, C23, A2, B2
	LD		A8, 7 * SIZE(AO)

	MADD	C33, C33, A3, B2
	LD		B1, 0 * SIZE(BO)

	MADD	C43, C43, A4, B2
	LD		A1, 0 * SIZE(AO)

	MADD	C31, C31, B7, B2
	LD		A2, 1 * SIZE(AO)

	MADD	C41, C41, B8, B2
	LD		A3, 2 * SIZE(AO)

	bgtz	L, .L1810
	LD		A4, 3 * SIZE(AO)

	.align	4
.L182:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L180
	LD		ALPHA, 152($sp)

	MADD	C13, C13, A5, B1
	MADD	C23, C23, A6, B1
	MADD	C33, C33, A7, B1
	MADD	C43, C43, A8, B1
	daddiu	AO, AO, 8 * SIZE

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	MADD	C31, C31, A3, B1
	MADD	C41, C41, A4, B1
	daddiu	BO, BO, 1 * SIZE


	.align	4
.L180:							#	Write Back
#ifndef TRMMKERNEL
	daddiu	I, I, -1

	LD		A1, 0 * SIZE(C)
	LD		A2, 1 * SIZE(C)
	LD		A3, 2 * SIZE(C)
	LD		A4, 3 * SIZE(C)
	LD		A5, 4 * SIZE(C)
	LD		A6, 5 * SIZE(C)
	LD		A7, 6 * SIZE(C)
	LD		A8, 7 * SIZE(C)

	MADD		A1, A1, C11, ALPHA
	MADD		A2, A2, C21, ALPHA
	MADD		A3, A3, C31, ALPHA
	MADD		A4, A4, C41, ALPHA
	MADD		A5, A5, C13, ALPHA
	MADD		A6, A6, C23, ALPHA
	MADD		A7, A7, C33, ALPHA
	MADD		A8, A8, C43, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)
	ST		A3, 2 * SIZE(C)
	ST		A4, 3 * SIZE(C)
	ST		A5, 4 * SIZE(C)
	ST		A6, 5 * SIZE(C)
	ST		A7, 6 * SIZE(C)
	ST		A8, 7 * SIZE(C)

	daddiu	C, C, 8 * SIZE
	bgtz	I, .L181
	NOP
#else
	daddiu	I, I, -1

	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA
	MUL		A3, C31, ALPHA
	MUL		A4, C41, ALPHA
	MUL		A5, C13, ALPHA
	MUL		A6, C23, ALPHA
	MUL		A7, C33, ALPHA
	MUL		A8, C43, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)
	ST		A3, 2 * SIZE(C)
	ST		A4, 3 * SIZE(C)
	ST		A5, 4 * SIZE(C)
	ST		A6, 5 * SIZE(C)
	ST		A7, 6 * SIZE(C)
	ST		A8, 7 * SIZE(C)

#if ( defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK

#ifdef LEFT
	daddiu	TEMP, TEMP, -8
#else
	daddiu	TEMP, TEMP, -1
#endif

	dsll	L, TEMP, 3 + BASE_SHIFT
	dsll	TEMP, TEMP, BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef LEFT
	daddiu	KK, KK, 8
#endif

	daddiu	C, C, 8 * SIZE
	bgtz	I, .L181
	NOP
#endif

	.align	4
.L14:
	andi	I, M, 4				#	MR=4
	blez	I, .L12
	NOP

	.align	4
.L141:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	move 	BO, B
#else
	dsll	L, KK, 2 + BASE_SHIFT
	dsll	TEMP, KK, BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C41, C11
	MOV		C42, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif	defined(LEFT)
	daddiu	TEMP, KK, 4
#else
	daddiu	TEMP, KK, 1
#endif
	dsra	L, TEMP, 1
	blez	L, .L142
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		A3, 2 * SIZE(AO)

	MOV		C41, C11
	MOV		C42, C11
	LD		A4, 3 * SIZE(AO)

	MOV		C13, C11
	MOV		C14, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C23, C11
	MOV		C24, C11

	MOV		C33, C11
	MOV		C34, C11

	MOV		C43, C11
	blez	L, .L142
	MOV		C44, C11
#endif

	.align	4
.L1410:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		A5, 4 * SIZE(AO)

	MADD	C21, C21, A2, B1
	LD		B3, 1 * SIZE(BO)

	MADD	C31, C31, A3, B1
	LD		A6, 5 * SIZE(AO)
	daddiu	BO, BO, 2 * SIZE

	MADD	C41, C41, A4, B1
	LD		A7, 6 * SIZE(AO)

	LD		A8, 7 * SIZE(AO)
	daddiu	AO, AO, 8 * SIZE


	MADD	C11, C11, A5, B3
	LD		A1, 0 * SIZE(AO)

	MADD	C21, C21, A6, B3
	LD		B1, 0 * SIZE(BO)

	MADD	C31, C31, A7, B3
	LD		A2, 1 * SIZE(AO)

	MADD	C41, C41, A8, B3
	LD		A3, 2 * SIZE(AO)

	bgtz	L, .L1410
	LD		A4, 3 * SIZE(AO)

	.align	4
.L142:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L140
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	MADD	C31, C31, A3, B1
	MADD	C41, C41, A4, B1
	daddiu	AO, AO, 4 * SIZE
	daddiu	BO, BO, 1 * SIZE


	.align	4
.L140:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(C)
	LD		A2, 1 * SIZE(C)
	LD		A3, 2 * SIZE(C)
	LD		A4, 3 * SIZE(C)

	MADD		A1, A1, C11, ALPHA
	MADD		A2, A2, C21, ALPHA
	MADD		A3, A3, C31, ALPHA
	MADD		A4, A4, C41, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)
	ST		A3, 2 * SIZE(C)
	ST		A4, 3 * SIZE(C)
	daddiu	C, C, 4 * SIZE
#else
	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA
	MUL		A3, C31, ALPHA
	MUL		A4, C41, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)
	ST		A3, 2 * SIZE(C)
	ST		A4, 3 * SIZE(C)
	daddiu	C, C, 4 * SIZE

#if ( defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef	LEFT
	daddiu	TEMP, TEMP, -4
#else
	daddiu	TEMP, TEMP, -1
#endif

	dsll	L, TEMP, 2 + BASE_SHIFT
	dsll	TEMP, TEMP, BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef	LEFT
	daddiu	KK, KK, 4
#endif
#endif

	.align	4
.L12:
	andi	I, M, 2
	blez	I, .L11
	NOP

	.align	4
.L121:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA)) ||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B				#	Reset	B
#else
	dsll	L, KK, 1 + BASE_SHIFT
	dsll	TEMP, KK, BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, B, TEMP
#endif

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11

	MOV		C43, C11
	MOV		C44, C11
#if (defined(LEFT) && !defined(TRANSA)) ||\
		(!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 2
#else
	daddiu	TEMP, KK, 1
#endif
	dsra	L, TEMP, 1
	blez	L, .L122
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		A2, 1 * SIZE(AO)

	MOV		C31, C11
	MOV		C32, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C41, C11
	MOV		C42, C11

	MOV		C43, C11
	blez	L, .L122
	MOV		C44, C11
#endif

	.align	4
.L1210:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1
	LD		B3, 1 * SIZE(BO)

	MADD	C21, C21, A2, B1
	daddiu	BO, BO, 2 * SIZE

	LD		A3, 2 * SIZE(AO)
	LD		A4, 3 * SIZE(AO)
	daddiu	AO, AO, 4 * SIZE

	MADD	C11, C11, A3, B3
	LD		B1, 0 * SIZE(BO)

	MADD	C21, C21, A4, B3
	LD		A1, 0 * SIZE(AO)
	bgtz	L, .L1210
	LD		A2, 1 * SIZE(AO)


	.align	4
.L122:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L120
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	MADD	C21, C21, A2, B1
	daddiu	AO, AO, 2 * SIZE
	daddiu	BO, BO, 1 * SIZE


	.align	4
.L120:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(C)
	LD		A2, 1 * SIZE(C)

	MADD		A1, A1, C11, ALPHA
	MADD		A2, A2, C21, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)

	daddiu	C, C, 2 * SIZE
#else
	MUL		A1, C11, ALPHA
	MUL		A2, C21, ALPHA

	ST		A1, 0 * SIZE(C)
	ST		A2, 1 * SIZE(C)

	daddiu	C, C, 2 * SIZE
#if ( defined(LEFT) &&  defined(TRANSA))||\
		(!defined(LEFT) && !defined(TRANSA))
	dsubu	TEMP, K, KK
#ifdef LEFT
	daddiu	TEMP, TEMP, -2
#else
	daddiu	TEMP, TEMP, -1
#endif
	dsll	L, TEMP, 1 + BASE_SHIFT
	dsll	TEMP, TEMP, BASE_SHIFT

	daddu	AO, AO, L
	daddu	BO, BO, TEMP
#endif

#ifdef	LEFT
	daddiu	KK, KK, 2
#endif
#endif

	.align	4
.L11:
	andi	I, M, 1
	blez	I, .L10
	NOP

	.align	4
.L111:
#if defined(TRMMKERNEL)
#if (defined(LEFT) &&  defined(TRANSA))||\
	(!defined(LEFT) && !defined(TRANSA))
	move	BO, B
#else
	dsll	L, KK, BASE_SHIFT
	daddu	AO, AO, L
	daddu	BO, B, L
#endif
	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C31, C11
	MOV		C32, C11
#if (defined(LEFT) && !defined(TRANSA))||\
		(!defined(LEFT) && defined(TRANSA))
	dsubu	TEMP, K, KK
#elif defined(LEFT)
	daddiu	TEMP, KK, 1
#else
	daddiu	TEMP, KK, 1
#endif
	dsra	L, TEMP, 1
	blez	L, .L112
	NOP

#else
	move	BO, B				#	Reset	B
	dsra	L, K, 1				#	UnRoll	K=4

	MTC		$0, C11				#	CLEAR REAULTS REGISTERS
	MOV		C12, C11
	LD		A1, 0 * SIZE(AO)

	MOV		C21, C11
	MOV		C22, C11
	LD		B1, 0 * SIZE(BO)

	MOV		C31, C11
	blez	L, .L112
	MOV		C32, C11
#endif


	.align	4
.L1110:
	daddiu	L, L, -1
	MADD	C11, C11, A1, B1

	LD		A2, 1 * SIZE(AO)
	LD		B2, 1 * SIZE(BO)

	daddiu	AO, AO, 2 * SIZE
	daddiu	BO, BO, 2 * SIZE

	MADD	C11, C11, A2, B2
	LD		A1, 0 * SIZE(AO)
	LD		B1, 0 * SIZE(BO)

	bgtz	L, .L1110
	NOP


	.align	4
.L112:
#ifndef TRMMKERNEL
	andi	L, K, 1
#else
	andi	L, TEMP, 1
#endif
	blez	L, .L110
	LD		ALPHA, 152($sp)

	MADD	C11, C11, A1, B1
	daddiu	AO, AO, 1 * SIZE
	daddiu	BO, BO, 1 * SIZE


	.align	4
.L110:							#	Write Back
#ifndef TRMMKERNEL
	LD		A1, 0 * SIZE(C)

	MADD		A1, A1, C11, ALPHA

	ST		A1, 0 * SIZE(C)

	daddiu	C, C, 1 * SIZE
#else
	MUL		A1, C11, ALPHA

	ST		A1, 0 * SIZE(C)

	daddiu	C, C, 1 * SIZE

#endif

	.align	4
.L10:
	move	B, BO
	NOP

.L999:
	ld	$16,   0($sp)
	ld	$17,   8($sp)
	ld	$18,  16($sp)
	ld	$19,  24($sp)
	ld	$20,  32($sp)
	ld	$21,  40($sp)
	ld	$22,  48($sp)

	ldc1	$f24, 56($sp)
	ldc1	$f25, 64($sp)
	ldc1	$f26, 72($sp)
	ldc1	$f27, 80($sp)
	ldc1	$f28, 88($sp)

#if defined(TRMMKERNEL)
	ld	$23,  96($sp)
	ld	$24, 104($sp)
	ld	$25, 112($sp)
#endif

#ifndef __64BIT__
	ldc1	$f20,120($sp)
	ldc1	$f21,128($sp)
	ldc1	$f22,136($sp)
	ldc1	$f23,144($sp)
#endif

	daddiu	$sp,$sp,STACKSIZE
	j	$31
	nop

	EPILOGUE
#	.set	macro
#	.set	reorder
#	.end	gemm
#	.size	gemm, .-gemm
#	.ident	"GCC: (Debian 4.4.6-6) 4.4.6"
