Blame thirdparty/openblas/xianyi-OpenBLAS-e6e87a2/kernel/power/ztrsm_kernel_hummer_LN.S

kusano 2b45e8
/*********************************************************************/
kusano 2b45e8
/* Copyright 2009, 2010 The University of Texas at Austin.           */
kusano 2b45e8
/* All rights reserved.                                              */
kusano 2b45e8
/*                                                                   */
kusano 2b45e8
/* Redistribution and use in source and binary forms, with or        */
kusano 2b45e8
/* without modification, are permitted provided that the following   */
kusano 2b45e8
/* conditions are met:                                               */
kusano 2b45e8
/*                                                                   */
kusano 2b45e8
/*   1. Redistributions of source code must retain the above         */
kusano 2b45e8
/*      copyright notice, this list of conditions and the following  */
kusano 2b45e8
/*      disclaimer.                                                  */
kusano 2b45e8
/*                                                                   */
kusano 2b45e8
/*   2. Redistributions in binary form must reproduce the above      */
kusano 2b45e8
/*      copyright notice, this list of conditions and the following  */
kusano 2b45e8
/*      disclaimer in the documentation and/or other materials       */
kusano 2b45e8
/*      provided with the distribution.                              */
kusano 2b45e8
/*                                                                   */
kusano 2b45e8
/*    THIS  SOFTWARE IS PROVIDED  BY THE  UNIVERSITY OF  TEXAS AT    */
kusano 2b45e8
/*    AUSTIN  ``AS IS''  AND ANY  EXPRESS OR  IMPLIED WARRANTIES,    */
kusano 2b45e8
/*    INCLUDING, BUT  NOT LIMITED  TO, THE IMPLIED  WARRANTIES OF    */
kusano 2b45e8
/*    MERCHANTABILITY  AND FITNESS FOR  A PARTICULAR  PURPOSE ARE    */
kusano 2b45e8
/*    DISCLAIMED.  IN  NO EVENT SHALL THE UNIVERSITY  OF TEXAS AT    */
kusano 2b45e8
/*    AUSTIN OR CONTRIBUTORS BE  LIABLE FOR ANY DIRECT, INDIRECT,    */
kusano 2b45e8
/*    INCIDENTAL,  SPECIAL, EXEMPLARY,  OR  CONSEQUENTIAL DAMAGES    */
kusano 2b45e8
/*    (INCLUDING, BUT  NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE    */
kusano 2b45e8
/*    GOODS  OR  SERVICES; LOSS  OF  USE,  DATA,  OR PROFITS;  OR    */
kusano 2b45e8
/*    BUSINESS INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY OF    */
kusano 2b45e8
/*    LIABILITY, WHETHER  IN CONTRACT, STRICT  LIABILITY, OR TORT    */
kusano 2b45e8
/*    (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY WAY OUT    */
kusano 2b45e8
/*    OF  THE  USE OF  THIS  SOFTWARE,  EVEN  IF ADVISED  OF  THE    */
kusano 2b45e8
/*    POSSIBILITY OF SUCH DAMAGE.                                    */
kusano 2b45e8
/*                                                                   */
kusano 2b45e8
/* The views and conclusions contained in the software and           */
kusano 2b45e8
/* documentation are those of the authors and should not be          */
kusano 2b45e8
/* interpreted as representing official policies, either expressed   */
kusano 2b45e8
/* or implied, of The University of Texas at Austin.                 */
kusano 2b45e8
/*********************************************************************/
kusano 2b45e8
kusano 2b45e8
#define ASSEMBLER
kusano 2b45e8
#include "common.h"
kusano 2b45e8
		
kusano 2b45e8
#undef ZERO
kusano 2b45e8
kusano 2b45e8
#define ALPHA    0
kusano 2b45e8
#define FZERO	16
kusano 2b45e8
kusano 2b45e8
#define	M	r3
kusano 2b45e8
#define	N	r4
kusano 2b45e8
#define	K	r5
kusano 2b45e8
kusano 2b45e8
#ifdef linux
kusano 2b45e8
#define A	r6
kusano 2b45e8
#define	B	r7
kusano 2b45e8
#define	C	r8
kusano 2b45e8
#define	LDC	r9
kusano 2b45e8
#define OFFSET	r10
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#define TEMP	r11
kusano 2b45e8
#define AORIG	r12
kusano 2b45e8
#define KK	r14
kusano 2b45e8
#define INCM1	r15
kusano 2b45e8
#define INCM3	r16
kusano 2b45e8
#define INCM5	r17
kusano 2b45e8
#define INCM7	r18
kusano 2b45e8
#define INC2	r19
kusano 2b45e8
#define INC	r20
kusano 2b45e8
#define INC4	r21
kusano 2b45e8
kusano 2b45e8
#define	I	r22
kusano 2b45e8
#define J	r23
kusano 2b45e8
#define AO	r24
kusano 2b45e8
#define BO	r25
kusano 2b45e8
#define AO2	r26
kusano 2b45e8
#define	BO2	r27
kusano 2b45e8
	
kusano 2b45e8
#define	CO1	r28
kusano 2b45e8
#define CO2	r29
kusano 2b45e8
#define	ZERO	r31
kusano 2b45e8
kusano 2b45e8
#ifndef NEEDPARAM
kusano 2b45e8
kusano 2b45e8
#define A1	f16
kusano 2b45e8
#define A2	f17
kusano 2b45e8
#define A3	f18
kusano 2b45e8
#define A4	f19
kusano 2b45e8
#define A5	f20
kusano 2b45e8
#define A6	f21
kusano 2b45e8
#define A7	f22
kusano 2b45e8
#define A8	f23
kusano 2b45e8
#define A9	f24
kusano 2b45e8
#define A10	f25
kusano 2b45e8
kusano 2b45e8
#define B1	f26
kusano 2b45e8
#define B2	f27
kusano 2b45e8
#define B3	f28
kusano 2b45e8
#define B4	f29
kusano 2b45e8
#define B5	f30
kusano 2b45e8
#define B6	f31
kusano 2b45e8
kusano 2b45e8
#define AP	B6
kusano 2b45e8
kusano 2b45e8
#ifndef CONJ
kusano 2b45e8
#define FXCPMADD	fxcpmadd
kusano 2b45e8
#define FXCSMADD	fxcxnpma
kusano 2b45e8
#else
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
#define FXCPMADD	fxcpnsma
kusano 2b45e8
#define FXCSMADD	fxcxma
kusano 2b45e8
#else
kusano 2b45e8
#define FXCPMADD	fxcpmadd
kusano 2b45e8
#define FXCSMADD	fxcxnsma
kusano 2b45e8
#endif
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifndef CONJ
kusano 2b45e8
#define FXCXNPMA	fxcxnpma
kusano 2b45e8
#define FXCXNSMA	fxcxnsma
kusano 2b45e8
#else
kusano 2b45e8
#define FXCXNPMA	fxcxnsma
kusano 2b45e8
#define FXCXNSMA	fxcxnpma
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
kusano 2b45e8
	PROLOGUE
kusano 2b45e8
	PROFCODE
kusano 2b45e8
kusano 2b45e8
	li	r0, -16
kusano 2b45e8
kusano 2b45e8
	stfpdux	f14, SP, r0
kusano 2b45e8
	stfpdux	f15, SP, r0
kusano 2b45e8
	stfpdux	f16, SP, r0
kusano 2b45e8
	stfpdux	f17, SP, r0
kusano 2b45e8
	stfpdux	f18, SP, r0
kusano 2b45e8
	stfpdux	f19, SP, r0
kusano 2b45e8
	stfpdux	f20, SP, r0
kusano 2b45e8
	stfpdux	f21, SP, r0
kusano 2b45e8
	stfpdux	f22, SP, r0
kusano 2b45e8
	stfpdux	f23, SP, r0
kusano 2b45e8
	stfpdux	f24, SP, r0
kusano 2b45e8
	stfpdux	f25, SP, r0
kusano 2b45e8
	stfpdux	f26, SP, r0
kusano 2b45e8
	stfpdux	f27, SP, r0
kusano 2b45e8
	stfpdux	f28, SP, r0
kusano 2b45e8
	stfpdux	f29, SP, r0
kusano 2b45e8
	stfpdux	f30, SP, r0
kusano 2b45e8
	stfpdux	f31, SP, r0
kusano 2b45e8
	
kusano 2b45e8
	stwu	r31,  -4(SP)
kusano 2b45e8
	stwu	r30,  -4(SP)
kusano 2b45e8
	stwu	r29,  -4(SP)
kusano 2b45e8
	stwu	r28,  -4(SP)
kusano 2b45e8
kusano 2b45e8
	stwu	r27,  -4(SP)
kusano 2b45e8
	stwu	r26,  -4(SP)
kusano 2b45e8
	stwu	r25,  -4(SP)
kusano 2b45e8
	stwu	r24,  -4(SP)
kusano 2b45e8
kusano 2b45e8
	stwu	r23,  -4(SP)
kusano 2b45e8
	stwu	r22,  -4(SP)
kusano 2b45e8
	stwu	r21,  -4(SP)
kusano 2b45e8
	stwu	r20,  -4(SP)
kusano 2b45e8
kusano 2b45e8
	stwu	r19,  -4(SP)
kusano 2b45e8
	stwu	r18,  -4(SP)
kusano 2b45e8
	stwu	r17,  -4(SP)
kusano 2b45e8
	stwu	r16,  -4(SP)
kusano 2b45e8
kusano 2b45e8
	stwu	r15,  -4(SP)
kusano 2b45e8
	stwu	r14,  -4(SP)
kusano 2b45e8
kusano 2b45e8
	li	r0,   0
