Skip to content

Commit ee310e3

Browse files
authored
Merge pull request #4208 from XiWeiGu/loongarch64_toolchain
LoongArch64: Compatible with early internal toolchain
2 parents 12d8f21 + 394a1fd commit ee310e3

File tree

4 files changed

+86
-19
lines changed

4 files changed

+86
-19
lines changed

kernel/loongarch64/dgemv_n_8_lasx.S

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,9 +386,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
386386
#if __loongarch_grlen == 64
387387
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
388388
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
389-
#else
389+
#elif __loongarch_grlen == 32
390390
GADD , w, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
391391
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
392+
#else
393+
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
394+
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
392395
#endif
393396
PTR_ALSL X, INC_X, X, 3
394397
bnez J, .L_\XW\()_N_L8
@@ -435,6 +438,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
435438
PTR_SUB K_LDA, K_LDA, M8
436439
#if __loongarch_grlen == 64
437440
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
441+
#elif __loongarch_grlen == 32
442+
GADD , w, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
438443
#else
439444
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
440445
#endif
@@ -518,9 +523,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
518523
#if __loongarch_grlen == 64
519524
GADD , d, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
520525
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
521-
#else
526+
#elif __loongarch_grlen == 32
522527
GADD , w, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
523528
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
529+
#else
530+
GADD , d, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
531+
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
524532
#endif
525533
la.local T0, .L_GAP_TABLE
526534
PTR_ALSL I, I, T0, 1

kernel/loongarch64/dgemv_t_8_lasx.S

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
263263
#if __loongarch_grlen == 64
264264
GADDI , d, PA0, PA0, 0x08, PA1, PA1, 0x08, PA2, PA2, 0x08, PA3, PA3, 0x08, \
265265
PA4, PA4, 0x08, PA5, PA5, 0x08, PA6, PA6, 0x08, PA7, PA7, 0x08
266-
#else
266+
#elif __loongarch_grlen == 32
267267
GADDI , w, PA0, PA0, 0x08, PA1, PA1, 0x08, PA2, PA2, 0x08, PA3, PA3, 0x08, \
268268
PA4, PA4, 0x08, PA5, PA5, 0x08, PA6, PA6, 0x08, PA7, PA7, 0x08
269+
#else
270+
GADDI , d, PA0, PA0, 0x08, PA1, PA1, 0x08, PA2, PA2, 0x08, PA3, PA3, 0x08, \
271+
PA4, PA4, 0x08, PA5, PA5, 0x08, PA6, PA6, 0x08, PA7, PA7, 0x08
269272
#endif
270273
GMADD f, d, $f3, $f11, $f1, $f3, $f4, $f12, $f1, $f4, $f5, $f13, $f1, $f5, $f6, $f14, $f1, $f6, \
271274
$f7, $f15, $f1, $f7, $f8, $f16, $f1, $f8, $f9, $f17, $f1, $f9, $f10, $f18, $f1, $f10
@@ -292,9 +295,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
292295
#if __loongarch_grlen == 64
293296
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
294297
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
295-
#else
298+
#elif __loongarch_grlen == 32
296299
GADD , w, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
297300
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
301+
#else
302+
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA, \
303+
PA4, PA4, K_LDA, PA5, PA5, K_LDA, PA6, PA6, K_LDA, PA7, PA7, K_LDA
298304
#endif
299305
fst.d $f11, Y, 0x00
300306
fstx.d $f12, Y, INC_Y
@@ -353,8 +359,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
353359

354360
#if __loongarch_grlen == 64
355361
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
356-
#else
362+
#elif __loongarch_grlen == 32
357363
GADD , w, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
364+
#else
365+
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA, PA2, PA2, K_LDA, PA3, PA3, K_LDA
358366
#endif
359367
fst.d $f11, Y, 0x00
360368
fstx.d $f12, Y, INC_Y
@@ -405,8 +413,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
405413

