Skip to content

Commit 79cb121

Browse files
authored
Merge pull request #4563 from XiWeiGu/loongarch_fix_lasx
Loongarch: Fixed LASX opt
2 parents 66bde62 + 60e251a commit 79cb121

File tree

9 files changed

+205
-59
lines changed

9 files changed

+205
-59
lines changed

kernel/loongarch64/amin_lasx.S

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
160160
xvinsgr2vr.d VX1, t2, 1
161161
xvinsgr2vr.d VX1, t3, 2
162162
xvinsgr2vr.d VX1, t4, 3
163-
xvfmaxa.d VM1, VX0, VX1
164-
xvfmaxa.d VM0, VM0, VM1
163+
xvfmina.d VM1, VX0, VX1
164+
xvfmina.d VM0, VM0, VM1
165165
#else
166166
ld.w t1, X, 0
167167
add.d X, X, INCX
@@ -187,7 +187,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
187187
xvinsgr2vr.w VM1, t2, 5
188188
xvinsgr2vr.w VM1, t3, 6
189189
xvinsgr2vr.w VM1, t4, 7
190-
xvfmaxa.s VM0, VM0, VM1
190+
xvfmina.s VM0, VM0, VM1
191191
#endif
192192
addi.d I, I, -1
193193
blt $r0, I, .L21

kernel/loongarch64/axpby_lasx.S

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
139139
xvst VX1, Y, 4 * SIZE
140140
#else
141141
xvfmul.s VX0, VX0, VXA
142-
addi.d I, I, -1
143142
xvst VX0, Y, 0 * SIZE
144143
#endif
144+
addi.d I, I, -1
145145
addi.d X, X, 8 * SIZE
146146
addi.d Y, Y, 8 * SIZE
147147
blt $r0, I, .L112
@@ -288,6 +288,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
288288
addi.d X, X, 8 * SIZE
289289
addi.d I, I, -1
290290
blt $r0, I, .L121
291+
move Y, YY
291292
b .L997
292293
.align 3
293294

@@ -334,6 +335,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
334335
add.d YY, YY, INCY
335336
addi.d X, X, 8 * SIZE
336337
blt $r0, I, .L122
338+
move Y, YY
337339
b .L997
338340
.align 3
339341

@@ -425,6 +427,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
425427
add.d YY, YY, INCY
426428
addi.d I, I, -1
427429
blt $r0, I, .L123
430+
move Y, YY
428431
b .L997
429432
.align 3
430433

@@ -465,6 +468,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
465468
add.d YY, YY, INCY
466469
addi.d I, I, -1
467470
blt $r0, I, .L124
471+
move Y, YY
468472
b .L997
469473
.align 3
470474

@@ -803,6 +807,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
803807
#endif
804808
add.d YY, YY, INCY
805809
blt $r0, I, .L221
810+
move Y, YY
806811
b .L997
807812
.align 3
808813

@@ -895,6 +900,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
895900
#endif
896901
add.d YY, YY, INCY
897902
blt $r0, I, .L222
903+
move Y, YY
898904
b .L997
899905
.align 3
900906

@@ -987,6 +993,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
987993
#endif
988994
add.d YY, YY, INCY
989995
blt $r0, I, .L223
996+
move Y, YY
990997
b .L997
991998
.align 3
992999

@@ -1027,6 +1034,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10271034
add.d YY, YY, INCY
10281035
addi.d I, I, -1
10291036
blt $r0, I, .L224
1037+
move Y, YY
10301038
b .L997
10311039
.align 3
10321040