kusano 2b45e8
	stwu	r0,   -4(SP)
kusano 2b45e8
	stwu	r0,   -4(SP)
kusano 2b45e8
kusano 2b45e8
	stfdu	f2,   -8(SP)
kusano 2b45e8
	stfdu	f1,   -8(SP)
kusano 2b45e8
kusano 2b45e8
	slwi	LDC, LDC, ZBASE_SHIFT
kusano 2b45e8
kusano 2b45e8
	cmpwi	cr0, M, 0
kusano 2b45e8
	ble	.L999
kusano 2b45e8
	cmpwi	cr0, N, 0
kusano 2b45e8
	ble	.L999
kusano 2b45e8
	cmpwi	cr0, K, 0
kusano 2b45e8
	ble	.L999
kusano 2b45e8
kusano 2b45e8
	li	INC,    1 * SIZE
kusano 2b45e8
	li	INC2,   2 * SIZE
kusano 2b45e8
	li	INC4,   4 * SIZE
kusano 2b45e8
	li	INCM1, -1 * SIZE
kusano 2b45e8
	li	INCM3, -3 * SIZE
kusano 2b45e8
	li	INCM5, -5 * SIZE
kusano 2b45e8
	li	INCM7, -7 * SIZE
kusano 2b45e8
kusano 2b45e8
	addi	C, C, - 1 * SIZE
kusano 2b45e8
	
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	mullw	r0, M, K
kusano 2b45e8
	slwi	r0, r0, ZBASE_SHIFT
kusano 2b45e8
	add	A, A, r0
kusano 2b45e8
kusano 2b45e8
	slwi	r0, M, ZBASE_SHIFT
kusano 2b45e8
	add	C, C, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	neg	KK, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	mullw	r0, N, K
kusano 2b45e8
	slwi	r0, r0, ZBASE_SHIFT
kusano 2b45e8
	add	B, B, r0
kusano 2b45e8
kusano 2b45e8
	mullw	r0, N, LDC
kusano 2b45e8
	add	C, C, r0
kusano 2b45e8
kusano 2b45e8
	sub	KK, N, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	srawi.	J, N,  1
kusano 2b45e8
	ble	.L50
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L10:
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 1 + ZBASE_SHIFT
kusano 2b45e8
	sub	B, B, r0
kusano 2b45e8
kusano 2b45e8
	slwi	r0, LDC, 1
kusano 2b45e8
	sub	C, C, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	mr	CO1, C
kusano 2b45e8
	add	CO2, C,   LDC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	add	KK, M, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	mr	KK, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
	addi	AORIG, A, -4 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	addi	AO, A, -4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
#ifndef RT
kusano 2b45e8
	add	C,  CO2, LDC
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
kusano 2b45e8
	
kusano 2b45e8
	andi.	I, M,  1
kusano 2b45e8
	beq	.L20
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	fpmr	f1,  f0
kusano 2b45e8
	addi	BO,  B,  - 4 * SIZE
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	addi	BO2, B,  - 2 * SIZE
kusano 2b45e8
	fpmr	f3, f0
kusano 2b45e8
kusano 2b45e8
	srawi.	r0,  KK,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L34
kusano 2b45e8
#else
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  0 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	r0  , KK, 0 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, KK, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	fpmr	f1,  f0
kusano 2b45e8
	addi	BO,  BO,  - 4 * SIZE
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	addi	BO2, BO,    2 * SIZE
kusano 2b45e8
	fpmr	f3, f0
kusano 2b45e8
kusano 2b45e8
	srawi.	r0,  TEMP,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L34
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO, INC4
kusano 2b45e8
	LFPDUX	B1,  BO, INC4
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	LFPDUX	B3,  BO, INC4
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A3,  AO, INC4
kusano 2b45e8
	LFPDUX	A5,  BO, INC4
kusano 2b45e8
	LFPDUX	A6, BO2, INC4
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	LFPDUX	A7,  BO, INC4
kusano 2b45e8
	LFPDUX	A8, BO2, INC4
kusano 2b45e8
	bdz-	.L33
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L32:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	LFPDUX	B1,  BO, INC4
kusano 2b45e8
	FXCPMADD	f2,  B2, A1, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A1, f3
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	LFPDUX	A1,  AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A2, f0
kusano 2b45e8
	FXCSMADD	f1,  B3, A2, f1
kusano 2b45e8
	LFPDUX	B3,  BO, INC4
kusano 2b45e8
	FXCPMADD	f2,  B4, A2, f2
kusano 2b45e8
	FXCSMADD	f3,  B4, A2, f3
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A5, A3, f0
kusano 2b45e8
	FXCSMADD	f1,  A5, A3, f1
kusano 2b45e8
	LFPDUX	A5,  BO, INC4
kusano 2b45e8
	FXCPMADD	f2,  A6, A3, f2
kusano 2b45e8
	FXCSMADD	f3,  A6, A3, f3
kusano 2b45e8
	LFPDUX	A6, BO2, INC4
kusano 2b45e8
	LFPDUX	A3,  AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A7, A4, f0
kusano 2b45e8
	FXCSMADD	f1,  A7, A4, f1
kusano 2b45e8
	LFPDUX	A7,  BO, INC4
kusano 2b45e8
	FXCPMADD	f2,  A8, A4, f2
kusano 2b45e8
	FXCSMADD	f3,  A8, A4, f3
kusano 2b45e8
	LFPDUX	A8, BO2, INC4
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	bdnz+	.L32
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L33:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	FXCPMADD	f2,  B2, A1, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A1, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A2, f0
kusano 2b45e8
	FXCSMADD	f1,  B3, A2, f1
kusano 2b45e8
	FXCPMADD	f2,  B4, A2, f2
kusano 2b45e8
	FXCSMADD	f3,  B4, A2, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A5, A3, f0
kusano 2b45e8
	FXCSMADD	f1,  A5, A3, f1
kusano 2b45e8
	FXCPMADD	f2,  A6, A3, f2
kusano 2b45e8
	FXCSMADD	f3,  A6, A3, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A7, A4, f0
kusano 2b45e8
	FXCSMADD	f1,  A7, A4, f1
kusano 2b45e8
	FXCPMADD	f2,  A8, A4, f2
kusano 2b45e8
	FXCSMADD	f3,  A8, A4, f3
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L34:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L38
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L38
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDX	A1,  AO,  INC4
kusano 2b45e8
	LFPDUX	B1,  BO,  INC4
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
	add	AO, AO, INC2
kusano 2b45e8
	bdz-	.L37
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L36:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	LFPDUX	B1,  BO,  INC4
kusano 2b45e8
	FXCPMADD	f2,  B2, A1, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A1, f3
kusano 2b45e8
	LFPDX	A1,  AO,  INC4
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
	add	AO, AO, INC2
kusano 2b45e8
	bdnz+	.L36
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L37:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	FXCPMADD	f2,  B2, A1, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A1, f3
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L38:
kusano 2b45e8
	fpadd	f0, f0, f1
kusano 2b45e8
	fpadd	f2, f2, f3
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 1
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	TEMP, r0, 0 + ZBASE_SHIFT
kusano 2b45e8
	slwi	r0,   r0, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
	addi	BO,  BO, - 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	addi	BO2, BO,   2 * SIZE
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDX	f16, BO,  INC4
kusano 2b45e8
	LFPDX	f17, BO2, INC4
kusano 2b45e8
#else
kusano 2b45e8
	LFPDX	f16, AO,  INC4
kusano 2b45e8
	LFPDX	f17, AO2, INC4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
	fpsub	f2,  f17,  f2
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDX	A1,  AO,  INC4
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f2
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDX	A1,  AO,  INC4
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f2
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2, f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	LFPDUX	A2,  BO2, INC4
kusano 2b45e8
	add	BO,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A2, f0, f2
kusano 2b45e8
	FXCXNSMA  f2,  A2, f0, f2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f2
kusano 2b45e8
	FXCXNPMA  f2,  A3, f2,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	add	BO2, BO2, INC4
kusano 2b45e8
	LFPDUX	A2,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f2
kusano 2b45e8
	FXCXNPMA  f2,  A3, f2,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f2,  f0
kusano 2b45e8
	FXCXNSMA  f0,  A2, f2,  f0
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 2 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDX	f0,  BO,  INC4
kusano 2b45e8
	STFPDX	f2,  BO2, INC4
kusano 2b45e8
#else
kusano 2b45e8
	STFPDX	f0,  AO,  INC4
kusano 2b45e8
	STFPDX	f2,  AO2, INC4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
	STFDUX	f2,  CO2, INC
kusano 2b45e8
	STFSDUX	f2,  CO2, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 2 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	r0,   TEMP, 0 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, TEMP, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, r0
kusano 2b45e8
	add	BO, BO, TEMP
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	.align 4
kusano 2b45e8
	
kusano 2b45e8
.L20:
kusano 2b45e8
	andi.	I, M,  2
kusano 2b45e8
	beq	.L30
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  B,  - 4 * SIZE
kusano 2b45e8
	fpmr	f8,  f0
kusano 2b45e8
	addi	BO2, B,  - 2 * SIZE
kusano 2b45e8
	fpmr	f12, f0
kusano 2b45e8
kusano 2b45e8
	srawi.	r0,  KK,  2
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f9,  f0
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	fpmr	f13, f0
kusano 2b45e8
	ble	.L24
kusano 2b45e8
#else
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  1 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	r0  , KK, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  BO,  - 4 * SIZE
kusano 2b45e8
	fpmr	f8,  f0
kusano 2b45e8
	addi	BO2, BO,    2 * SIZE
kusano 2b45e8
	fpmr	f12, f0
