LoongArch: Fixed issue 4728
This commit is contained in:
parent
4e9144b39f
commit
af73ae6208
|
@ -56,80 +56,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
MTC a1, $r0
|
||||
slli.d INCX, INCX, BASE_SHIFT
|
||||
bge $r0, N, .L999
|
||||
CMPEQ $fcc0, ALPHA, a1
|
||||
bceqz $fcc0, .L50
|
||||
srai.d I, N, 3
|
||||
bne INCX, TEMP, .L20
|
||||
bge $r0, I, .L15
|
||||
.align 3
|
||||
|
||||
.L12:
|
||||
ST a1, X, 0 * SIZE
|
||||
ST a1, X, 1 * SIZE
|
||||
ST a1, X, 2 * SIZE
|
||||
ST a1, X, 3 * SIZE
|
||||
ST a1, X, 4 * SIZE
|
||||
ST a1, X, 5 * SIZE
|
||||
ST a1, X, 6 * SIZE
|
||||
ST a1, X, 7 * SIZE
|
||||
addi.w I, I, -1
|
||||
addi.d X, X, 8 * SIZE
|
||||
blt $r0, I, .L12
|
||||
.align 3
|
||||
|
||||
.L15:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
.L16:
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
addi.d X, X, SIZE
|
||||
blt $r0, I, .L16
|
||||
move $r4, $r17
|
||||
fmov.d $f0, $f22
|
||||
jirl $r0, $r1, 0x0
|
||||
.align 3
|
||||
|
||||
.L20:
|
||||
srai.d I, N, 3
|
||||
bge $r0, I, .L25
|
||||
.align 3
|
||||
|
||||
.L22:
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
add.d X, X, INCX
|
||||
blt $r0, I, .L22
|
||||
.align 3
|
||||
|
||||
.L25:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
.L26:
|
||||
addi.d I, I, -1
|
||||
ST a1, X, 0 * SIZE
|
||||
add.d X, X, INCX
|
||||
blt $r0, I, .L26
|
||||
move $r4, $r17
|
||||
fmov.d $f0, $f22
|
||||
jirl $r0, $r1, 0x0
|
||||
.align 3
|
||||
|
||||
.L50:
|
||||
srai.d I, N, 3
|
||||
|
|
|
@ -58,12 +58,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
FFINT a2, a2
|
||||
slli.d TEMP, TEMP, BASE_SHIFT
|
||||
slli.d INCX, INCX, BASE_SHIFT
|
||||
CMPEQ $fcc0, ALPHA, a1
|
||||
bcnez $fcc0, .L20 //ALPHA==0
|
||||
CMPEQ $fcc0, ALPHA, a2
|
||||
bcnez $fcc0, .L999 //ALPHA==1 return
|
||||
|
||||
srai.d I, N, 3
|
||||
beq INCX, TEMP, .L30 //ALPHA!=0|1 and INCX==1
|
||||
beq INCX, TEMP, .L30 //ALPHA!=1 and INCX==1
|
||||
MTG TEMP, ALPHA
|
||||
#ifdef DOUBLE
|
||||
xvreplgr2vr.d VALPHA, TEMP
|
||||
|
@ -73,7 +72,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
move XX, X
|
||||
.align 3
|
||||
|
||||
.L10: //ALPHA!=0|1 and INCX!=1
|
||||
.L10: //ALPHA!=1 and INCX!=1
|
||||
bge $r0, I, .L32
|
||||
.align 3
|
||||
.L11:
|
||||
|
@ -166,74 +165,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
blt $r0, I, .L11
|
||||
b .L32
|
||||
.align 3
|
||||
|
||||
.L20:
|
||||
srai.d I, N, 3
|
||||
beq INCX, TEMP, .L24
|
||||
bge $r0, I, .L22
|
||||
.align 3
|
||||
|
||||
.L21:
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
addi.d I, I, -1
|
||||
blt $r0, I, .L21
|
||||
.align 3
|
||||
|
||||
.L22:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
|
||||
.L23:
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
add.d X, X, INCX
|
||||
blt $r0, I, .L23
|
||||
jirl $r0, $r1, 0
|
||||
.align 3
|
||||
|
||||
.L24:
|
||||
bge $r0, I, .L26 /*N<8 INCX==1*/
|
||||
.align 3
|
||||
.L25:
|
||||
xvxor.v VX0, VX0, VX0
|
||||
xvst VX0, X, 0 * SIZE
|
||||
#ifdef DOUBLE
|
||||
xvst VX0, X, 4 * SIZE
|
||||
#endif
|
||||
addi.d I, I, -1
|
||||
addi.d X, X, 8 * SIZE
|
||||
blt $r0, I, .L25
|
||||
.align 3
|
||||
|
||||
.L26:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
|
||||
.L27:
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
addi.d X, X, SIZE
|
||||
blt $r0, I, .L27
|
||||
jirl $r0, $r1, 0
|
||||
.align 3
|
||||
|
||||
.L30:
|
||||
bge $r0, I, .L32/*N<8 INCX==1*/
|
||||
MTG TEMP, ALPHA
|
||||
|
|
|
@ -58,12 +58,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
FFINT a2, a2
|
||||
slli.d TEMP, TEMP, BASE_SHIFT
|
||||
slli.d INCX, INCX, BASE_SHIFT
|
||||
CMPEQ $fcc0, ALPHA, a1
|
||||
bcnez $fcc0, .L20 //ALPHA==0
|
||||
CMPEQ $fcc0, ALPHA, a2
|
||||
bcnez $fcc0, .L999 //ALPHA==1 return
|
||||
srai.d I, N, 3
|
||||
beq INCX, TEMP, .L30 //ALPHA!=0|1 and INCX==1
|
||||
beq INCX, TEMP, .L30 //ALPHA!=1 and INCX==1
|
||||
MTG TEMP, ALPHA
|
||||
#ifdef DOUBLE
|
||||
vreplgr2vr.d VALPHA, TEMP
|
||||
|
@ -73,7 +71,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
move XX, X
|
||||
.align 3
|
||||
|
||||
.L10: //ALPHA!=0|1 and INCX!=1
|
||||
.L10: //ALPHA!=1 and INCX!=1
|
||||
bge $r0, I, .L32
|
||||
.align 3
|
||||
|
||||
|
@ -171,78 +169,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
b .L32
|
||||
.align 3
|
||||
|
||||
.L20:
|
||||
srai.d I, N, 3
|
||||
beq INCX, TEMP, .L24
|
||||
bge $r0, I, .L22
|
||||
.align 3
|
||||
|
||||
.L21:
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
ST a1, X, 0
|
||||
add.d X, X, INCX
|
||||
addi.d I, I, -1
|
||||
blt $r0, I, .L21
|
||||
.align 3
|
||||
|
||||
.L22:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
|
||||
.L23:
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
add.d X, X, INCX
|
||||
blt $r0, I, .L23
|
||||
jirl $r0, $r1, 0
|
||||
.align 3
|
||||
|
||||
.L24:
|
||||
bge $r0, I, .L26 /*N<8 INCX==1*/
|
||||
.align 3
|
||||
|
||||
.L25:
|
||||
vxor.v VX0, VX0, VX0
|
||||
vst VX0, X, 0 * SIZE
|
||||
#ifdef DOUBLE
|
||||
vst VX0, X, 2 * SIZE
|
||||
vst VX0, X, 4 * SIZE
|
||||
vst VX0, X, 6 * SIZE
|
||||
#else
|
||||
vst VX0, X, 4 * SIZE
|
||||
#endif
|
||||
addi.d I, I, -1
|
||||
addi.d X, X, 8 * SIZE
|
||||
blt $r0, I, .L25
|
||||
.align 3
|
||||
|
||||
.L26:
|
||||
andi I, N, 7
|
||||
bge $r0, I, .L999
|
||||
.align 3
|
||||
|
||||
.L27:
|
||||
ST a1, X, 0 * SIZE
|
||||
addi.d I, I, -1
|
||||
addi.d X, X, SIZE
|
||||
blt $r0, I, .L27
|
||||
jirl $r0, $r1, 0
|
||||
.align 3
|
||||
|
||||
.L30:
|
||||
bge $r0, I, .L32/*N<8 INCX==1*/
|
||||
MTG TEMP, ALPHA
|
||||
|
|
Loading…
Reference in New Issue