kernel/loongarch64/camax_lasx.S

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,27 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
107107
#ifdef DOUBLE
108108
xvpickve.d x1, VM0, 0
109109
xvpickve.d x2, VM0, 1
110-
XVFMAX VM0, x1, x2
110+
XVFMAX VX0, x1, x2
111+
xvpickve.d x1, VM0, 2
112+
xvpickve.d x2, VM0, 3
113+
XVFMAX VX1, x1, x2
114+
XVFMAX VM0, VX0, VX1
111115
#else
112116
xvpickve.w x1, VM0, 0
113117
xvpickve.w x2, VM0, 1
114118
xvpickve.w x3, VM0, 2
115119
xvpickve.w x4, VM0, 3
120+
XVFMAX VX0, x1, x2
121+
XVFMAX VX1, x3, x4
122+
XVFMAX VX0, VX0, VX1
123+
xvpickve.w x1, VM0, 4
124+
xvpickve.w x2, VM0, 5
125+
xvpickve.w x3, VM0, 6
126+
xvpickve.w x4, VM0, 7
116127
XVFMAX VM0, x1, x2
117128
XVFMAX VM1, x3, x4
118129
XVFMAX VM0, VM0, VM1
130+
XVFMAX VM0, VM0, VX0
119131
#endif
120132
b .L23
121133
.align 3
@@ -150,7 +162,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
150162
FABS t4, t4
151163
ADD t1, t1, t2
152164
ADD t3, t3, t4
153-
FMAX s1, t1, t3
165+
FMAX s2, t1, t3
154166
LD t1, X, 0 * SIZE
155167
LD t2, X, 1 * SIZE
156168
add.d X, X, INCX
@@ -178,13 +190,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
178190
ADD t1, t1, t2
179191
ADD t3, t3, t4
180192
FMAX s4, t1, t3
193+
194+
FMAX s1, s1, s2
195+
FMAX s3, s3, s4
196+
FMAX a0, a0, s3
197+
FMAX a0, a0, s1
181198
blt $r0, I, .L21
182199
.align 3
183200

184201
.L22:
185-
FMAX s1, s1, s2
186-
FMAX s3, s3, s4
187-
FMAX s1, s1, s3
202+
MOV s1, a0
188203
.align 3
189204

190205
.L23: //N<8

kernel/loongarch64/camin_lasx.S

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,27 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
116116
#ifdef DOUBLE
117117
xvpickve.d x1, VM0, 0
118118
xvpickve.d x2, VM0, 1
119-
XVFMIN VM0, x1, x2
119+
XVFMIN VX0, x1, x2
120+
xvpickve.d x1, VM0, 2
121+
xvpickve.d x2, VM0, 3
122+
XVFMIN VX1, x1, x2
123+
XVFMIN VM0, VX0, VX1
120124
#else
121125
xvpickve.w x1, VM0, 0
122126
xvpickve.w x2, VM0, 1
123127
xvpickve.w x3, VM0, 2
124128
xvpickve.w x4, VM0, 3
129+
XVFMIN VX0, x1, x2
130+
XVFMIN VX1, x3, x4
131+
XVFMIN VX0, VX0, VX1
132+
xvpickve.w x1, VM0, 4
133+
xvpickve.w x2, VM0, 5
134+
xvpickve.w x3, VM0, 6
135+
xvpickve.w x4, VM0, 7
125136
XVFMIN VM0, x1, x2
126137
XVFMIN VM1, x3, x4
127138
XVFMIN VM0, VM0, VM1
139+
XVFMIN VM0, VM0, VX0
128140
#endif
129141
b .L23
130142
.align 3
@@ -159,7 +171,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
159171
FABS t4, t4
160172
ADD t1, t1, t2
161173
ADD t3, t3, t4
162-
FMIN s1, t1, t3
174+
FMIN s2, t1, t3
163175
LD t1, X, 0 * SIZE
164176
LD t2, X, 1 * SIZE
165177
add.d X, X, INCX
@@ -187,13 +199,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
187199
ADD t1, t1, t2
188200
ADD t3, t3, t4
189201
FMIN s4, t1, t3
202+
203+
FMIN s1, s1, s2
204+
FMIN s3, s3, s4
205+
FMIN a0, a0, s3
206+
FMIN a0, a0, s1
190207
blt $r0, I, .L21
191208
.align 3
192209

193210
.L22:
194-
FMIN s1, s1, s2
195-
FMIN s3, s3, s4
196-
FMIN s1, s1, s3
211+
MOV s1, a0
197212
.align 3
198213

199214
.L23: //N<8