kusano 2b45e8
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f9,  f0
kusano 2b45e8
	fpmr	f13, f0
kusano 2b45e8
	srawi.	r0,  TEMP,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L24
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,   AO, INC4
kusano 2b45e8
	LFPDUX	B1,   BO, INC4
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
	LFPDUX	A3,   AO, INC4
kusano 2b45e8
	LFPDUX	B3,   BO, INC4
kusano 2b45e8
	LFPDUX	A4,  AO2, INC4
kusano 2b45e8
	LFPDUX	B4,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A5,   AO, INC4
kusano 2b45e8
	LFPDUX	B5,   BO, INC4
kusano 2b45e8
	LFPDUX	A6,  AO2, INC4
kusano 2b45e8
	LFPDUX	B6,  BO2, INC4
kusano 2b45e8
	LFPDUX	A7,   AO, INC4
kusano 2b45e8
	LFPDUX	A9,   BO, INC4
kusano 2b45e8
	LFPDUX	A10, BO2, INC4
kusano 2b45e8
	bdz-	.L23
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L22:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	LFPDUX	A8,  AO2, INC4
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
	LFPDUX	A1,   AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	B1,   BO, INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A3, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B3, A3, f4
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	FXCPMADD	f8,  B4, A3, f8
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f12, B4, A3, f12
kusano 2b45e8
	LFPDUX	A3,   AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B3, A4, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B3, A4, f5
kusano 2b45e8
	LFPDUX	B3,   BO, INC4
kusano 2b45e8
	FXCPMADD	f9,  B4, A4, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B4, A4, f13
kusano 2b45e8
	LFPDUX	B4,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A5, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B5, A5, f4
kusano 2b45e8
	LFPDUX	A4,  AO2, INC4
kusano 2b45e8
	FXCPMADD	f8,  B6, A5, f8
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f12, B6, A5, f12
kusano 2b45e8
	LFPDUX	A5,   AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B5, A6, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B5, A6, f5
kusano 2b45e8
	LFPDUX	B5,   BO, INC4
kusano 2b45e8
	FXCPMADD	f9,  B6, A6, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B6, A6, f13
kusano 2b45e8
	LFPDUX	B6,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A9,  A7, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  A9,  A7, f4
kusano 2b45e8
	LFPDUX	A6,  AO2, INC4
kusano 2b45e8
	FXCPMADD	f8,  A10, A7, f8
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f12, A10, A7, f12
kusano 2b45e8
	LFPDUX	A7,   AO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  A9,  A8, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  A9,  A8, f5
kusano 2b45e8
	LFPDUX	A9,   BO, INC4
kusano 2b45e8
	FXCPMADD	f9,  A10, A8, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, A10, A8, f13
kusano 2b45e8
	LFPDUX	A10, BO2, INC4
kusano 2b45e8
	bdnz+	.L22
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L23:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	LFPDUX	A8,  AO2, INC4
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A3, f0
kusano 2b45e8
	FXCSMADD	f4,  B3, A3, f4
kusano 2b45e8
	FXCPMADD	f8,  B4, A3, f8
kusano 2b45e8
	FXCSMADD	f12, B4, A3, f12
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B3, A4, f1
kusano 2b45e8
	FXCSMADD	f5,  B3, A4, f5
kusano 2b45e8
	FXCPMADD	f9,  B4, A4, f9
kusano 2b45e8
	FXCSMADD	f13, B4, A4, f13
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A5, f0
kusano 2b45e8
	FXCSMADD	f4,  B5, A5, f4
kusano 2b45e8
	FXCPMADD	f8,  B6, A5, f8
kusano 2b45e8
	FXCSMADD	f12, B6, A5, f12
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B5, A6, f1
kusano 2b45e8
	FXCSMADD	f5,  B5, A6, f5
kusano 2b45e8
	FXCPMADD	f9,  B6, A6, f9
kusano 2b45e8
	FXCSMADD	f13, B6, A6, f13
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A9, A7, f0
kusano 2b45e8
	FXCSMADD	f4,  A9, A7, f4
kusano 2b45e8
	FXCPMADD	f8,  A10, A7, f8
kusano 2b45e8
	FXCSMADD	f12, A10, A7, f12
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  A9, A8, f1
kusano 2b45e8
	FXCSMADD	f5,  A9, A8, f5
kusano 2b45e8
	FXCPMADD	f9,  A10, A8, f9
kusano 2b45e8
	FXCSMADD	f13, A10, A8, f13
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L24:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L28
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L28
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	LFPDUX	B1,  BO,  INC4
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
	bdz-	.L27
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L26:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	B1,  BO,  INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	LFPDUX	B2,  BO2, INC4
kusano 2b45e8
	bdnz+	.L26
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L27:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L28:
kusano 2b45e8
	fpadd	f0, f0, f4
kusano 2b45e8
	fpadd	f8, f8, f12
kusano 2b45e8
	fpadd	f1, f1, f5
kusano 2b45e8
	fpadd	f9, f9, f13
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 2
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	r0,   r0, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	addi	BO,  BO, - 4 * SIZE
kusano 2b45e8
	addi	BO2, BO,   2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDUX	f16, BO,  INC4
kusano 2b45e8
	LFPDUX	f18, BO2, INC4
kusano 2b45e8
	LFPDUX	f17, BO,  INC4
kusano 2b45e8
	LFPDUX	f19, BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	LFPDUX	f16, AO,  INC4
kusano 2b45e8
	LFPDUX	f17, AO2, INC4
kusano 2b45e8
	LFPDUX	f18, AO,  INC4
kusano 2b45e8
	LFPDUX	f19, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
	subi	AO2, AO2,  8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
	fpsub	f1,  f17,  f1
kusano 2b45e8
	fpsub	f8,  f18,  f8
kusano 2b45e8
	fpsub	f9,  f19,  f9
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
	LFPDUX	A2,  AO,  INC4
kusano 2b45e8
	LFPDUX	A3,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
	subi	AO2, AO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f1
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f1,  f0
kusano 2b45e8
	fxcpnmsub f8,  A2, f9,  f8
kusano 2b45e8
	FXCXNSMA  f0,  A2, f1,  f0
kusano 2b45e8
	FXCXNSMA  f8,  A2, f9,  f8
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f8,  A1, f8,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	LFPDUX	A3,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
	subi	AO2, AO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f8,  A1, f8, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A2, f0, f1
kusano 2b45e8
	fxcpnmsub f9,  A2, f8, f9
kusano 2b45e8
	FXCXNSMA  f1,  A2, f0, f1
kusano 2b45e8
	FXCXNSMA  f9,  A2, f8, f9
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A3, f1
kusano 2b45e8
	fxpmul	  f7,  A3, f9
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1, f6
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9, f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	LFPDUX	A2,  BO2, INC4
kusano 2b45e8
	add	BO,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f8,  A2, f0, f8
kusano 2b45e8
	fxcpnmsub f9,  A2, f1, f9
kusano 2b45e8
kusano 2b45e8
	FXCXNSMA  f8,  A2, f0, f8
kusano 2b45e8
	FXCXNSMA  f9,  A2, f1, f9
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f8
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f8,  A3, f8,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	add	BO2, BO2, INC4
kusano 2b45e8
	LFPDUX	A2,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f8
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f8,  A3, f8,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f8,  f0
kusano 2b45e8
	fxcpnmsub f1,  A2, f9,  f1
kusano 2b45e8
kusano 2b45e8
	FXCXNSMA  f0,  A2, f8,  f0
kusano 2b45e8
	FXCXNSMA  f1,  A2, f9,  f1
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 4 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDUX	f0,  BO,  INC4
kusano 2b45e8
	STFPDUX	f8,  BO2, INC4
kusano 2b45e8
	STFPDUX	f1,  BO,  INC4
kusano 2b45e8
	STFPDUX	f9,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	STFPDUX	f0,  AO,  INC4
kusano 2b45e8
	STFPDUX	f1,  AO2, INC4
kusano 2b45e8
	STFPDUX	f8,  AO,  INC4
kusano 2b45e8
	STFPDUX	f9,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
	subi	AO2, AO2,  8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
	STFDUX	f1,  CO1, INC
kusano 2b45e8
	STFSDUX	f1,  CO1, INC
kusano 2b45e8
kusano 2b45e8
	STFDUX	f8,  CO2, INC
kusano 2b45e8
	STFSDUX	f8,  CO2, INC
kusano 2b45e8
	STFDUX	f9,  CO2, INC
kusano 2b45e8
	STFSDUX	f9,  CO2, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 4 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	r0,   TEMP, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, r0
kusano 2b45e8
	add	BO, BO, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L30:
kusano 2b45e8
	srawi.	I, M,  2
kusano 2b45e8
	ble	.L49
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L11:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  B,  - 4 * SIZE
kusano 2b45e8
	fpmr	f8,  f0
kusano 2b45e8
	addi	BO2, B,  - 2 * SIZE
kusano 2b45e8
	fpmr	f12, f0
kusano 2b45e8
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f9,  f0
kusano 2b45e8
	fpmr	f13, f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
kusano 2b45e8
	fpmr	f6,  f0
kusano 2b45e8
	fpmr	f10, f0
kusano 2b45e8
	fpmr	f14, f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
kusano 2b45e8
	fpmr	f7,  f0
kusano 2b45e8
	fpmr	f11, f0
kusano 2b45e8
	fpmr	f15, f0
kusano 2b45e8
kusano 2b45e8
	srawi.	r0,  KK,  2
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L14
kusano 2b45e8
#else
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  2 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	r0  , KK, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, KK, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f9,  f0
kusano 2b45e8
	fpmr	f13, f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
