Skip to content

Commit af73ae6

Browse files
committed
LoongArch: Fixed issue 4728
1 parent 4e9144b commit af73ae6

File tree

3 files changed

+5
-222
lines changed

3 files changed

+5
-222
lines changed

kernel/loongarch64/scal.S

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -56,80 +56,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5656
MTC a1, $r0
5757
slli.d INCX, INCX, BASE_SHIFT
5858
bge $r0, N, .L999
59-
CMPEQ $fcc0, ALPHA, a1
60-
bceqz $fcc0, .L50
61-
srai.d I, N, 3
62-
bne INCX, TEMP, .L20
63-
bge $r0, I, .L15
64-
.align 3
65-
66-
.L12:
67-
ST a1, X, 0 * SIZE
68-
ST a1, X, 1 * SIZE
69-
ST a1, X, 2 * SIZE
70-
ST a1, X, 3 * SIZE
71-
ST a1, X, 4 * SIZE
72-
ST a1, X, 5 * SIZE
73-
ST a1, X, 6 * SIZE
74-
ST a1, X, 7 * SIZE
75-
addi.w I, I, -1
76-
addi.d X, X, 8 * SIZE
77-
blt $r0, I, .L12
78-
.align 3
79-
80-
.L15:
81-
andi I, N, 7
82-
bge $r0, I, .L999
83-
.align 3
84-
.L16:
85-
ST a1, X, 0 * SIZE
86-
addi.d I, I, -1
87-
addi.d X, X, SIZE
88-
blt $r0, I, .L16
89-
move $r4, $r17
90-
fmov.d $f0, $f22
91-
jirl $r0, $r1, 0x0
92-
.align 3
93-
94-
.L20:
95-
srai.d I, N, 3
96-
bge $r0, I, .L25
97-
.align 3
98-
99-
.L22:
100-
ST a1, X, 0 * SIZE
101-
add.d X, X, INCX
102-
ST a1, X, 0 * SIZE
103-
add.d X, X, INCX
104-
ST a1, X, 0 * SIZE
105-
add.d X, X, INCX
106-
ST a1, X, 0 * SIZE
107-
add.d X, X, INCX
108-
ST a1, X, 0 * SIZE
109-
add.d X, X, INCX
110-
ST a1, X, 0 * SIZE
111-
add.d X, X, INCX
112-
ST a1, X, 0 * SIZE
113-
add.d X, X, INCX
114-
ST a1, X, 0 * SIZE
115-
addi.d I, I, -1
116-
add.d X, X, INCX
117-
blt $r0, I, .L22
118-
.align 3
119-
120-
.L25:
121-
andi I, N, 7
122-
bge $r0, I, .L999
123-
.align 3
124-
.L26:
125-
addi.d I, I, -1
126-
ST a1, X, 0 * SIZE
127-
add.d X, X, INCX
128-
blt $r0, I, .L26
129-
move $r4, $r17
130-
fmov.d $f0, $f22
131-
jirl $r0, $r1, 0x0
132-
.align 3
13359

13460
.L50:
13561
srai.d I, N, 3

kernel/loongarch64/scal_lasx.S

Lines changed: 3 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5858
FFINT a2, a2
5959
slli.d TEMP, TEMP, BASE_SHIFT
6060
slli.d INCX, INCX, BASE_SHIFT
61-
CMPEQ $fcc0, ALPHA, a1
62-
bcnez $fcc0, .L20 //ALPHA==0
6361
CMPEQ $fcc0, ALPHA, a2
6462
bcnez $fcc0, .L999 //ALPHA==1 return
63+
6564
srai.d I, N, 3
66-
beq INCX, TEMP, .L30 //ALPHA!=0|1 and INCX==1
65+
beq INCX, TEMP, .L30 //ALPHA!=1 and INCX==1
6766
MTG TEMP, ALPHA
6867
#ifdef DOUBLE
6968
xvreplgr2vr.d VALPHA, TEMP
@@ -73,7 +72,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7372
move XX, X
7473
.align 3
7574