406414
#if __loongarch_grlen == 64
407415
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA
408-
#else
416+
#elif __loongarch_grlen == 32
409417
GADD , w, PA0, PA0, K_LDA, PA1, PA1, K_LDA
418+
#else
419+
GADD , d, PA0, PA0, K_LDA, PA1, PA1, K_LDA
410420
#endif
411421
fst.d $f11, Y, 0x00
412422
fstx.d $f12, Y, INC_Y
@@ -446,9 +456,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
446456
#if __loongarch_grlen == 64
447457
GADD , d, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
448458
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
449-
#else
459+
#elif __loongarch_grlen == 32
450460
GADD , w, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
451461
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
462+
#else
463+
GADD , d, PA1, PA0, LDA, PA2, PA1, LDA, PA3, PA2, LDA, PA4, PA3, LDA, \
464+
PA5, PA4, LDA, PA6, PA5, LDA, PA7, PA6, LDA
452465
#endif
453466
la.local T0, .L_GAP_TABLE
454467
PTR_ALSL I, I, T0, 1

kernel/loongarch64/loongarch64_asm.S

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939
#define PTR_SRAI srai.d
4040
#define PTR_MUL mul.d
4141
#define PTR_ALSL alsl.d
42-
#else
42+
#elif __loongarch_grlen == 32
4343
#define LA_REG int32_t
4444
#define REG_SIZE 4
4545
#define REG_LOG 2
@@ -53,18 +53,41 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5353
#define PTR_SRAI srai.w
5454
#define PTR_MUL mul.w
5555
#define PTR_ALSL alsl.w
56+
#else
57+
// If neither of the above two conditions is supported, it means this is an early
58+
// internal toolchain. To ensure maximum compatibility, the following approach is taken:
59+
#define LA_REG int64_t
60+
#define REG_SIZE 8
61+
#define REG_LOG 3
62+
#define PTR_ADDI addi.d
63+
#define PTR_ADD add.d
64+
#define PTR_SUB sub.d
65+
#define PTR_LD ld.d
66+
#define PTR_ST st.d
67+
#define PTR_SLLI slli.d
68+
#define PTR_SRLI srli.d
69+
#define PTR_SRAI srai.d
70+
#define PTR_MUL mul.d
71+
#define PTR_ALSL alsl.d
5672
#endif
5773

5874
#if __loongarch_frlen == 64
5975
#define FREG_SIZE 8
6076
#define FREG_LOG 3
6177
#define PTR_FLD fld.d
6278
#define PTR_FST fst.d
63-
#else
79+
#elif __loongarch_frlen == 32
6480
#define FREG_SIZE 4
6581
#define FREG_LOG 2
6682
#define PTR_FLD fld.s
6783
#define PTR_FST fst.s
84+
#else
85+
// If neither of the above two conditions is supported, it means this is an early
86+
// internal toolchain. To ensure maximum compatibility, the following approach is taken:
87+
#define FREG_SIZE 8
88+
#define FREG_LOG 3
89+
#define PTR_FLD fld.d
90+
#define PTR_FST fst.d
6891
#endif
6992

7093
// The max registers available to the user which

kernel/loongarch64/sgemm_kernel_16x8_lasx.S

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
335335
#if __loongarch_grlen == 64
336336
GADDI , d, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40, \
337337
C4, C4, 0x40, C5, C5, 0x40, C6, C6, 0x40, C7, C7, 0x40
338-
#else
338+
#elif __loongarch_grlen == 32
339339
GADDI , w, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40, \
340340
C4, C4, 0x40, C5, C5, 0x40, C6, C6, 0x40, C7, C7, 0x40
341+
#else
342+
GADDI , d, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40, \
343+
C4, C4, 0x40, C5, C5, 0x40, C6, C6, 0x40, C7, C7, 0x40
341344
#endif
342345
.endm
343346

@@ -445,9 +448,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
445448
#if __loongarch_grlen == 64
446449
GADDI , d, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride, \
447450
C4, C4, \stride, C5, C5, \stride, C6, C6, \stride, C7, C7, \stride
448-
#else
451+
#elif __loongarch_grlen == 32
449452
GADDI , w, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride, \
450453
C4, C4, \stride, C5, C5, \stride, C6, C6, \stride, C7, C7, \stride
454+
#else
455+
GADDI , d, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride, \
456+
C4, C4, \stride, C5, C5, \stride, C6, C6, \stride, C7, C7, \stride
451457
#endif
452458
.endm
453459