kusano 2b45e8
	fpmr	f6,  f0
kusano 2b45e8
	fpmr	f10, f0
kusano 2b45e8
	fpmr	f14, f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
kusano 2b45e8
	fpmr	f7,  f0
kusano 2b45e8
	fpmr	f11, f0
kusano 2b45e8
	fpmr	f15, f0
kusano 2b45e8
kusano 2b45e8
	addi	AO2, AO,    2 * SIZE
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  BO,  - 4 * SIZE
kusano 2b45e8
	fpmr	f8,  f0
kusano 2b45e8
	addi	BO2, BO,    2 * SIZE
kusano 2b45e8
	fpmr	f12, f0
kusano 2b45e8
kusano 2b45e8
	srawi.	r0,  TEMP,  2
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L14
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO, INC4
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	LFPDUX	A3,  AO, INC4
kusano 2b45e8
	fpmr	f9,  f0
kusano 2b45e8
	LFPDUX	B1,  BO, INC4
kusano 2b45e8
	fpmr	f13, f0
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A5,  AO, INC4
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	LFPDUX	A6,  AO, INC4
kusano 2b45e8
	fpmr	f6,  f0
kusano 2b45e8
	LFPDUX	B3,  BO, INC4
kusano 2b45e8
	fpmr	f10, f0
kusano 2b45e8
	LFPDUX	A7,  AO, INC4
kusano 2b45e8
	fpmr	f14, f0
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A8,  AO, INC4
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	LFPDUX	B5,  BO, INC4
kusano 2b45e8
	fpmr	f7,  f0
kusano 2b45e8
	LFPDUX	A9,  AO, INC4
kusano 2b45e8
	fpmr	f11, f0
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	fpmr	f15, f0
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	bdz-	.L13
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L12:
kusano 2b45e8
kusano 2b45e8
## 1 ##
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
	LFPDUX	B6,  BO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	LFPDUX	A10, AO, INC4
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B2, A3, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B2, A3, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B2, A4, f11
kusano 2b45e8
	LFPDUX	A1,  AO, INC4
kusano 2b45e8
	FXCSMADD	f15, B2, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 2 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A5, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B3, A5, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B4, A5, f8
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B4, A5, f12
kusano 2b45e8
	LFPDUX	B1,  BO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B3, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B3, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B4, A2, f9
kusano 2b45e8
	LFPDUX	A3,  AO, INC4
kusano 2b45e8
	FXCSMADD	f13, B4, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B3, A6, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B3, A6, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B4, A6, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B4, A6, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B3, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B3, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	LFPDUX	A5,  AO, INC4
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 3 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A7, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B5, A7, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B2, A7, f8
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B2, A7, f12
kusano 2b45e8
	LFPDUX	B3,  BO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B5, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B5, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	LFPDUX	A6,  AO, INC4
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B5, A8, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B5, A8, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B2, A8, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B2, A8, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B5, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B5, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B2, A4, f11
kusano 2b45e8
	LFPDUX	A7,  AO, INC4
kusano 2b45e8
	FXCSMADD	f15, B2, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 4 ##
kusano 2b45e8
	FXCPMADD	f0,  B6, A9, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B6, A9, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B4, A9, f8
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B4, A9, f12
kusano 2b45e8
	LFPDUX	B5,  BO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B6, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B6, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B4, A2, f9
kusano 2b45e8
	LFPDUX	A8,  AO, INC4
kusano 2b45e8
	FXCSMADD	f13, B4, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B6, A10, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B6, A10, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B4, A10, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B4, A10, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B6, A4, f3
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCSMADD	f7,  B6, A4, f7
kusano 2b45e8
	LFPDUX	A9,  AO, INC4
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	bdnz+	.L12
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L13:
kusano 2b45e8
## 1 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B2, A1, f8
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B2, A1, f12
kusano 2b45e8
	LFPDUX	B6,  BO, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	LFPDUX	A10, AO, INC4
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B2, A3, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B2, A3, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B2, A4, f11
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f15, B2, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 2 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A5, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B3, A5, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B4, A5, f8
kusano 2b45e8
	LFPDUX	B2, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B4, A5, f12
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B3, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B3, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B4, A2, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B4, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B3, A6, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B3, A6, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B4, A6, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B4, A6, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B3, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B3, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 3 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A7, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B5, A7, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B2, A7, f8
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	FXCSMADD	f12, B2, A7, f12
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B5, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B5, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B2, A2, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B2, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B5, A8, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B5, A8, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B2, A8, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B2, A8, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B5, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B5, A4, f7
kusano 2b45e8
	LFPDUX	A2, AO2, INC4
kusano 2b45e8
	FXCPMADD	f11, B2, A4, f11
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f15, B2, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
## 4 ##
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B6, A9, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B6, A9, f4
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f8,  B4, A9, f8
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f12, B4, A9, f12
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  B6, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B6, A2, f5
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	FXCPMADD	f9,  B4, A2, f9
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f13, B4, A2, f13
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B6, A10, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B6, A10, f6
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f10, B4, A10, f10
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f14, B4, A10, f14
kusano 2b45e8
	nop
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  B6, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B6, A4, f7
kusano 2b45e8
	nop
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	nop
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L14:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L18
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L18
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
.L15:
kusano 2b45e8
	LFPDUX	A2,  AO,  INC4
kusano 2b45e8
	LFPDUX	A4,  AO2, INC4
kusano 2b45e8
	LFPDUX	A10, BO,  INC4
kusano 2b45e8
	LFPDUX	B4,  BO2, INC4
kusano 2b45e8
	bdz-	.L17
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L16:
kusano 2b45e8
	FXCPMADD	f0,  A10, A2, f0
kusano 2b45e8
	FXCSMADD	f4,  A10, A2, f4
kusano 2b45e8
	FXCPMADD	f8,  B4, A2, f8
kusano 2b45e8
	FXCSMADD	f12, B4, A2, f12
kusano 2b45e8
	LFPDUX	A2, AO,  INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  A10, A4, f1
kusano 2b45e8
	FXCSMADD	f5,  A10, A4, f5
kusano 2b45e8
	FXCPMADD	f9,  B4, A4, f9
kusano 2b45e8
	FXCSMADD	f13, B4, A4, f13
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  A10, A2, f2
kusano 2b45e8
	FXCSMADD	f6,  A10, A2, f6
kusano 2b45e8
	FXCPMADD	f10, B4, A2, f10
kusano 2b45e8
	FXCSMADD	f14, B4, A2, f14
kusano 2b45e8
	LFPDUX	A2, AO,  INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  A10, A4, f3
kusano 2b45e8
	FXCSMADD	f7,  A10, A4, f7
kusano 2b45e8
	LFPDUX	A10, BO,  INC4
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
	LFPDUX	B4, BO2, INC4
kusano 2b45e8
	bdnz+	.L16
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L17:
kusano 2b45e8
	FXCPMADD	f0,  A10, A2, f0
kusano 2b45e8
	FXCSMADD	f4,  A10, A2, f4
kusano 2b45e8
	FXCPMADD	f8,  B4, A2, f8
kusano 2b45e8
	FXCSMADD	f12, B4, A2, f12
kusano 2b45e8
	LFPDUX	A2, AO,  INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f1,  A10, A4, f1
kusano 2b45e8
	FXCSMADD	f5,  A10, A4, f5
kusano 2b45e8
	FXCPMADD	f9,  B4, A4, f9
kusano 2b45e8
	FXCSMADD	f13, B4, A4, f13
kusano 2b45e8
	LFPDUX	A4, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  A10, A2, f2
kusano 2b45e8
	FXCSMADD	f6,  A10, A2, f6
kusano 2b45e8
	FXCPMADD	f10, B4, A2, f10
kusano 2b45e8
	FXCSMADD	f14, B4, A2, f14
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f3,  A10, A4, f3
kusano 2b45e8
	FXCSMADD	f7,  A10, A4, f7
kusano 2b45e8
	FXCPMADD	f11, B4, A4, f11
kusano 2b45e8
	FXCSMADD	f15, B4, A4, f15
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L18:
kusano 2b45e8
	fpadd	f0,  f0,  f4
kusano 2b45e8
	fpadd	f8,  f8,  f12
kusano 2b45e8
	fpadd	f1,  f1,  f5
kusano 2b45e8
	fpadd	f9,  f9,  f13
kusano 2b45e8
kusano 2b45e8
	fpadd	f2,  f2,  f6
kusano 2b45e8
	fpadd	f10, f10, f14
kusano 2b45e8
	fpadd	f3,  f3,  f7
kusano 2b45e8
	fpadd	f11, f11, f15
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 4
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	TEMP, r0, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	r0,   r0, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
	addi	AO2, AO,   2 * SIZE
kusano 2b45e8
	addi	BO,  BO, - 4 * SIZE
kusano 2b45e8
	addi	BO2, BO,   2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDUX	f16, BO,  INC4
kusano 2b45e8
	LFPDUX	f20, BO2, INC4
kusano 2b45e8
	LFPDUX	f17, BO,  INC4
kusano 2b45e8
	LFPDUX	f21, BO2, INC4
kusano 2b45e8
	LFPDUX	f18, BO,  INC4
kusano 2b45e8
	LFPDUX	f22, BO2, INC4
kusano 2b45e8
	LFPDUX	f19, BO,  INC4
kusano 2b45e8
	LFPDUX	f23, BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,  16 * SIZE
kusano 2b45e8
	subi	BO2, BO2, 16 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	LFPDUX	f16, AO,  INC4
kusano 2b45e8
	LFPDUX	f17, AO2, INC4
kusano 2b45e8
	LFPDUX	f18, AO,  INC4