kernel/loongarch64/caxpby_lasx.S

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,13 @@
176176
xvilvh.d VX3, x4, x3
177177
xvst VX2, Y, 0 * SIZE
178178
xvst VX3, Y, 4 * SIZE
179-
addi.d X, Y, 8 * SIZE
179+
addi.d Y, Y, 8 * SIZE
180180
#else
181181
xvilvl.w VX2, x4 ,x3
182182
xvilvh.w VX3, x4, x3
183183
xvst VX2, Y, 0 * SIZE
184184
xvst VX3, Y, 8 * SIZE
185-
addi.d X, Y, 16 * SIZE
185+
addi.d Y, Y, 16 * SIZE
186186
#endif
187187
addi.d I, I, -1
188188
blt $r0, I, .L113
@@ -617,6 +617,7 @@
617617
xvstelm.d x4, YY, 1 * SIZE, 3
618618
add.d YY, YY, INCY
619619
blt $r0, I, .L222
620+
move Y, YY
620621
b .L997
621622
.align 3
622623
#else
@@ -691,6 +692,7 @@
691692
xvstelm.w x4, YY, 1 * SIZE, 7
692693
add.d YY, YY, INCY
693694
blt $r0, I, .L222
695+
move Y, YY
694696
b .L997
695697
.align 3
696698
#endif
@@ -1011,7 +1013,11 @@
10111013
#endif
10121014

10131015
.L997:
1016+
#ifdef DOUBLE
1017+
andi I, N, 3
1018+
#else
10141019
andi I, N, 7
1020+
#endif
10151021
bge $r0, I, .L999
10161022
.align 3
10171023

kernel/loongarch64/csum_lasx.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
104104
xvfadd.s res1, VX0, res1
105105
xvfadd.s res1, VX1, res1
106106
xvfadd.s res1, VX2, res1
107-
xvfadd.s res1, VX2, res1
107+
xvfadd.s res1, VX3, res1
108108
#endif
109109
.align 3
110110

@@ -246,7 +246,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
246246
xvfadd.s res1, VX0, res1
247247
xvfadd.s res1, VX1, res1
248248
xvfadd.s res1, VX2, res1
249-
xvfadd.s res1, VX2, res1
249+
xvfadd.s res1, VX3, res1
250250
#endif
251251
.align 3
252252

kernel/loongarch64/iamin_lasx.S

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
144144
xvfmina.d VM1, VM0, VM1
145145
#else
146146
addi.d I, I, -1
147-
xvadd.w VI2, VI1, VINC8
147+
xvadd.w VI1, VI1, VINC8
148+
xvor.v VI2, VI1, VI1
148149
xvfmina.s VM1, VX0, VM0
149150
#endif
150151
XVCMPEQ VT0, VM0, VM1
@@ -189,6 +190,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
189190
XVFMINA VM0, VM0, VM1
190191
XVCMPEQ VT0, VM0, VM1
191192
xvbitsel.v VI0, VINC8, VINC4, VT0
193+
// $f9: x1
192194
fcmp.ceq.d $fcc0, $f15, $f9
193195
bceqz $fcc0, .L26
194196
XVCMPLT VT0, VI1, VI0
@@ -357,7 +359,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
357359
xvinsgr2vr.w VX0, t2, 5
358360
xvinsgr2vr.w VX0, t3, 6
359361
xvinsgr2vr.w VX0, t4, 7
360-
xvadd.w VI2, VI1, VINC8
362+
xvadd.w VI1, VI1, VINC8
363+
xvor.v VI2, VI1, VI1
361364
xvfmina.s VM1, VX0, VM0
362365
xvfcmp.ceq.s VT0, VM1, VM0
363366
#endif
@@ -393,7 +396,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
393396
movfr2gr.d i0, $f20
394397
.align 3
395398
#else
396-
fmov.s $f16, $f20
399+
fmov.s $f7, $f20
397400
.align 3
398401

399402
.L252:
@@ -449,9 +452,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
449452
.L292:
450453
xvfmina.s VM0, VX0, VM0
451454
xvfcmp.ceq.s VT0, VM0, VX0
452-
xvbitsel.v VI0, VI0, VI1, VT0
455+
xvbitsel.v VI0, VI0, $xr7, VT0
453456
movfr2gr.s i0, $f20
454-
455457
#endif
456458

457459
.L21: // N<8

0 commit comments

Comments
 (0)