]>
Commit | Line | Data |
---|---|---|
143d6785 SG |
1 | # SPDX-License-Identifier: GPL-2.0-or-later |
2 | # | |
3 | # LoongArch instruction decode definitions. | |
4 | # | |
5 | # Copyright (c) 2021 Loongson Technology Corporation Limited | |
6 | # | |
7 | ||
8 | # | |
9 | # Fields | |
10 | # | |
11 | %sa2p1 15:2 !function=plus_1 | |
12 | ||
13 | # | |
14 | # Argument sets | |
15 | # | |
16 | &r_i rd imm | |
ad08cb3f | 17 | &rr rd rj |
143d6785 SG |
18 | &rrr rd rj rk |
19 | &rr_i rd rj imm | |
20 | &rrr_sa rd rj rk sa | |
ad08cb3f | 21 | &rr_ms_ls rd rj ms ls |
143d6785 SG |
22 | |
23 | # | |
24 | # Formats | |
25 | # | |
ad08cb3f | 26 | @rr .... ........ ..... ..... rj:5 rd:5 &rr |
143d6785 SG |
27 | @rrr .... ........ ..... rk:5 rj:5 rd:5 &rrr |
28 | @r_i20 .... ... imm:s20 rd:5 &r_i | |
63cfcd47 SG |
29 | @rr_ui5 .... ........ ..... imm:5 rj:5 rd:5 &rr_i |
30 | @rr_ui6 .... ........ .... imm:6 rj:5 rd:5 &rr_i | |
143d6785 SG |
31 | @rr_i12 .... ...... imm:s12 rj:5 rd:5 &rr_i |
32 | @rr_ui12 .... ...... imm:12 rj:5 rd:5 &rr_i | |
33 | @rr_i16 .... .. imm:s16 rj:5 rd:5 &rr_i | |
34 | @rrr_sa2p1 .... ........ ... .. rk:5 rj:5 rd:5 &rrr_sa sa=%sa2p1 | |
ad08cb3f SG |
35 | @rrr_sa2 .... ........ ... sa:2 rk:5 rj:5 rd:5 &rrr_sa |
36 | @rrr_sa3 .... ........ .. sa:3 rk:5 rj:5 rd:5 &rrr_sa | |
37 | @rr_2bw .... ....... ms:5 . ls:5 rj:5 rd:5 &rr_ms_ls | |
38 | @rr_2bd .... ...... ms:6 ls:6 rj:5 rd:5 &rr_ms_ls | |
143d6785 SG |
39 | |
40 | # | |
41 | # Fixed point arithmetic operation instruction | |
42 | # | |
43 | add_w 0000 00000001 00000 ..... ..... ..... @rrr | |
44 | add_d 0000 00000001 00001 ..... ..... ..... @rrr | |
45 | sub_w 0000 00000001 00010 ..... ..... ..... @rrr | |
46 | sub_d 0000 00000001 00011 ..... ..... ..... @rrr | |
47 | slt 0000 00000001 00100 ..... ..... ..... @rrr | |
48 | sltu 0000 00000001 00101 ..... ..... ..... @rrr | |
49 | slti 0000 001000 ............ ..... ..... @rr_i12 | |
50 | sltui 0000 001001 ............ ..... ..... @rr_i12 | |
51 | nor 0000 00000001 01000 ..... ..... ..... @rrr | |
52 | and 0000 00000001 01001 ..... ..... ..... @rrr | |
53 | or 0000 00000001 01010 ..... ..... ..... @rrr | |
54 | xor 0000 00000001 01011 ..... ..... ..... @rrr | |
55 | orn 0000 00000001 01100 ..... ..... ..... @rrr | |
56 | andn 0000 00000001 01101 ..... ..... ..... @rrr | |
57 | mul_w 0000 00000001 11000 ..... ..... ..... @rrr | |
58 | mulh_w 0000 00000001 11001 ..... ..... ..... @rrr | |
59 | mulh_wu 0000 00000001 11010 ..... ..... ..... @rrr | |
60 | mul_d 0000 00000001 11011 ..... ..... ..... @rrr | |
61 | mulh_d 0000 00000001 11100 ..... ..... ..... @rrr | |
62 | mulh_du 0000 00000001 11101 ..... ..... ..... @rrr | |
63 | mulw_d_w 0000 00000001 11110 ..... ..... ..... @rrr | |
64 | mulw_d_wu 0000 00000001 11111 ..... ..... ..... @rrr | |
65 | div_w 0000 00000010 00000 ..... ..... ..... @rrr | |
66 | mod_w 0000 00000010 00001 ..... ..... ..... @rrr | |
67 | div_wu 0000 00000010 00010 ..... ..... ..... @rrr | |
68 | mod_wu 0000 00000010 00011 ..... ..... ..... @rrr | |
69 | div_d 0000 00000010 00100 ..... ..... ..... @rrr | |
70 | mod_d 0000 00000010 00101 ..... ..... ..... @rrr | |
71 | div_du 0000 00000010 00110 ..... ..... ..... @rrr | |
72 | mod_du 0000 00000010 00111 ..... ..... ..... @rrr | |
73 | alsl_w 0000 00000000 010 .. ..... ..... ..... @rrr_sa2p1 | |
74 | alsl_wu 0000 00000000 011 .. ..... ..... ..... @rrr_sa2p1 | |
75 | alsl_d 0000 00000010 110 .. ..... ..... ..... @rrr_sa2p1 | |
76 | lu12i_w 0001 010 .................... ..... @r_i20 | |
77 | lu32i_d 0001 011 .................... ..... @r_i20 | |
78 | lu52i_d 0000 001100 ............ ..... ..... @rr_i12 | |
79 | pcaddi 0001 100 .................... ..... @r_i20 | |
80 | pcalau12i 0001 101 .................... ..... @r_i20 | |
81 | pcaddu12i 0001 110 .................... ..... @r_i20 | |
82 | pcaddu18i 0001 111 .................... ..... @r_i20 | |
83 | addi_w 0000 001010 ............ ..... ..... @rr_i12 | |
84 | addi_d 0000 001011 ............ ..... ..... @rr_i12 | |
85 | addu16i_d 0001 00 ................ ..... ..... @rr_i16 | |
86 | andi 0000 001101 ............ ..... ..... @rr_ui12 | |
87 | ori 0000 001110 ............ ..... ..... @rr_ui12 | |
88 | xori 0000 001111 ............ ..... ..... @rr_ui12 | |
63cfcd47 SG |
89 | |
90 | # | |
91 | # Fixed point shift operation instruction | |
92 | # | |
93 | sll_w 0000 00000001 01110 ..... ..... ..... @rrr | |
94 | srl_w 0000 00000001 01111 ..... ..... ..... @rrr | |
95 | sra_w 0000 00000001 10000 ..... ..... ..... @rrr | |
96 | sll_d 0000 00000001 10001 ..... ..... ..... @rrr | |
97 | srl_d 0000 00000001 10010 ..... ..... ..... @rrr | |
98 | sra_d 0000 00000001 10011 ..... ..... ..... @rrr | |
99 | rotr_w 0000 00000001 10110 ..... ..... ..... @rrr | |
100 | rotr_d 0000 00000001 10111 ..... ..... ..... @rrr | |
101 | slli_w 0000 00000100 00001 ..... ..... ..... @rr_ui5 | |
102 | slli_d 0000 00000100 0001 ...... ..... ..... @rr_ui6 | |
103 | srli_w 0000 00000100 01001 ..... ..... ..... @rr_ui5 | |
104 | srli_d 0000 00000100 0101 ...... ..... ..... @rr_ui6 | |
105 | srai_w 0000 00000100 10001 ..... ..... ..... @rr_ui5 | |
106 | srai_d 0000 00000100 1001 ...... ..... ..... @rr_ui6 | |
107 | rotri_w 0000 00000100 11001 ..... ..... ..... @rr_ui5 | |
108 | rotri_d 0000 00000100 1101 ...... ..... ..... @rr_ui6 | |
ad08cb3f SG |
109 | |
110 | # | |
111 | # Fixed point bit operation instruction | |
112 | # | |
113 | ext_w_h 0000 00000000 00000 10110 ..... ..... @rr | |
114 | ext_w_b 0000 00000000 00000 10111 ..... ..... @rr | |
115 | clo_w 0000 00000000 00000 00100 ..... ..... @rr | |
116 | clz_w 0000 00000000 00000 00101 ..... ..... @rr | |
117 | cto_w 0000 00000000 00000 00110 ..... ..... @rr | |
118 | ctz_w 0000 00000000 00000 00111 ..... ..... @rr | |
119 | clo_d 0000 00000000 00000 01000 ..... ..... @rr | |
120 | clz_d 0000 00000000 00000 01001 ..... ..... @rr | |
121 | cto_d 0000 00000000 00000 01010 ..... ..... @rr | |
122 | ctz_d 0000 00000000 00000 01011 ..... ..... @rr | |
123 | revb_2h 0000 00000000 00000 01100 ..... ..... @rr | |
124 | revb_4h 0000 00000000 00000 01101 ..... ..... @rr | |
125 | revb_2w 0000 00000000 00000 01110 ..... ..... @rr | |
126 | revb_d 0000 00000000 00000 01111 ..... ..... @rr | |
127 | revh_2w 0000 00000000 00000 10000 ..... ..... @rr | |
128 | revh_d 0000 00000000 00000 10001 ..... ..... @rr | |
129 | bitrev_4b 0000 00000000 00000 10010 ..... ..... @rr | |
130 | bitrev_8b 0000 00000000 00000 10011 ..... ..... @rr | |
131 | bitrev_w 0000 00000000 00000 10100 ..... ..... @rr | |
132 | bitrev_d 0000 00000000 00000 10101 ..... ..... @rr | |
133 | bytepick_w 0000 00000000 100 .. ..... ..... ..... @rrr_sa2 | |
134 | bytepick_d 0000 00000000 11 ... ..... ..... ..... @rrr_sa3 | |
135 | maskeqz 0000 00000001 00110 ..... ..... ..... @rrr | |
136 | masknez 0000 00000001 00111 ..... ..... ..... @rrr | |
137 | bstrins_w 0000 0000011 ..... 0 ..... ..... ..... @rr_2bw | |
138 | bstrpick_w 0000 0000011 ..... 1 ..... ..... ..... @rr_2bw | |
139 | bstrins_d 0000 000010 ...... ...... ..... ..... @rr_2bd | |
140 | bstrpick_d 0000 000011 ...... ...... ..... ..... @rr_2bd |