kusano 2b45e8
	LFPDUX	f19, AO2, INC4
kusano 2b45e8
	LFPDUX	f20, AO,  INC4
kusano 2b45e8
	LFPDUX	f21, AO2, INC4
kusano 2b45e8
	LFPDUX	f22, AO,  INC4
kusano 2b45e8
	LFPDUX	f23, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  16 * SIZE
kusano 2b45e8
	subi	AO2, AO2, 16 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
	fpsub	f1,  f17,  f1
kusano 2b45e8
	fpsub	f2,  f18,  f2
kusano 2b45e8
	fpsub	f3,  f19,  f3
kusano 2b45e8
kusano 2b45e8
	fpsub	f8,  f20,  f8
kusano 2b45e8
	fpsub	f9,  f21,  f9
kusano 2b45e8
	fpsub	f10, f22,  f10
kusano 2b45e8
	fpsub	f11, f23,  f11
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A2,  AO,  INC4
kusano 2b45e8
	LFPDUX	A3,  AO2, INC4
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A4,  AO,  INC4
kusano 2b45e8
	LFPDUX	A5,  AO2, INC4
kusano 2b45e8
	LFPDUX	A6,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A7,  AO,  INC4
kusano 2b45e8
	LFPDUX	A8,  AO2, INC4
kusano 2b45e8
	LFPDUX	A9,  AO,  INC4
kusano 2b45e8
	LFPDUX	A10, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  32 * SIZE
kusano 2b45e8
	subi	AO2, AO2, 32 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A10, f3
kusano 2b45e8
	fxpmul	  f5,  A10, f11
kusano 2b45e8
	FXCXNPMA  f3,  A10, f3,  f4
kusano 2b45e8
	FXCXNPMA  f11, A10, f11, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A9, f3,  f2
kusano 2b45e8
	fxcpnmsub f10, A9, f11, f10
kusano 2b45e8
	FXCXNSMA  f2,  A9, f3,  f2
kusano 2b45e8
	FXCXNSMA  f10, A9, f11, f10
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A8, f3,  f1
kusano 2b45e8
	fxcpnmsub f9,  A8, f11, f9
kusano 2b45e8
	FXCXNSMA  f1,  A8, f3,  f1
kusano 2b45e8
	FXCXNSMA  f9,  A8, f11, f9
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A7, f3,  f0
kusano 2b45e8
	fxcpnmsub f8,  A7, f11, f8
kusano 2b45e8
	FXCXNSMA  f0,  A7, f3,  f0
kusano 2b45e8
	FXCXNSMA  f8,  A7, f11, f8
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A6, f2
kusano 2b45e8
	fxpmul	  f5,  A6, f10
kusano 2b45e8
	FXCXNPMA  f2,  A6, f2,  f4
kusano 2b45e8
	FXCXNPMA  f10, A6, f10, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A5, f2,  f1
kusano 2b45e8
	fxcpnmsub f9,  A5, f10, f9
kusano 2b45e8
	FXCXNSMA  f1,  A5, f2,  f1
kusano 2b45e8
	FXCXNSMA  f9,  A5, f10, f9
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A4, f2,  f0
kusano 2b45e8
	fxcpnmsub f8,  A4, f10, f8
kusano 2b45e8
	FXCXNSMA  f0,  A4, f2,  f0
kusano 2b45e8
	FXCXNSMA  f8,  A4, f10, f8
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f1
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f1,  f0
kusano 2b45e8
	fxcpnmsub f8,  A2, f9,  f8
kusano 2b45e8
	FXCXNSMA  f0,  A2, f1,  f0
kusano 2b45e8
	FXCXNSMA  f8,  A2, f9,  f8
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f8,  A1, f8,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDUX	A1,  AO,  INC4
kusano 2b45e8
	LFPDUX	A2,  AO2, INC4
kusano 2b45e8
	LFPDUX	A3,  AO,  INC4
kusano 2b45e8
	LFPDUX	A4,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	LFPDUX	A5,  AO2, INC4
kusano 2b45e8
	LFPDUX	A6,  AO,  INC4
kusano 2b45e8
	LFPDUX	A7,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
	LFPDUX	A8,  AO,  INC4
kusano 2b45e8
	LFPDUX	A9,  AO2, INC4
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	add	AO2, AO2, INC4
kusano 2b45e8
	add	AO,  AO,  INC4
kusano 2b45e8
	LFPDUX	A10, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  32 * SIZE
kusano 2b45e8
	subi	AO2, AO2, 32 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f8,  A1, f8, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A2, f0, f1
kusano 2b45e8
	fxcpnmsub f9,  A2, f8, f9
kusano 2b45e8
	FXCXNSMA  f1,  A2, f0, f1
kusano 2b45e8
	FXCXNSMA  f9,  A2, f8, f9
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A3, f0, f2
kusano 2b45e8
	fxcpnmsub f10, A3, f8, f10
kusano 2b45e8
	FXCXNSMA  f2,  A3, f0, f2
kusano 2b45e8
	FXCXNSMA  f10, A3, f8, f10
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A4, f0, f3
kusano 2b45e8
	fxcpnmsub f11, A4, f8, f11
kusano 2b45e8
	FXCXNSMA  f3,  A4, f0, f3
kusano 2b45e8
	FXCXNSMA  f11, A4, f8, f11
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A5, f1
kusano 2b45e8
	fxpmul	  f7,  A5, f9
kusano 2b45e8
	FXCXNPMA  f1,  A5, f1, f6
kusano 2b45e8
	FXCXNPMA  f9,  A5, f9, f7
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A6, f1, f2
kusano 2b45e8
	fxcpnmsub f10, A6, f9, f10
kusano 2b45e8
	FXCXNSMA  f2,  A6, f1, f2
kusano 2b45e8
	FXCXNSMA  f10, A6, f9, f10
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A7, f1, f3
kusano 2b45e8
	fxcpnmsub f11, A7, f9, f11
kusano 2b45e8
	FXCXNSMA  f3,  A7, f1, f3
kusano 2b45e8
	FXCXNSMA  f11, A7, f9, f11
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A8, f2
kusano 2b45e8
	fxpmul	  f5,  A8, f10
kusano 2b45e8
	FXCXNPMA  f2,  A8, f2,  f4
kusano 2b45e8
	FXCXNPMA  f10, A8, f10, f5
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A9, f2,  f3
kusano 2b45e8
	fxcpnmsub f11, A9, f10, f11
kusano 2b45e8
	FXCXNSMA  f3,  A9, f2,  f3
kusano 2b45e8
	FXCXNSMA  f11, A9, f10, f11
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A10, f3
kusano 2b45e8
	fxpmul	  f7,  A10, f11
kusano 2b45e8
	FXCXNPMA  f3,  A10, f3,  f6
kusano 2b45e8
	FXCXNPMA  f11, A10, f11, f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	LFPDUX	A2,  BO2, INC4
kusano 2b45e8
	add	BO,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
	fxpmul	  f6,  A1, f2
kusano 2b45e8
	fxpmul	  f7,  A1, f3
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1, f5
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2, f6
kusano 2b45e8
	FXCXNPMA  f3,  A1, f3, f7
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f8,  A2, f0, f8
kusano 2b45e8
	fxcpnmsub f9,  A2, f1, f9
kusano 2b45e8
	fxcpnmsub f10, A2, f2, f10
kusano 2b45e8
	fxcpnmsub f11, A2, f3, f11
kusano 2b45e8
kusano 2b45e8
	FXCXNSMA  f8,  A2, f0, f8
kusano 2b45e8
	FXCXNSMA  f9,  A2, f1, f9
kusano 2b45e8
	FXCXNSMA  f10, A2, f2, f10
kusano 2b45e8
	FXCXNSMA  f11, A2, f3, f11
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f8
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
	fxpmul	  f6,  A3, f10
kusano 2b45e8
	fxpmul	  f7,  A3, f11
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f8,  A3, f8,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
	FXCXNPMA  f10, A3, f10, f6
kusano 2b45e8
	FXCXNPMA  f11, A3, f11, f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDUX	A1,  BO,  INC4
kusano 2b45e8
	add	BO2, BO2, INC4
kusano 2b45e8
	LFPDUX	A2,  BO,  INC4
kusano 2b45e8
	LFPDUX	A3,  BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
	subi	BO2, BO2,  8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f8
kusano 2b45e8
	fxpmul	  f5,  A3, f9
kusano 2b45e8
	fxpmul	  f6,  A3, f10
kusano 2b45e8
	fxpmul	  f7,  A3, f11
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f8,  A3, f8,  f4
kusano 2b45e8
	FXCXNPMA  f9,  A3, f9,  f5
kusano 2b45e8
	FXCXNPMA  f10, A3, f10, f6
kusano 2b45e8
	FXCXNPMA  f11, A3, f11, f7
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f8,  f0
kusano 2b45e8
	fxcpnmsub f1,  A2, f9,  f1
kusano 2b45e8
	fxcpnmsub f2,  A2, f10, f2
kusano 2b45e8
	fxcpnmsub f3,  A2, f11, f3
kusano 2b45e8
kusano 2b45e8
	FXCXNSMA  f0,  A2, f8,  f0
kusano 2b45e8
	FXCXNSMA  f1,  A2, f9,  f1
kusano 2b45e8
	FXCXNSMA  f2,  A2, f10, f2
kusano 2b45e8
	FXCXNSMA  f3,  A2, f11, f3
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
	fxpmul	  f6,  A1, f2
kusano 2b45e8
	fxpmul	  f7,  A1, f3
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1,  f5
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2,  f6
kusano 2b45e8
	FXCXNPMA  f3,  A1, f3,  f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 8 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDUX	f0,  BO,  INC4