@@ -505,8 +511,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
505511
D6, C3, 0x00, D7, C3, 0x20
506512
#if __loongarch_grlen == 64
507513
GADDI , d, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40
508-
#else
514+
#elif __loongarch_grlen == 32
509515
GADDI , w, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40
516+
#else
517+
GADDI , d, C0, C0, 0x40, C1, C1, 0x40, C2, C2, 0x40, C3, C3, 0x40
510518
#endif
511519
.endm
512520

@@ -585,8 +593,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
585593
.endif
586594
#if __loongarch_grlen == 64
587595
GADDI , d, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride
588-
#else
596+
#elif __loongarch_grlen == 32
589597
GADDI , w, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride
598+
#else
599+
GADDI , d, C0, C0, \stride, C1, C1, \stride, C2, C2, \stride, C3, C3, \stride
590600
#endif
591601
.endm
592602

@@ -631,8 +641,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
631641
D2, C1, 0x00, D3, C1, 0x20
632642
#if __loongarch_grlen == 64
633643
GADDI , d, C0, C0, 0x40, C1, C1, 0x40
634-
#else
644+
#elif __loongarch_grlen == 32
635645
GADDI , w, C0, C0, 0x40, C1, C1, 0x40
646+
#else
647+
GADDI , d, C0, C0, 0x40, C1, C1, 0x40
636648
#endif
637649
.endm
638650

@@ -703,8 +715,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
703715
.endif
704716
#if __loongarch_grlen == 64
705717
GADDI , d, C0, C0, \stride, C1, C1, \stride
706-
#else
718+
#elif __loongarch_grlen == 32
707719
GADDI , w, C0, C0, \stride, C1, C1, \stride
720+
#else
721+
GADDI , d, C0, C0, \stride, C1, C1, \stride
708722
#endif
709723
.endm
710724

@@ -741,8 +755,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
741755
GST xv, , D0, C0, 0x00, D1, C0, 0x20
742756
#if __loongarch_grlen == 64
743757
GADDI , d, C0, C0, 0x40
744-
#else
758+
#elif __loongarch_grlen == 32
745759
GADDI , w, C0, C0, 0x40
760+
#else
761+
GADDI , d, C0, C0, 0x40
746762
#endif
747763
.endm
748764

@@ -813,8 +829,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
813829
.endif
814830
#if __loongarch_grlen == 64
815831
GADDI , d, C0, C0, \stride
816-
#else
832+
#elif __loongarch_grlen == 32
817833
GADDI , w, C0, C0, \stride
834+
#else
835+
GADDI , d, C0, C0, \stride
818836
#endif
819837
.endm
820838

@@ -838,9 +856,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
838856
#if __loongarch_grlen == 64
839857
GADD , d, C1, C0, T0, C2, C1, T0, C3, C2, T0, C4, C3, T0, C5, C4, T0, \
840858
C6, C5, T0, C7, C6, T0
841-
#else
859+
#elif __loongarch_grlen == 32
842860
GADD , w, C1, C0, T0, C2, C1, T0, C3, C2, T0, C4, C3, T0, C5, C4, T0, \
843861
C6, C5, T0, C7, C6, T0
862+
#else
863+
GADD , d, C1, C0, T0, C2, C1, T0, C3, C2, T0, C4, C3, T0, C5, C4, T0, \
864+
C6, C5, T0, C7, C6, T0
844865
#endif
845866
#if defined(TRMMKERNEL) && defined(LEFT)
846867
move OFF, OFFSET
@@ -1222,8 +1243,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12221243
PTR_SLLI T0, LDC, 2
12231244
#if __loongarch_grlen == 64
12241245
GADD , d, C1, C0, T0, C2, C1, T0, C3, C2, T0
1225-
#else
1246+
#elif __loongarch_grlen == 32
12261247
GADD , w, C1, C0, T0, C2, C1, T0, C3, C2, T0
1248+
#else
1249+
GADD , d, C1, C0, T0, C2, C1, T0, C3, C2, T0
12271250
#endif
12281251

12291252
#if defined(TRMMKERNEL) && defined(LEFT)

0 commit comments

Comments
 (0)