76-
.L10: //ALPHA!=0|1 and INCX!=1
75+
.L10: //ALPHA!=1 and INCX!=1
7776
bge $r0, I, .L32
7877
.align 3
7978
.L11:
@@ -166,74 +165,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
166165
blt $r0, I, .L11
167166
b .L32
168167
.align 3
169-
170-
.L20:
171-
srai.d I, N, 3
172-
beq INCX, TEMP, .L24
173-
bge $r0, I, .L22
174-
.align 3
175-
176-
.L21:
177-
ST a1, X, 0
178-
add.d X, X, INCX
179-
ST a1, X, 0
180-
add.d X, X, INCX
181-
ST a1, X, 0
182-
add.d X, X, INCX
183-
ST a1, X, 0
184-
add.d X, X, INCX
185-
ST a1, X, 0
186-
add.d X, X, INCX
187-
ST a1, X, 0
188-
add.d X, X, INCX
189-
ST a1, X, 0
190-
add.d X, X, INCX
191-
ST a1, X, 0
192-
add.d X, X, INCX
193-
addi.d I, I, -1
194-
blt $r0, I, .L21
195-
.align 3
196-
197-
.L22:
198-
andi I, N, 7
199-
bge $r0, I, .L999
200-
.align 3
201-
202-
.L23:
203-
ST a1, X, 0 * SIZE
204-
addi.d I, I, -1
205-
add.d X, X, INCX
206-
blt $r0, I, .L23
207-
jirl $r0, $r1, 0
208-
.align 3
209-
210-
.L24:
211-
bge $r0, I, .L26 /*N<8 INCX==1*/
212-
.align 3
213-
.L25:
214-
xvxor.v VX0, VX0, VX0
215-
xvst VX0, X, 0 * SIZE
216-
#ifdef DOUBLE
217-
xvst VX0, X, 4 * SIZE
218-
#endif
219-
addi.d I, I, -1
220-
addi.d X, X, 8 * SIZE
221-
blt $r0, I, .L25
222-
.align 3
223-
224-
.L26:
225-
andi I, N, 7
226-
bge $r0, I, .L999
227-
.align 3
228-
229-
.L27:
230-
ST a1, X, 0 * SIZE
231-
addi.d I, I, -1
232-
addi.d X, X, SIZE
233-
blt $r0, I, .L27
234-
jirl $r0, $r1, 0
235-
.align 3
236-
237168
.L30:
238169
bge $r0, I, .L32/*N<8 INCX==1*/
239170
MTG TEMP, ALPHA

kernel/loongarch64/scal_lsx.S

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5858
FFINT a2, a2
5959
slli.d TEMP, TEMP, BASE_SHIFT
6060
slli.d INCX, INCX, BASE_SHIFT
61-
CMPEQ $fcc0, ALPHA, a1
62-
bcnez $fcc0, .L20 //ALPHA==0
6361
CMPEQ $fcc0, ALPHA, a2
6462
bcnez $fcc0, .L999 //ALPHA==1 return
6563
srai.d I, N, 3
66-
beq INCX, TEMP, .L30 //ALPHA!=0|1 and INCX==1
64+
beq INCX, TEMP, .L30 //ALPHA!=1 and INCX==1
6765
MTG TEMP, ALPHA
6866
#ifdef DOUBLE
6967
vreplgr2vr.d VALPHA, TEMP
@@ -73,7 +71,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7371
move XX, X
7472
.align 3
7573

76-
.L10: //ALPHA!=0|1 and INCX!=1
74+
.L10: //ALPHA!=1 and INCX!=1
7775
bge $r0, I, .L32
7876
.align 3
7977

@@ -171,78 +169,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
171169
b .L32
172170
.align 3
173171

174-
.L20:
175-
srai.d I, N, 3
176-
beq INCX, TEMP, .L24
177-
bge $r0, I, .L22
178-
.align 3
179-
180-
.L21:
181-
ST a1, X, 0
182-
add.d X, X, INCX
183-
ST a1, X, 0
184-
add.d X, X, INCX
185-
ST a1, X, 0
186-
add.d X, X, INCX
187-
ST a1, X, 0
188-
add.d X, X, INCX
189-
ST a1, X, 0
190-
add.d X, X, INCX
191-
ST a1, X, 0
192-
add.d X, X, INCX
193-
ST a1, X, 0
194-
add.d X, X, INCX
195-
ST a1, X, 0
196-
add.d X, X, INCX
197-
addi.d I, I, -1
198-
blt $r0, I, .L21
199-
.align 3
200-
201-
.L22:
202-
andi I, N, 7
203-
bge $r0, I, .L999
204-
.align 3
205-
206-
.L23:
207-
ST a1, X, 0 * SIZE
208-
addi.d I, I, -1
209-
add.d X, X, INCX
210-
blt $r0, I, .L23
211-
jirl $r0, $r1, 0
212-
.align 3
213-
214-
.L24:
215-
bge $r0, I, .L26 /*N<8 INCX==1*/
216-
.align 3
217-
218-
.L25:
219-
vxor.v VX0, VX0, VX0
220-
vst VX0, X, 0 * SIZE
221-
#ifdef DOUBLE
222-
vst VX0, X, 2 * SIZE
223-
vst VX0, X, 4 * SIZE
224-
vst VX0, X, 6 * SIZE
225-
#else
226-
vst VX0, X, 4 * SIZE
227-
#endif
228-
addi.d I, I, -1
229-
addi.d X, X, 8 * SIZE
230-
blt $r0, I, .L25
231-
.align 3
232-
233-
.L26:
234-
andi I, N, 7
235-
bge $r0, I, .L999
236-
.align 3
237-
238-
.L27:
239-
ST a1, X, 0 * SIZE
240-
addi.d I, I, -1
241-
addi.d X, X, SIZE
242-
blt $r0, I, .L27
243-
jirl $r0, $r1, 0
244-
.align 3
245-
246172
.L30:
247173
bge $r0, I, .L32/*N<8 INCX==1*/
248174
MTG TEMP, ALPHA

0 commit comments

Comments
 (0)