kusano 2b45e8
	STFPDUX	f8,  BO2, INC4
kusano 2b45e8
	STFPDUX	f1,  BO,  INC4
kusano 2b45e8
	STFPDUX	f9,  BO2, INC4
kusano 2b45e8
	STFPDUX	f2,  BO,  INC4
kusano 2b45e8
	STFPDUX	f10, BO2, INC4
kusano 2b45e8
	STFPDUX	f3,  BO,  INC4
kusano 2b45e8
	STFPDUX	f11, BO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,  16 * SIZE
kusano 2b45e8
	subi	BO2, BO2, 16 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	STFPDUX	f0,  AO,  INC4
kusano 2b45e8
	STFPDUX	f1,  AO2, INC4
kusano 2b45e8
	STFPDUX	f2,  AO,  INC4
kusano 2b45e8
	STFPDUX	f3,  AO2, INC4
kusano 2b45e8
	STFPDUX	f8,  AO,  INC4
kusano 2b45e8
	STFPDUX	f9,  AO2, INC4
kusano 2b45e8
	STFPDUX	f10, AO,  INC4
kusano 2b45e8
	STFPDUX	f11, AO2, INC4
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  16 * SIZE
kusano 2b45e8
	subi	AO2, AO2, 16 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
	STFDUX	f1,  CO1, INC
kusano 2b45e8
	STFSDUX	f1,  CO1, INC
kusano 2b45e8
	STFDUX	f2,  CO1, INC
kusano 2b45e8
	STFSDUX	f2,  CO1, INC
kusano 2b45e8
	STFDUX	f3,  CO1, INC
kusano 2b45e8
	STFSDUX	f3,  CO1, INC
kusano 2b45e8
kusano 2b45e8
	STFDUX	f8,  CO2, INC
kusano 2b45e8
	STFSDUX	f8,  CO2, INC
kusano 2b45e8
	STFDUX	f9,  CO2, INC
kusano 2b45e8
	STFSDUX	f9,  CO2, INC
kusano 2b45e8
	STFDUX	f10, CO2, INC
kusano 2b45e8
	STFSDUX	f10, CO2, INC
kusano 2b45e8
	STFDUX	f11, CO2, INC
kusano 2b45e8
	STFSDUX	f11, CO2, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 8 * SIZE
kusano 2b45e8
	subi	CO2, CO2, 8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 2 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	r0,   TEMP, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, TEMP, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, r0
kusano 2b45e8
	add	BO, BO, TEMP
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	addic.	I, I, -1
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	bgt+	.L11
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L49:
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0, K, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	B, B, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	addi	B,  BO, 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	addi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	subi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	addic.	J, J, -1
kusano 2b45e8
	bgt+	.L10
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L50:
kusano 2b45e8
	andi.	J, N,  1
kusano 2b45e8
	beq	.L999
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 0 + ZBASE_SHIFT
kusano 2b45e8
	sub	B, B, r0
kusano 2b45e8
kusano 2b45e8
	sub	C, C, LDC
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	mr	CO1, C
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	add	KK, M, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	mr	KK, OFFSET
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
	addi	AORIG, A, -2 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	addi	AO, A, -2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
#ifndef RT
kusano 2b45e8
	add	C,  CO2, LDC
kusano 2b45e8
#endif
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
kusano 2b45e8
	andi.	I, M,  1
kusano 2b45e8
	beq	.L60
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	addi	BO,  B,  - 2 * SIZE
kusano 2b45e8
	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	srawi.	r0, KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L74
kusano 2b45e8
#else
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  0 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	TEMP, KK, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
	addi	BO,  BO,  - 2 * SIZE
kusano 2b45e8
	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	srawi.	r0, TEMP,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L74
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO, INC2
kusano 2b45e8
	LFPDUX	B1,  BO, INC2
kusano 2b45e8
	LFPDUX	A2,  AO, INC2
kusano 2b45e8
	LFPDUX	B2,  BO, INC2
kusano 2b45e8
	LFPDUX	A3,  AO, INC2
kusano 2b45e8
	LFPDUX	B3,  BO, INC2
kusano 2b45e8
	LFPDUX	A4,  AO, INC2
kusano 2b45e8
	LFPDUX	B4,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A5,  AO, INC2
kusano 2b45e8
	LFPDUX	B5,  BO, INC2
kusano 2b45e8
	LFPDUX	A6,  AO, INC2
kusano 2b45e8
	LFPDUX	B6,  BO, INC2
kusano 2b45e8
	LFPDUX	A7,  AO, INC2
kusano 2b45e8
	LFPDUX	A9,  BO, INC2
kusano 2b45e8
	LFPDUX	A8,  AO, INC2
kusano 2b45e8
	LFPDUX	A10, BO, INC2
kusano 2b45e8
	bdz-	.L73
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L72:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	LFPDUX	A1,  AO, INC2
kusano 2b45e8
	LFPDUX	B1,  BO, INC2
kusano 2b45e8
	FXCPMADD	f2,  B2, A2, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A2, f3
kusano 2b45e8
	LFPDUX	A2,  AO, INC2
kusano 2b45e8
	LFPDUX	B2,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A3, f0
kusano 2b45e8
	FXCSMADD	f1,  B3, A3, f1
kusano 2b45e8
	LFPDUX	A3,  AO, INC2
kusano 2b45e8
	LFPDUX	B3,  BO, INC2
kusano 2b45e8
	FXCPMADD	f2,  B4, A4, f2
kusano 2b45e8
	FXCSMADD	f3,  B4, A4, f3
kusano 2b45e8
	LFPDUX	A4,  AO, INC2
kusano 2b45e8
	LFPDUX	B4,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A5, f0
kusano 2b45e8
	FXCSMADD	f1,  B5, A5, f1
kusano 2b45e8
	LFPDUX	A5,  AO, INC2
kusano 2b45e8
	LFPDUX	B5,  BO, INC2
kusano 2b45e8
	FXCPMADD	f2,  B6, A6, f2
kusano 2b45e8
	FXCSMADD	f3,  B6, A6, f3
kusano 2b45e8
	LFPDUX	A6,  AO, INC2
kusano 2b45e8
	LFPDUX	B6,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A9,  A7, f0
kusano 2b45e8
	FXCSMADD	f1,  A9,  A7, f1
kusano 2b45e8
	LFPDUX	A7,  AO, INC2
kusano 2b45e8
	LFPDUX	A9,  BO, INC2
kusano 2b45e8
	FXCPMADD	f2,  A10, A8, f2
kusano 2b45e8
	FXCSMADD	f3,  A10, A8, f3
kusano 2b45e8
	LFPDUX	A8,  AO, INC2
kusano 2b45e8
	LFPDUX	A10, BO, INC2
kusano 2b45e8
kusano 2b45e8
	bdnz+	.L72
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L73:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	FXCPMADD	f2,  B2, A2, f2
kusano 2b45e8
	FXCSMADD	f3,  B2, A2, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A3, f0
kusano 2b45e8
	FXCSMADD	f1,  B3, A3, f1
kusano 2b45e8
	FXCPMADD	f2,  B4, A4, f2
kusano 2b45e8
	FXCSMADD	f3,  B4, A4, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B5, A5, f0
kusano 2b45e8
	FXCSMADD	f1,  B5, A5, f1
kusano 2b45e8
	FXCPMADD	f2,  B6, A6, f2
kusano 2b45e8
	FXCSMADD	f3,  B6, A6, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  A9,  A7, f0
kusano 2b45e8
	FXCSMADD	f1,  A9,  A7, f1
kusano 2b45e8
	FXCPMADD	f2,  A10, A8, f2
kusano 2b45e8
	FXCSMADD	f3,  A10, A8, f3
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L74:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  7
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L78
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 7
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L78
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	bdz-	.L77
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L76:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	bdnz+	.L76
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L77:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f1,  B1, A1, f1
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L78:
kusano 2b45e8
	fpadd	f0, f0, f2
kusano 2b45e8
	fpadd	f1, f1, f3
kusano 2b45e8
kusano 2b45e8
	fpadd	f0, f0, f1
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 1
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	TEMP, r0, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
	addi	BO,  BO, - 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDX	f16, BO,  INC2
kusano 2b45e8
#else
kusano 2b45e8
	LFPDX	f16, AO,  INC2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDX	A1,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDX	A1,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDX	f0,  BO,  INC2
kusano 2b45e8
#else
kusano 2b45e8
	STFPDX	f0,  AO,  INC2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	TEMP, TEMP, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, TEMP
kusano 2b45e8
	add	BO, BO, TEMP
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L60:
kusano 2b45e8
	andi.	I, M,  2
kusano 2b45e8
	beq	.L70
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	addi	BO,  B,  - 2 * SIZE
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	srawi.	r0,  KK,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L64
kusano 2b45e8
#else
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  1 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	r0  , KK, 1 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, KK, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	addi	BO,  BO,  - 2 * SIZE
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	srawi.	r0,  TEMP,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L64
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	B1,  BO, INC2
kusano 2b45e8
	LFPDUX	A1,  AO, INC2
kusano 2b45e8
	LFPDUX	A2,  AO, INC2
kusano 2b45e8
	LFPDUX	B2,  BO, INC2
kusano 2b45e8
	LFPDUX	A3,  AO, INC2
kusano 2b45e8
	LFPDUX	A4,  AO, INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	B3,  BO, INC2
kusano 2b45e8
	LFPDUX	A5,  AO, INC2
kusano 2b45e8
	LFPDUX	A6,  AO, INC2
kusano 2b45e8
	LFPDUX	B4,  BO, INC2
