Fixed #24 drmm error on Loongson3A
This commit is contained in:
parent
9320933520
commit
5a991b7149
|
@ -164,19 +164,12 @@
|
||||||
.align 5 # BACKUP
|
.align 5 # BACKUP
|
||||||
.L0_N4: # Loop N
|
.L0_N4: # Loop N
|
||||||
ST ALPHA,152($sp) # Backup ALPHA
|
ST ALPHA,152($sp) # Backup ALPHA
|
||||||
move MCO,M # Backup M
|
|
||||||
|
|
||||||
#if defined(TRMMKERNEL)
|
move MCO,M # Backup M
|
||||||
ld OFFSET,160($sp) #
|
|
||||||
#endif
|
|
||||||
|
|
||||||
move NCO,N # Backup N
|
move NCO,N # Backup N
|
||||||
move KCO,K # Backup K
|
move KCO,K # Backup K
|
||||||
|
|
||||||
#if defined(TRMMKERNEL) && !defined(LEFT)
|
|
||||||
neg KK,OFFSET
|
|
||||||
#endif
|
|
||||||
|
|
||||||
move AO,A # Backup A_addr
|
move AO,A # Backup A_addr
|
||||||
dsra N,NCO,2 # N=NCO/2
|
dsra N,NCO,2 # N=NCO/2
|
||||||
|
|
||||||
|
@ -184,6 +177,15 @@
|
||||||
dsll SPANB,KCO,2+BASE_SHIFT # SPANB=KC*NR(4)*8Byte=KC*2^5
|
dsll SPANB,KCO,2+BASE_SHIFT # SPANB=KC*NR(4)*8Byte=KC*2^5
|
||||||
|
|
||||||
move BO,B # Backup B_addr
|
move BO,B # Backup B_addr
|
||||||
|
|
||||||
|
#if defined(TRMMKERNEL)
|
||||||
|
LDARG OFFSET,160($sp) #
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(TRMMKERNEL) && !defined(LEFT)
|
||||||
|
neg KK,OFFSET # right
|
||||||
|
#endif
|
||||||
|
|
||||||
beq N,$0,.L0_N2 # N=0,NCO<4
|
beq N,$0,.L0_N2 # N=0,NCO<4
|
||||||
dsll SPANA,KCO,1+BASE_SHIFT # SPANA = KCO*4mr*8Byte
|
dsll SPANA,KCO,1+BASE_SHIFT # SPANA = KCO*4mr*8Byte
|
||||||
|
|
||||||
|
@ -197,13 +199,13 @@
|
||||||
daddu CO3,CO2,LDC
|
daddu CO3,CO2,LDC
|
||||||
daddu PREB,BO,SPANB # PreB point next panelB
|
daddu PREB,BO,SPANB # PreB point next panelB
|
||||||
|
|
||||||
#if defined(TRMMKERNEL) && defined(LEFT)
|
|
||||||
move KK,OFFSET
|
|
||||||
#endif
|
|
||||||
|
|
||||||
daddu CO4,CO3,LDC
|
daddu CO4,CO3,LDC
|
||||||
daddu PREA,AO,SPANA
|
daddu PREA,AO,SPANA
|
||||||
|
|
||||||
|
#if defined(TRMMKERNEL) && defined(LEFT)
|
||||||
|
move KK,OFFSET # left
|
||||||
|
#endif
|
||||||
|
|
||||||
beqz M,.L14_M2
|
beqz M,.L14_M2
|
||||||
daddu C,CO4,LDC
|
daddu C,CO4,LDC
|
||||||
|
|
||||||
|
@ -212,12 +214,13 @@
|
||||||
#if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
|
#if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
|
||||||
move B,BO
|
move B,BO
|
||||||
#else
|
#else
|
||||||
dsll K,KK,2 + BASE_SHIFT
|
dsll K,KK,2 + BASE_SHIFT # KK no data part
|
||||||
dsll TEMP,KK,2 + BASE_SHIFT
|
dsll TEMP,KK,2 + BASE_SHIFT
|
||||||
|
|
||||||
daddu A,A,K
|
daddu A,A,K # move A B to data part
|
||||||
daddu B,BO,TEMP
|
daddu B,BO,TEMP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MTC $0,t11
|
MTC $0,t11
|
||||||
MOV t21,t11
|
MOV t21,t11
|
||||||
gsLQC1(R8,F1,F0,0) #a0,a1
|
gsLQC1(R8,F1,F0,0) #a0,a1
|
||||||
|
@ -676,11 +679,11 @@
|
||||||
dsll K,TEMP,2 + BASE_SHIFT
|
dsll K,TEMP,2 + BASE_SHIFT
|
||||||
dsll TEMP,TEMP,2 + BASE_SHIFT
|
dsll TEMP,TEMP,2 + BASE_SHIFT
|
||||||
|
|
||||||
daddu A,A,K
|
daddu A,A,K # mov A to the end of panel Ai
|
||||||
daddu B,B,TEMP
|
daddu B,B,TEMP # mov B to the end of panel Bj
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LEFT
|
#ifdef LEFT # right control by N loop
|
||||||
daddiu KK, KK,4
|
daddiu KK, KK,4
|
||||||
#endif
|
#endif
|
||||||
bnez M,.L10 # M!=0
|
bnez M,.L10 # M!=0
|
||||||
|
@ -1158,7 +1161,7 @@
|
||||||
dsll TEMP,TEMP, 2 + BASE_SHIFT
|
dsll TEMP,TEMP, 2 + BASE_SHIFT
|
||||||
|
|
||||||
daddu A,A,K
|
daddu A,A,K
|
||||||
daddu B,BO,TEMP
|
daddu B,B,TEMP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LEFT
|
#ifdef LEFT
|
||||||
|
@ -1883,7 +1886,7 @@
|
||||||
dsll K, KK, 2 + BASE_SHIFT
|
dsll K, KK, 2 + BASE_SHIFT
|
||||||
dsll TEMP, KK, 0 + BASE_SHIFT
|
dsll TEMP, KK, 0 + BASE_SHIFT
|
||||||
|
|
||||||
daddu AO, AO, K
|
daddu A, A, K
|
||||||
daddu B, BO, TEMP
|
daddu B, BO, TEMP
|
||||||
#endif
|
#endif
|
||||||
gsLQC1(R9,F12,F8,0)
|
gsLQC1(R9,F12,F8,0)
|
||||||
|
|
Loading…
Reference in New Issue