1
2
3
4
5 package loong64
6
7 import (
8 "cmd/internal/obj"
9 )
10
11
12
13 const (
14 NSNAME = 8
15 NSYM = 50
16 NREG = 32
17 NFREG = 32
18 NVREG = 32
19 NXREG = 32
20 )
21
22 const (
23 REG_R0 = obj.RBaseLOONG64 + iota
24 REG_R1
25 REG_R2
26 REG_R3
27 REG_R4
28 REG_R5
29 REG_R6
30 REG_R7
31 REG_R8
32 REG_R9
33 REG_R10
34 REG_R11
35 REG_R12
36 REG_R13
37 REG_R14
38 REG_R15
39 REG_R16
40 REG_R17
41 REG_R18
42 REG_R19
43 REG_R20
44 REG_R21
45 REG_R22
46 REG_R23
47 REG_R24
48 REG_R25
49 REG_R26
50 REG_R27
51 REG_R28
52 REG_R29
53 REG_R30
54 REG_R31
55
56 REG_F0
57 REG_F1
58 REG_F2
59 REG_F3
60 REG_F4
61 REG_F5
62 REG_F6
63 REG_F7
64 REG_F8
65 REG_F9
66 REG_F10
67 REG_F11
68 REG_F12
69 REG_F13
70 REG_F14
71 REG_F15
72 REG_F16
73 REG_F17
74 REG_F18
75 REG_F19
76 REG_F20
77 REG_F21
78 REG_F22
79 REG_F23
80 REG_F24
81 REG_F25
82 REG_F26
83 REG_F27
84 REG_F28
85 REG_F29
86 REG_F30
87 REG_F31
88
89 REG_FCSR0
90 REG_FCSR1
91 REG_FCSR2
92 REG_FCSR3
93 REG_FCSR4
94 REG_FCSR5
95 REG_FCSR6
96 REG_FCSR7
97 REG_FCSR8
98 REG_FCSR9
99 REG_FCSR10
100 REG_FCSR11
101 REG_FCSR12
102 REG_FCSR13
103 REG_FCSR14
104 REG_FCSR15
105 REG_FCSR16
106 REG_FCSR17
107 REG_FCSR18
108 REG_FCSR19
109 REG_FCSR20
110 REG_FCSR21
111 REG_FCSR22
112 REG_FCSR23
113 REG_FCSR24
114 REG_FCSR25
115 REG_FCSR26
116 REG_FCSR27
117 REG_FCSR28
118 REG_FCSR29
119 REG_FCSR30
120 REG_FCSR31
121
122 REG_FCC0
123 REG_FCC1
124 REG_FCC2
125 REG_FCC3
126 REG_FCC4
127 REG_FCC5
128 REG_FCC6
129 REG_FCC7
130 REG_FCC8
131 REG_FCC9
132 REG_FCC10
133 REG_FCC11
134 REG_FCC12
135 REG_FCC13
136 REG_FCC14
137 REG_FCC15
138 REG_FCC16
139 REG_FCC17
140 REG_FCC18
141 REG_FCC19
142 REG_FCC20
143 REG_FCC21
144 REG_FCC22
145 REG_FCC23
146 REG_FCC24
147 REG_FCC25
148 REG_FCC26
149 REG_FCC27
150 REG_FCC28
151 REG_FCC29
152 REG_FCC30
153 REG_FCC31
154
155
156 REG_V0
157 REG_V1
158 REG_V2
159 REG_V3
160 REG_V4
161 REG_V5
162 REG_V6
163 REG_V7
164 REG_V8
165 REG_V9
166 REG_V10
167 REG_V11
168 REG_V12
169 REG_V13
170 REG_V14
171 REG_V15
172 REG_V16
173 REG_V17
174 REG_V18
175 REG_V19
176 REG_V20
177 REG_V21
178 REG_V22
179 REG_V23
180 REG_V24
181 REG_V25
182 REG_V26
183 REG_V27
184 REG_V28
185 REG_V29
186 REG_V30
187 REG_V31
188
189
190 REG_X0
191 REG_X1
192 REG_X2
193 REG_X3
194 REG_X4
195 REG_X5
196 REG_X6
197 REG_X7
198 REG_X8
199 REG_X9
200 REG_X10
201 REG_X11
202 REG_X12
203 REG_X13
204 REG_X14
205 REG_X15
206 REG_X16
207 REG_X17
208 REG_X18
209 REG_X19
210 REG_X20
211 REG_X21
212 REG_X22
213 REG_X23
214 REG_X24
215 REG_X25
216 REG_X26
217 REG_X27
218 REG_X28
219 REG_X29
220 REG_X30
221 REG_X31
222
223 REG_SPECIAL = REG_FCSR0
224
225 REGZERO = REG_R0
226 REGLINK = REG_R1
227 REGSP = REG_R3
228 REGRT1 = REG_R20
229 REGRT2 = REG_R21
230 REGCTXT = REG_R29
231 REGG = REG_R22
232 REGTMP = REG_R30
233 FREGRET = REG_F0
234 )
235
236 var LOONG64DWARFRegisters = map[int16]int16{}
237
238 func init() {
239
240 f := func(from, to, base int16) {
241 for r := int16(from); r <= to; r++ {
242 LOONG64DWARFRegisters[r] = (r - from) + base
243 }
244 }
245 f(REG_R0, REG_R31, 0)
246 f(REG_F0, REG_F31, 32)
247
248
249 f(REG_V0, REG_V31, 32)
250 f(REG_X0, REG_X31, 32)
251 }
252
253 const (
254 BIG = 2046
255 )
256
257 const (
258
259 LABEL = 1 << 0
260 LEAF = 1 << 1
261 SYNC = 1 << 2
262 BRANCH = 1 << 3
263 )
264
265
266 const (
267
268 ARNG_32B int16 = iota
269 ARNG_16H
270 ARNG_8W
271 ARNG_4V
272 ARNG_2Q
273 ARNG_16B
274 ARNG_8H
275 ARNG_4W
276 ARNG_2V
277 ARNG_B
278 ARNG_H
279 ARNG_W
280 ARNG_V
281 ARNG_BU
282 ARNG_HU
283 ARNG_WU
284 ARNG_VU
285 )
286
287
288 const (
289 LSX int16 = iota
290 LASX
291 )
292
293
294
295
296 const (
297 REG_ARNG = obj.RBaseLOONG64 + (1 << 10) + (iota << 11)
298 REG_ELEM
299 REG_ELEM_END
300 )
301
302 const (
303 EXT_REG_SHIFT = 0
304 EXT_REG_MASK = 0x1f
305
306 EXT_TYPE_SHIFT = 5
307 EXT_TYPE_MASK = 0x1f
308
309 EXT_SIMDTYPE_SHIFT = 10
310 EXT_SIMDTYPE_MASK = 0x1
311 )
312
313 const (
314 REG_LAST = REG_ELEM_END
315 )
316
317
318 const (
319 C_NONE = iota
320 C_REG
321 C_FREG
322 C_FCSRREG
323 C_FCCREG
324 C_VREG
325 C_XREG
326 C_ARNG
327 C_ELEM
328
329 C_ZCON
330 C_U1CON
331 C_U2CON
332 C_U3CON
333 C_U4CON
334 C_U5CON
335 C_U6CON
336 C_U7CON
337 C_U8CON
338 C_S5CON
339 C_US12CON
340 C_UU12CON
341 C_S12CON
342 C_U12CON
343 C_12CON
344 C_S13CON20_0
345 C_S13CON
346 C_U13CON20_0
347 C_U13CON
348 C_13CON
349 C_U15CON
350 C_U15CON20_0
351 C_32CON20_0
352 C_32CON
353
354
355
356 C_DCON20S_0
357
358 C_DCON12_0
359
360 C_DCON32_0
361
362
363 C_DCON12_20S
364
365
366 C_DCON20S_20
367
368 C_DCON32_20
369
370
371 C_DCON12_12S
372
373
374
375 C_DCON20S_12S
376
377
378 C_DCON32_12S
379
380
381 C_DCON12_32S
382
383
384 C_DCON20S_32
385
386 C_DCON12_12U
387
388
389 C_DCON20S_12U
390
391 C_DCON32_12U
392
393 C_DCON
394
395 C_SACON
396 C_LACON
397 C_DACON
398 C_EXTADDR
399 C_BRAN
400 C_SAUTO
401 C_LAUTO
402 C_ZOREG
403 C_SOREG
404 C_LOREG
405 C_ROFF
406 C_ADDR
407 C_TLS_LE
408 C_TLS_IE
409 C_GOTADDR
410 C_TEXTSIZE
411
412 C_GOK
413 C_NCLASS
414 )
415
416 const (
417 AABSD = obj.ABaseLoong64 + obj.A_ARCHSPECIFIC + iota
418 AABSF
419 AADD
420 AADDD
421 AADDF
422 AADDU
423
424 AADDW
425 AAND
426 ABEQ
427 ABGEZ
428 ABLEZ
429 ABGTZ
430 ABLTZ
431 ABFPF
432 ABFPT
433
434 ABNE
435 ABREAK
436
437 ACMPEQD
438 ACMPEQF
439
440 ACMPGED
441 ACMPGEF
442 ACMPGTD
443 ACMPGTF
444
445 ALU12IW
446 ALU32ID
447 ALU52ID
448 APCALAU12I
449 APCADDU12I
450 AJIRL
451 ABGE
452 ABLT
453 ABLTU
454 ABGEU
455
456 ADIV
457 ADIVD
458 ADIVF
459 ADIVU
460 ADIVW
461
462 ALL
463 ALLV
464
465 ALUI
466
467 AMOVB
468 AMOVBU
469
470 AMOVD
471 AMOVDF
472 AMOVDW
473 AMOVF
474 AMOVFD
475 AMOVFW
476
477 AMOVH
478 AMOVHU
479 AMOVW
480
481 AMOVWD
482 AMOVWF
483
484 AMUL
485 AMULD
486 AMULF
487 AMULU
488 AMULH
489 AMULHU
490 AMULW
491 ANEGD
492 ANEGF
493
494 ANEGW
495 ANEGV
496
497 ANOOP
498 ANOR
499 AOR
500 AREM
501 AREMU
502
503 ARFE
504
505 ASC
506 ASCV
507
508 ASGT
509 ASGTU
510
511 ASLL
512 ASQRTD
513 ASQRTF
514 ASRA
515 ASRL
516 AROTR
517 ASUB
518 ASUBD
519 ASUBF
520
521 ASUBU
522 ASUBW
523 ADBAR
524 ASYSCALL
525
526 ATEQ
527 ATNE
528
529 AWORD
530
531 AXOR
532
533 AMASKEQZ
534 AMASKNEZ
535
536
537 AMOVV
538
539 ASLLV
540 ASRAV
541 ASRLV
542 AROTRV
543 ADIVV
544 ADIVVU
545
546 AREMV
547 AREMVU
548
549 AMULV
550 AMULVU
551 AMULHV
552 AMULHVU
553 AADDV
554 AADDVU
555 ASUBV
556 ASUBVU
557
558
559 ATRUNCFV
560 ATRUNCDV
561 ATRUNCFW
562 ATRUNCDW
563
564 AMOVWU
565 AMOVFV
566 AMOVDV
567 AMOVVF
568 AMOVVD
569
570
571 AORN
572 AANDN
573
574
575 AAMSWAPB
576 AAMSWAPH
577 AAMSWAPW
578 AAMSWAPV
579 AAMCASB
580 AAMCASH
581 AAMCASW
582 AAMCASV
583 AAMADDW
584 AAMADDV
585 AAMANDW
586 AAMANDV
587 AAMORW
588 AAMORV
589 AAMXORW
590 AAMXORV
591 AAMMAXW
592 AAMMAXV
593 AAMMINW
594 AAMMINV
595 AAMMAXWU
596 AAMMAXVU
597 AAMMINWU
598 AAMMINVU
599 AAMSWAPDBB
600 AAMSWAPDBH
601 AAMSWAPDBW
602 AAMSWAPDBV
603 AAMCASDBB
604 AAMCASDBH
605 AAMCASDBW
606 AAMCASDBV
607 AAMADDDBW
608 AAMADDDBV
609 AAMANDDBW
610 AAMANDDBV
611 AAMORDBW
612 AAMORDBV
613 AAMXORDBW
614 AAMXORDBV
615 AAMMAXDBW
616 AAMMAXDBV
617 AAMMINDBW
618 AAMMINDBV
619 AAMMAXDBWU
620 AAMMAXDBVU
621 AAMMINDBWU
622 AAMMINDBVU
623
624
625 AEXTWB
626 AEXTWH
627
628
629 ACLOW
630 ACLOV
631 ACLZW
632 ACLZV
633 ACTOW
634 ACTOV
635 ACTZW
636 ACTZV
637
638
639 AREVBV
640 AREVB2W
641 AREVB4H
642 AREVB2H
643
644
645 AREVH2W
646 AREVHV
647
648
649 ABITREV4B
650 ABITREV8B
651
652
653 ABITREVW
654 ABITREVV
655
656
657 ABSTRINSW
658 ABSTRINSV
659
660
661 ABSTRPICKW
662 ABSTRPICKV
663
664
665 APRELD
666 APRELDX
667
668
669 ACRCWBW
670 ACRCWHW
671 ACRCWWW
672 ACRCWVW
673 ACRCCWBW
674 ACRCCWHW
675 ACRCCWWW
676 ACRCCWVW
677
678
679 ARDTIMELW
680 ARDTIMEHW
681 ARDTIMED
682 ACPUCFG
683
684
685 AFMADDF
686 AFMADDD
687 AFMSUBF
688 AFMSUBD
689 AFNMADDF
690 AFNMADDD
691 AFNMSUBF
692 AFNMSUBD
693
694
695 AFMINF
696 AFMIND
697 AFMAXF
698 AFMAXD
699
700
701 AFMAXAF
702 AFMAXAD
703 AFMINAF
704 AFMINAD
705
706
707 AFCOPYSGF
708 AFCOPYSGD
709 AFSCALEBF
710 AFSCALEBD
711 AFLOGBF
712 AFLOGBD
713
714
715 AFCLASSF
716 AFCLASSD
717
718
719 AFFINTFW
720 AFFINTFV
721 AFFINTDW
722 AFFINTDV
723 AFTINTWF
724 AFTINTWD
725 AFTINTVF
726 AFTINTVD
727
728
729 AFTINTRPWF
730 AFTINTRPWD
731 AFTINTRPVF
732 AFTINTRPVD
733 AFTINTRMWF
734 AFTINTRMWD
735 AFTINTRMVF
736 AFTINTRMVD
737 AFTINTRZWF
738 AFTINTRZWD
739 AFTINTRZVF
740 AFTINTRZVD
741 AFTINTRNEWF
742 AFTINTRNEWD
743 AFTINTRNEVF
744 AFTINTRNEVD
745
746
747 AVMOVQ
748 AXVMOVQ
749
750
751 AVADDB
752 AVADDH
753 AVADDW
754 AVADDV
755 AVADDQ
756 AXVADDB
757 AXVADDH
758 AXVADDW
759 AXVADDV
760 AXVADDQ
761 AVSUBB
762 AVSUBH
763 AVSUBW
764 AVSUBV
765 AVSUBQ
766 AXVSUBB
767 AXVSUBH
768 AXVSUBW
769 AXVSUBV
770 AXVSUBQ
771 AVADDBU
772 AVADDHU
773 AVADDWU
774 AVADDVU
775 AVSUBBU
776 AVSUBHU
777 AVSUBWU
778 AVSUBVU
779 AXVADDBU
780 AXVADDHU
781 AXVADDWU
782 AXVADDVU
783 AXVSUBBU
784 AXVSUBHU
785 AXVSUBWU
786 AXVSUBVU
787
788
789 AVANDB
790 AVORB
791 AVXORB
792 AVNORB
793 AXVANDB
794 AXVORB
795 AXVXORB
796 AXVNORB
797 AVANDV
798 AVORV
799 AVXORV
800 AVNORV
801 AVANDNV
802 AVORNV
803 AXVANDV
804 AXVORV
805 AXVXORV
806 AXVNORV
807 AXVANDNV
808 AXVORNV
809
810 AVPCNTB
811 AVPCNTH
812 AVPCNTW
813 AVPCNTV
814 AXVPCNTB
815 AXVPCNTH
816 AXVPCNTW
817 AXVPCNTV
818
819
820 AVSEQB
821 AXVSEQB
822 AVSEQH
823 AXVSEQH
824 AVSEQW
825 AXVSEQW
826 AVSEQV
827 AXVSEQV
828
829
830 AVDIVB
831 AVDIVH
832 AVDIVW
833 AVDIVV
834 AVDIVBU
835 AVDIVHU
836 AVDIVWU
837 AVDIVVU
838 AVMODB
839 AVMODH
840 AVMODW
841 AVMODV
842 AVMODBU
843 AVMODHU
844 AVMODWU
845 AVMODVU
846 AXVDIVB
847 AXVDIVH
848 AXVDIVW
849 AXVDIVV
850 AXVDIVBU
851 AXVDIVHU
852 AXVDIVWU
853 AXVDIVVU
854 AXVMODB
855 AXVMODH
856 AXVMODW
857 AXVMODV
858 AXVMODBU
859 AXVMODHU
860 AXVMODWU
861 AXVMODVU
862
863
864 AVSLLB
865 AVSLLH
866 AVSLLW
867 AVSLLV
868 AVSRLB
869 AVSRLH
870 AVSRLW
871 AVSRLV
872 AVSRAB
873 AVSRAH
874 AVSRAW
875 AVSRAV
876 AVROTRB
877 AVROTRH
878 AVROTRW
879 AVROTRV
880 AXVSLLB
881 AXVSLLH
882 AXVSLLW
883 AXVSLLV
884 AXVSRLB
885 AXVSRLH
886 AXVSRLW
887 AXVSRLV
888 AXVSRAB
889 AXVSRAH
890 AXVSRAW
891 AXVSRAV
892 AXVROTRB
893 AXVROTRH
894 AXVROTRW
895 AXVROTRV
896
897
898 AVILVLB
899 AVILVLH
900 AVILVLW
901 AVILVLV
902 AVILVHB
903 AVILVHH
904 AVILVHW
905 AVILVHV
906 AXVILVLB
907 AXVILVLH
908 AXVILVLW
909 AXVILVLV
910 AXVILVHB
911 AXVILVHH
912 AXVILVHW
913 AXVILVHV
914
915
916 AVMULB
917 AVMULH
918 AVMULW
919 AVMULV
920 AVMUHB
921 AVMUHH
922 AVMUHW
923 AVMUHV
924 AVMUHBU
925 AVMUHHU
926 AVMUHWU
927 AVMUHVU
928 AXVMULB
929 AXVMULH
930 AXVMULW
931 AXVMULV
932 AXVMUHB
933 AXVMUHH
934 AXVMUHW
935 AXVMUHV
936 AXVMUHBU
937 AXVMUHHU
938 AXVMUHWU
939 AXVMUHVU
940
941
942 AVFSQRTF
943 AVFSQRTD
944 AVFRECIPF
945 AVFRECIPD
946 AVFRSQRTF
947 AVFRSQRTD
948 AXVFSQRTF
949 AXVFSQRTD
950 AXVFRECIPF
951 AXVFRECIPD
952 AXVFRSQRTF
953 AXVFRSQRTD
954
955 AVADDF
956 AVADDD
957 AVSUBF
958 AVSUBD
959 AVMULF
960 AVMULD
961 AVDIVF
962 AVDIVD
963 AXVADDF
964 AXVADDD
965 AXVSUBF
966 AXVSUBD
967 AXVMULF
968 AXVMULD
969 AXVDIVF
970 AXVDIVD
971
972 AVFCLASSF
973 AVFCLASSD
974 AXVFCLASSF
975 AXVFCLASSD
976
977
978 AVFRINTRNEF
979 AVFRINTRNED
980 AVFRINTRZF
981 AVFRINTRZD
982 AVFRINTRPF
983 AVFRINTRPD
984 AVFRINTRMF
985 AVFRINTRMD
986 AVFRINTF
987 AVFRINTD
988 AXVFRINTRNEF
989 AXVFRINTRNED
990 AXVFRINTRZF
991 AXVFRINTRZD
992 AXVFRINTRPF
993 AXVFRINTRPD
994 AXVFRINTRMF
995 AXVFRINTRMD
996 AXVFRINTF
997 AXVFRINTD
998
999
1000 AVNEGB
1001 AVNEGH
1002 AVNEGW
1003 AVNEGV
1004 AXVNEGB
1005 AXVNEGH
1006 AXVNEGW
1007 AXVNEGV
1008
1009
1010 AVMULWEVHB
1011 AVMULWEVWH
1012 AVMULWEVVW
1013 AVMULWEVQV
1014 AVMULWODHB
1015 AVMULWODWH
1016 AVMULWODVW
1017 AVMULWODQV
1018 AVMULWEVHBU
1019 AVMULWEVWHU
1020 AVMULWEVVWU
1021 AVMULWEVQVU
1022 AVMULWODHBU
1023 AVMULWODWHU
1024 AVMULWODVWU
1025 AVMULWODQVU
1026 AXVMULWEVHB
1027 AXVMULWEVWH
1028 AXVMULWEVVW
1029 AXVMULWEVQV
1030 AXVMULWODHB
1031 AXVMULWODWH
1032 AXVMULWODVW
1033 AXVMULWODQV
1034 AXVMULWEVHBU
1035 AXVMULWEVWHU
1036 AXVMULWEVVWU
1037 AXVMULWEVQVU
1038 AXVMULWODHBU
1039 AXVMULWODWHU
1040 AXVMULWODVWU
1041 AXVMULWODQVU
1042 AVMULWEVHBUB
1043 AVMULWEVWHUH
1044 AVMULWEVVWUW
1045 AVMULWEVQVUV
1046 AVMULWODHBUB
1047 AVMULWODWHUH
1048 AVMULWODVWUW
1049 AVMULWODQVUV
1050 AXVMULWEVHBUB
1051 AXVMULWEVWHUH
1052 AXVMULWEVVWUW
1053 AXVMULWEVQVUV
1054 AXVMULWODHBUB
1055 AXVMULWODWHUH
1056 AXVMULWODVWUW
1057 AXVMULWODQVUV
1058
1059 AVSHUF4IB
1060 AVSHUF4IH
1061 AVSHUF4IW
1062 AVSHUF4IV
1063 AXVSHUF4IB
1064 AXVSHUF4IH
1065 AXVSHUF4IW
1066 AXVSHUF4IV
1067
1068 AVSETEQV
1069 AVSETNEV
1070 AVSETANYEQB
1071 AVSETANYEQH
1072 AVSETANYEQW
1073 AVSETANYEQV
1074 AVSETALLNEB
1075 AVSETALLNEH
1076 AVSETALLNEW
1077 AVSETALLNEV
1078 AXVSETEQV
1079 AXVSETNEV
1080 AXVSETANYEQB
1081 AXVSETANYEQH
1082 AXVSETANYEQW
1083 AXVSETANYEQV
1084 AXVSETALLNEB
1085 AXVSETALLNEH
1086 AXVSETALLNEW
1087 AXVSETALLNEV
1088
1089 ALAST
1090
1091
1092 AJMP = obj.AJMP
1093 AJAL = obj.ACALL
1094 ARET = obj.ARET
1095 )
1096
1097 func init() {
1098
1099
1100
1101
1102 if REG_R0%32 != 0 {
1103 panic("REG_R0 is not a multiple of 32")
1104 }
1105 if REG_F0%32 != 0 {
1106 panic("REG_F0 is not a multiple of 32")
1107 }
1108 if REG_FCSR0%32 != 0 {
1109 panic("REG_FCSR0 is not a multiple of 32")
1110 }
1111 if REG_FCC0%32 != 0 {
1112 panic("REG_FCC0 is not a multiple of 32")
1113 }
1114 if REG_V0%32 != 0 {
1115 panic("REG_V0 is not a multiple of 32")
1116 }
1117 if REG_X0%32 != 0 {
1118 panic("REG_X0 is not a multiple of 32")
1119 }
1120 }
1121
View as plain text