kusano 2b45e8
	LFPDUX	A7,  AO, INC2
kusano 2b45e8
	LFPDUX	A8,  AO, INC2
kusano 2b45e8
	bdz-	.L63
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L62:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f2,  B1, A1, f2
kusano 2b45e8
	LFPDUX	A1,  AO, INC2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f3,  B1, A2, f3
kusano 2b45e8
	LFPDUX	A2,  AO, INC2
kusano 2b45e8
	LFPDUX	B1,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B2, A3, f0
kusano 2b45e8
	FXCSMADD	f2,  B2, A3, f2
kusano 2b45e8
	LFPDUX	A3,  AO, INC2
kusano 2b45e8
	FXCPMADD	f1,  B2, A4, f1
kusano 2b45e8
	FXCSMADD	f3,  B2, A4, f3
kusano 2b45e8
	LFPDUX	A4,  AO, INC2
kusano 2b45e8
	LFPDUX	B2,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A5, f0
kusano 2b45e8
	FXCSMADD	f2,  B3, A5, f2
kusano 2b45e8
	LFPDUX	A5,  AO, INC2
kusano 2b45e8
	FXCPMADD	f1,  B3, A6, f1
kusano 2b45e8
	FXCSMADD	f3,  B3, A6, f3
kusano 2b45e8
	LFPDUX	A6,  AO, INC2
kusano 2b45e8
	LFPDUX	B3,  BO, INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B4, A7, f0
kusano 2b45e8
	FXCSMADD	f2,  B4, A7, f2
kusano 2b45e8
	LFPDUX	A7,  AO, INC2
kusano 2b45e8
	FXCPMADD	f1,  B4, A8, f1
kusano 2b45e8
	FXCSMADD	f3,  B4, A8, f3
kusano 2b45e8
	LFPDUX	A8,  AO, INC2
kusano 2b45e8
	LFPDUX	B4,  BO, INC2
kusano 2b45e8
	bdnz+	.L62
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L63:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f2,  B1, A1, f2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f3,  B1, A2, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B2, A3, f0
kusano 2b45e8
	FXCSMADD	f2,  B2, A3, f2
kusano 2b45e8
	FXCPMADD	f1,  B2, A4, f1
kusano 2b45e8
	FXCSMADD	f3,  B2, A4, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A5, f0
kusano 2b45e8
	FXCSMADD	f2,  B3, A5, f2
kusano 2b45e8
	FXCPMADD	f1,  B3, A6, f1
kusano 2b45e8
	FXCSMADD	f3,  B3, A6, f3
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B4, A7, f0
kusano 2b45e8
	FXCSMADD	f2,  B4, A7, f2
kusano 2b45e8
	FXCPMADD	f1,  B4, A8, f1
kusano 2b45e8
	FXCSMADD	f3,  B4, A8, f3
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L64:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L68
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L68
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	bdz-	.L67
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L66:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f2,  B1, A1, f2
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f3,  B1, A2, f3
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	bdnz+	.L66
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L67:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f2,  B1, A1, f2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f3,  B1, A2, f3
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L68:
kusano 2b45e8
	fpadd	f0, f0, f2
kusano 2b45e8
	fpadd	f1, f1, f3
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 2
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	TEMP, r0, 1 + ZBASE_SHIFT
kusano 2b45e8
	slwi	r0,   r0, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
	addi	BO,  BO, - 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDUX	f16, BO,  INC2
kusano 2b45e8
	LFPDUX	f17, BO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   4 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	LFPDUX	f16, AO,  INC2
kusano 2b45e8
	LFPDUX	f17, AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
	fpsub	f1,  f17,  f1
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f1
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f1,  f0
kusano 2b45e8
	FXCXNSMA  f0,  A2, f1,  f0
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A2, f0, f1
kusano 2b45e8
	FXCXNSMA  f1,  A2, f0, f1
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A3, f1
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1, f6
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1, f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1,  f5
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDUX	f0,  BO,  INC2
kusano 2b45e8
	STFPDUX	f1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   4 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	STFPDUX	f0,  AO,  INC2
kusano 2b45e8
	STFPDUX	f1,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
	STFDUX	f1,  CO1, INC
kusano 2b45e8
	STFSDUX	f1,  CO1, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 4 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 1 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	r0,   TEMP, 1 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, TEMP, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, r0
kusano 2b45e8
	add	BO, BO, TEMP
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 2
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L70:
kusano 2b45e8
	srawi.	I, M,  2
kusano 2b45e8
	ble	.L89
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L51:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  B,  - 2 * SIZE
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f6,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	fpmr	f7,  f0
kusano 2b45e8
	srawi.	r0,  KK,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L54
kusano 2b45e8
#else
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0,   K,  2 + ZBASE_SHIFT
kusano 2b45e8
	sub	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	slwi	r0  , KK, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, KK, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, r0
kusano 2b45e8
	add	BO, B,     TEMP
kusano 2b45e8
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
kusano 2b45e8
	fpmr	f4,  f0
kusano 2b45e8
	addi	BO,  BO,  - 2 * SIZE
kusano 2b45e8
 	fpmr	f1,  f0
kusano 2b45e8
	fpmr	f5,  f0
kusano 2b45e8
	fpmr	f2,  f0
kusano 2b45e8
	fpmr	f6,  f0
kusano 2b45e8
	fpmr	f3,  f0
kusano 2b45e8
	fpmr	f7,  f0
kusano 2b45e8
	srawi.	r0, TEMP,  2
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble	.L54
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	LFPDUX	B2,  BO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	B3,  BO,  INC2
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
	bdz-	.L53
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L52:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	LFPDUX	B4,  BO,  INC2
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B2, A5, f0
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	FXCSMADD	f4,  B2, A5, f4
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B2, A6, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B2, A6, f5
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B2, A7, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B2, A7, f6
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B2, A8, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B2, A8, f7
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A1, f0
kusano 2b45e8
	LFPDUX	B2,  BO,  INC2
kusano 2b45e8
	FXCSMADD	f4,  B3, A1, f4
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B3, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B3, A2, f5
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B3, A3, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B3, A3, f6
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B3, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B3, A4, f7
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B4, A5, f0
kusano 2b45e8
	LFPDUX	B3,  BO,  INC2
kusano 2b45e8
	FXCSMADD	f4,  B4, A5, f4
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B4, A6, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B4, A6, f5
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B4, A7, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B4, A7, f6
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B4, A8, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B4, A8, f7
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
	bdnz+	.L52
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L53:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	LFPDUX	B4,  BO,  INC2
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B2, A5, f0
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f4,  B2, A5, f4
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B2, A6, f1
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f5,  B2, A6, f5
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B2, A7, f2
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f6,  B2, A7, f6
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B2, A8, f3
kusano 2b45e8
	nop
kusano 2b45e8
	FXCSMADD	f7,  B2, A8, f7
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B3, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B3, A1, f4
kusano 2b45e8
	FXCPMADD	f1,  B3, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B3, A2, f5
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B3, A3, f2
kusano 2b45e8
	FXCSMADD	f6,  B3, A3, f6
kusano 2b45e8
	FXCPMADD	f3,  B3, A4, f3
kusano 2b45e8
	FXCSMADD	f7,  B3, A4, f7
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f0,  B4, A5, f0
kusano 2b45e8
	FXCSMADD	f4,  B4, A5, f4
kusano 2b45e8
	FXCPMADD	f1,  B4, A6, f1
kusano 2b45e8
	FXCSMADD	f5,  B4, A6, f5
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B4, A7, f2
kusano 2b45e8
	FXCSMADD	f6,  B4, A7, f6
kusano 2b45e8
	FXCPMADD	f3,  B4, A8, f3
kusano 2b45e8
	FXCSMADD	f7,  B4, A8, f7
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L54:
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	andi.	r0,  KK,  3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L58
kusano 2b45e8
#else
kusano 2b45e8
	andi.	r0, TEMP, 3
kusano 2b45e8
	mtspr	CTR, r0
kusano 2b45e8
	ble+	.L58
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
	bdz-	.L57
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L56:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
	LFPDUX	B1,  BO,  INC2
kusano 2b45e8
	bdnz+	.L56
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L57:
kusano 2b45e8
	FXCPMADD	f0,  B1, A1, f0
kusano 2b45e8
	FXCSMADD	f4,  B1, A1, f4
kusano 2b45e8
	FXCPMADD	f1,  B1, A2, f1
kusano 2b45e8
	FXCSMADD	f5,  B1, A2, f5
kusano 2b45e8
kusano 2b45e8
	FXCPMADD	f2,  B1, A3, f2
kusano 2b45e8
	FXCSMADD	f6,  B1, A3, f6
kusano 2b45e8
	FXCPMADD	f3,  B1, A4, f3
kusano 2b45e8
	FXCSMADD	f7,  B1, A4, f7
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L58:
kusano 2b45e8
	fpadd	f0,  f0,  f4
kusano 2b45e8
	fpadd	f1,  f1,  f5
kusano 2b45e8
	fpadd	f2,  f2,  f6
kusano 2b45e8
	fpadd	f3,  f3,  f7
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(RT)
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	r0, KK, 4
kusano 2b45e8
#else
kusano 2b45e8
	subi	r0, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
	slwi	TEMP, r0, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	r0,   r0, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AORIG, TEMP
kusano 2b45e8
	add	BO, B,     r0
kusano 2b45e8
	addi	BO,  BO, - 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	LFPDUX	f16, BO,  INC2
kusano 2b45e8
	LFPDUX	f17, BO,  INC2
kusano 2b45e8
	LFPDUX	f18, BO,  INC2
kusano 2b45e8
	LFPDUX	f19, BO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	LFPDUX	f16, AO,  INC2
kusano 2b45e8
	LFPDUX	f17, AO,  INC2
kusano 2b45e8
	LFPDUX	f18, AO,  INC2
kusano 2b45e8
	LFPDUX	f19, AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	fpsub	f0,  f16,  f0
kusano 2b45e8
	fpsub	f1,  f17,  f1
kusano 2b45e8
	fpsub	f2,  f18,  f2
kusano 2b45e8
	fpsub	f3,  f19,  f3
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
	LFPDUX	A9,  AO,  INC2
kusano 2b45e8
	LFPDUX	A10, AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  32 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A10, f3
kusano 2b45e8
	FXCXNPMA  f3,  A10, f3,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A9, f3,  f2
kusano 2b45e8
	FXCXNSMA  f2,  A9, f3,  f2
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A8, f3,  f1
kusano 2b45e8
	FXCXNSMA  f1,  A8, f3,  f1
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A7, f3,  f0
kusano 2b45e8
	FXCXNSMA  f0,  A7, f3,  f0
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A6, f2
kusano 2b45e8
	FXCXNPMA  f2,  A6, f2,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A5, f2,  f1
kusano 2b45e8
	FXCXNSMA  f1,  A5, f2,  f1
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A4, f2,  f0
kusano 2b45e8
	FXCXNSMA  f0,  A4, f2,  f0
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A3, f1
kusano 2b45e8
	FXCXNPMA  f1,  A3, f1,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f0,  A2, f1,  f0
kusano 2b45e8
	FXCXNSMA  f0,  A2, f1,  f0
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	LFPDUX	A1,  AO,  INC2
kusano 2b45e8
	LFPDUX	A2,  AO,  INC2
kusano 2b45e8
	LFPDUX	A3,  AO,  INC2
kusano 2b45e8
	LFPDUX	A4,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	LFPDUX	A5,  AO,  INC2
kusano 2b45e8
	LFPDUX	A6,  AO,  INC2
kusano 2b45e8
	LFPDUX	A7,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	LFPDUX	A8,  AO,  INC2
kusano 2b45e8
	LFPDUX	A9,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	add	AO,  AO,  INC2
kusano 2b45e8
	LFPDUX	A10, AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,  32 * SIZE
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f1,  A2, f0, f1
kusano 2b45e8
	FXCXNSMA  f1,  A2, f0, f1
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A3, f0, f2
kusano 2b45e8
	FXCXNSMA  f2,  A3, f0, f2
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A4, f0, f3
kusano 2b45e8
	FXCXNSMA  f3,  A4, f0, f3
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A5, f1
kusano 2b45e8
	FXCXNPMA  f1,  A5, f1, f6
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f2,  A6, f1, f2
kusano 2b45e8
	FXCXNSMA  f2,  A6, f1, f2
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A7, f1, f3
kusano 2b45e8
	FXCXNSMA  f3,  A7, f1, f3
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A8, f2
kusano 2b45e8
	FXCXNPMA  f2,  A8, f2,  f4
kusano 2b45e8
kusano 2b45e8
	fxcpnmsub f3,  A9, f2,  f3
kusano 2b45e8
	FXCXNSMA  f3,  A9, f2,  f3
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f6,  A10, f3
kusano 2b45e8
	FXCXNPMA  f3,  A10, f3,  f6
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
	fxpmul	  f6,  A1, f2
kusano 2b45e8
	fxpmul	  f7,  A1, f3
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0, f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1, f5
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2, f6
kusano 2b45e8
	FXCXNPMA  f3,  A1, f3, f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	LFPDX	A1,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	fxpmul	  f4,  A1, f0
kusano 2b45e8
	fxpmul	  f5,  A1, f1
kusano 2b45e8
	fxpmul	  f6,  A1, f2
kusano 2b45e8
	fxpmul	  f7,  A1, f3
kusano 2b45e8
kusano 2b45e8
	FXCXNPMA  f0,  A1, f0,  f4
kusano 2b45e8
	FXCXNPMA  f1,  A1, f1,  f5
kusano 2b45e8
	FXCXNPMA  f2,  A1, f2,  f6
kusano 2b45e8
	FXCXNPMA  f3,  A1, f3,  f7
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LN) || defined(LT)
kusano 2b45e8
	STFPDUX	f0,  BO,  INC2
kusano 2b45e8
	STFPDUX	f1,  BO,  INC2
kusano 2b45e8
	STFPDUX	f2,  BO,  INC2
kusano 2b45e8
	STFPDUX	f3,  BO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	BO,  BO,   8 * SIZE
kusano 2b45e8
#else
kusano 2b45e8
	STFPDUX	f0,  AO,  INC2
kusano 2b45e8
	STFPDUX	f1,  AO,  INC2
kusano 2b45e8
	STFPDUX	f2,  AO,  INC2
kusano 2b45e8
	STFPDUX	f3,  AO,  INC2
kusano 2b45e8
kusano 2b45e8
	subi	AO,  AO,   8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	STFDUX	f0,  CO1, INC
kusano 2b45e8
	STFSDUX	f0,  CO1, INC
kusano 2b45e8
	STFDUX	f1,  CO1, INC
kusano 2b45e8
	STFSDUX	f1,  CO1, INC
kusano 2b45e8
	STFDUX	f2,  CO1, INC
kusano 2b45e8
	STFSDUX	f2,  CO1, INC
kusano 2b45e8
	STFDUX	f3,  CO1, INC
kusano 2b45e8
	STFSDUX	f3,  CO1, INC
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	CO1, CO1, 8 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	slwi	r0, K, 2 + ZBASE_SHIFT
kusano 2b45e8
	add	AORIG, AORIG, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	sub	TEMP, K, KK
kusano 2b45e8
	slwi	r0,   TEMP, 2 + ZBASE_SHIFT
kusano 2b45e8
	slwi	TEMP, TEMP, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	AO, AO, r0
kusano 2b45e8
	add	BO, BO, TEMP
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LT
kusano 2b45e8
	addi	KK, KK, 4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	subi	KK, KK, 4
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
	addic.	I, I, -1
kusano 2b45e8
	li	r0, FZERO
kusano 2b45e8
kusano 2b45e8
	lfpsx	f0, SP, r0
kusano 2b45e8
	bgt+	.L51
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L89:
kusano 2b45e8
#ifdef LN
kusano 2b45e8
	slwi	r0, K, 0 + ZBASE_SHIFT
kusano 2b45e8
	add	B, B, r0
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#if defined(LT) || defined(RN)
kusano 2b45e8
	addi	B,  BO, 2 * SIZE
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RN
kusano 2b45e8
	addi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
kusano 2b45e8
#ifdef RT
kusano 2b45e8
	subi	KK, KK, 1
kusano 2b45e8
#endif
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
.L999:
kusano 2b45e8
	addi	SP, SP, 20
kusano 2b45e8
kusano 2b45e8
	lwzu	r14,   4(SP)
kusano 2b45e8
	lwzu	r15,   4(SP)
kusano 2b45e8
kusano 2b45e8
	lwzu	r16,   4(SP)
kusano 2b45e8
	lwzu	r17,   4(SP)
kusano 2b45e8
	lwzu	r18,   4(SP)
kusano 2b45e8
	lwzu	r19,   4(SP)
kusano 2b45e8
kusano 2b45e8
	lwzu	r20,   4(SP)
kusano 2b45e8
	lwzu	r21,   4(SP)
kusano 2b45e8
	lwzu	r22,   4(SP)
kusano 2b45e8
	lwzu	r23,   4(SP)
kusano 2b45e8
kusano 2b45e8
	lwzu	r24,   4(SP)
kusano 2b45e8
	lwzu	r25,   4(SP)
kusano 2b45e8
	lwzu	r26,   4(SP)
kusano 2b45e8
	lwzu	r27,   4(SP)
kusano 2b45e8
kusano 2b45e8
	lwzu	r28,   4(SP)
kusano 2b45e8
	lwzu	r29,   4(SP)
kusano 2b45e8
	lwzu	r30,   4(SP)
kusano 2b45e8
	lwzu	r31,   4(SP)
kusano 2b45e8
kusano 2b45e8
	subi	SP, SP, 12
kusano 2b45e8
	li	r0, 16
kusano 2b45e8
kusano 2b45e8
	lfpdux	f31, SP, r0
kusano 2b45e8
	lfpdux	f30, SP, r0
kusano 2b45e8
	lfpdux	f29, SP, r0
kusano 2b45e8
	lfpdux	f28, SP, r0
kusano 2b45e8
	lfpdux	f27, SP, r0
kusano 2b45e8
	lfpdux	f26, SP, r0
kusano 2b45e8
	lfpdux	f25, SP, r0
kusano 2b45e8
	lfpdux	f24, SP, r0
kusano 2b45e8
	lfpdux	f23, SP, r0
kusano 2b45e8
	lfpdux	f22, SP, r0
kusano 2b45e8
	lfpdux	f21, SP, r0
kusano 2b45e8
	lfpdux	f20, SP, r0
kusano 2b45e8
	lfpdux	f19, SP, r0
kusano 2b45e8
	lfpdux	f18, SP, r0
kusano 2b45e8
	lfpdux	f17, SP, r0
kusano 2b45e8
	lfpdux	f16, SP, r0
kusano 2b45e8
	lfpdux	f15, SP, r0
kusano 2b45e8
	lfpdux	f14, SP, r0
kusano 2b45e8
	addi	SP, SP, 16
kusano 2b45e8
	blr
kusano 2b45e8
	.align 4
kusano 2b45e8
kusano 2b45e8
kusano 2b45e8
	EPILOGUE
kusano 2b45e8
#endif