]> Git Repo - qemu.git/blame - target/loongarch/insns.decode
target/loongarch: Add fixed point load/store instruction translation
[qemu.git] / target / loongarch / insns.decode
CommitLineData
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#
bb79174d 11%i14s2 10:s14 !function=shl_2
143d6785
SG
12%sa2p1 15:2 !function=plus_1
13
14#
15# Argument sets
16#
bb79174d 17&i imm
143d6785 18&r_i rd imm
ad08cb3f 19&rr rd rj
143d6785
SG
20&rrr rd rj rk
21&rr_i rd rj imm
bb79174d 22&hint_r_i hint rj imm
143d6785 23&rrr_sa rd rj rk sa
ad08cb3f 24&rr_ms_ls rd rj ms ls
143d6785
SG
25
26#
27# Formats
28#
bb79174d 29@i15 .... ........ ..... imm:15 &i
ad08cb3f 30@rr .... ........ ..... ..... rj:5 rd:5 &rr
143d6785
SG
31@rrr .... ........ ..... rk:5 rj:5 rd:5 &rrr
32@r_i20 .... ... imm:s20 rd:5 &r_i
63cfcd47
SG
33@rr_ui5 .... ........ ..... imm:5 rj:5 rd:5 &rr_i
34@rr_ui6 .... ........ .... imm:6 rj:5 rd:5 &rr_i
143d6785
SG
35@rr_i12 .... ...... imm:s12 rj:5 rd:5 &rr_i
36@rr_ui12 .... ...... imm:12 rj:5 rd:5 &rr_i
bb79174d 37@rr_i14s2 .... .... .............. rj:5 rd:5 &rr_i imm=%i14s2
143d6785 38@rr_i16 .... .. imm:s16 rj:5 rd:5 &rr_i
bb79174d 39@hint_r_i12 .... ...... imm:s12 rj:5 hint:5 &hint_r_i
143d6785 40@rrr_sa2p1 .... ........ ... .. rk:5 rj:5 rd:5 &rrr_sa sa=%sa2p1
ad08cb3f
SG
41@rrr_sa2 .... ........ ... sa:2 rk:5 rj:5 rd:5 &rrr_sa
42@rrr_sa3 .... ........ .. sa:3 rk:5 rj:5 rd:5 &rrr_sa
43@rr_2bw .... ....... ms:5 . ls:5 rj:5 rd:5 &rr_ms_ls
44@rr_2bd .... ...... ms:6 ls:6 rj:5 rd:5 &rr_ms_ls
143d6785
SG
45
46#
47# Fixed point arithmetic operation instruction
48#
49add_w 0000 00000001 00000 ..... ..... ..... @rrr
50add_d 0000 00000001 00001 ..... ..... ..... @rrr
51sub_w 0000 00000001 00010 ..... ..... ..... @rrr
52sub_d 0000 00000001 00011 ..... ..... ..... @rrr
53slt 0000 00000001 00100 ..... ..... ..... @rrr
54sltu 0000 00000001 00101 ..... ..... ..... @rrr
55slti 0000 001000 ............ ..... ..... @rr_i12
56sltui 0000 001001 ............ ..... ..... @rr_i12
57nor 0000 00000001 01000 ..... ..... ..... @rrr
58and 0000 00000001 01001 ..... ..... ..... @rrr
59or 0000 00000001 01010 ..... ..... ..... @rrr
60xor 0000 00000001 01011 ..... ..... ..... @rrr
61orn 0000 00000001 01100 ..... ..... ..... @rrr
62andn 0000 00000001 01101 ..... ..... ..... @rrr
63mul_w 0000 00000001 11000 ..... ..... ..... @rrr
64mulh_w 0000 00000001 11001 ..... ..... ..... @rrr
65mulh_wu 0000 00000001 11010 ..... ..... ..... @rrr
66mul_d 0000 00000001 11011 ..... ..... ..... @rrr
67mulh_d 0000 00000001 11100 ..... ..... ..... @rrr
68mulh_du 0000 00000001 11101 ..... ..... ..... @rrr
69mulw_d_w 0000 00000001 11110 ..... ..... ..... @rrr
70mulw_d_wu 0000 00000001 11111 ..... ..... ..... @rrr
71div_w 0000 00000010 00000 ..... ..... ..... @rrr
72mod_w 0000 00000010 00001 ..... ..... ..... @rrr
73div_wu 0000 00000010 00010 ..... ..... ..... @rrr
74mod_wu 0000 00000010 00011 ..... ..... ..... @rrr
75div_d 0000 00000010 00100 ..... ..... ..... @rrr
76mod_d 0000 00000010 00101 ..... ..... ..... @rrr
77div_du 0000 00000010 00110 ..... ..... ..... @rrr
78mod_du 0000 00000010 00111 ..... ..... ..... @rrr
79alsl_w 0000 00000000 010 .. ..... ..... ..... @rrr_sa2p1
80alsl_wu 0000 00000000 011 .. ..... ..... ..... @rrr_sa2p1
81alsl_d 0000 00000010 110 .. ..... ..... ..... @rrr_sa2p1
82lu12i_w 0001 010 .................... ..... @r_i20
83lu32i_d 0001 011 .................... ..... @r_i20
84lu52i_d 0000 001100 ............ ..... ..... @rr_i12
85pcaddi 0001 100 .................... ..... @r_i20
86pcalau12i 0001 101 .................... ..... @r_i20
87pcaddu12i 0001 110 .................... ..... @r_i20
88pcaddu18i 0001 111 .................... ..... @r_i20
89addi_w 0000 001010 ............ ..... ..... @rr_i12
90addi_d 0000 001011 ............ ..... ..... @rr_i12
91addu16i_d 0001 00 ................ ..... ..... @rr_i16
92andi 0000 001101 ............ ..... ..... @rr_ui12
93ori 0000 001110 ............ ..... ..... @rr_ui12
94xori 0000 001111 ............ ..... ..... @rr_ui12
63cfcd47
SG
95
96#
97# Fixed point shift operation instruction
98#
99sll_w 0000 00000001 01110 ..... ..... ..... @rrr
100srl_w 0000 00000001 01111 ..... ..... ..... @rrr
101sra_w 0000 00000001 10000 ..... ..... ..... @rrr
102sll_d 0000 00000001 10001 ..... ..... ..... @rrr
103srl_d 0000 00000001 10010 ..... ..... ..... @rrr
104sra_d 0000 00000001 10011 ..... ..... ..... @rrr
105rotr_w 0000 00000001 10110 ..... ..... ..... @rrr
106rotr_d 0000 00000001 10111 ..... ..... ..... @rrr
107slli_w 0000 00000100 00001 ..... ..... ..... @rr_ui5
108slli_d 0000 00000100 0001 ...... ..... ..... @rr_ui6
109srli_w 0000 00000100 01001 ..... ..... ..... @rr_ui5
110srli_d 0000 00000100 0101 ...... ..... ..... @rr_ui6
111srai_w 0000 00000100 10001 ..... ..... ..... @rr_ui5
112srai_d 0000 00000100 1001 ...... ..... ..... @rr_ui6
113rotri_w 0000 00000100 11001 ..... ..... ..... @rr_ui5
114rotri_d 0000 00000100 1101 ...... ..... ..... @rr_ui6
ad08cb3f
SG
115
116#
117# Fixed point bit operation instruction
118#
119ext_w_h 0000 00000000 00000 10110 ..... ..... @rr
120ext_w_b 0000 00000000 00000 10111 ..... ..... @rr
121clo_w 0000 00000000 00000 00100 ..... ..... @rr
122clz_w 0000 00000000 00000 00101 ..... ..... @rr
123cto_w 0000 00000000 00000 00110 ..... ..... @rr
124ctz_w 0000 00000000 00000 00111 ..... ..... @rr
125clo_d 0000 00000000 00000 01000 ..... ..... @rr
126clz_d 0000 00000000 00000 01001 ..... ..... @rr
127cto_d 0000 00000000 00000 01010 ..... ..... @rr
128ctz_d 0000 00000000 00000 01011 ..... ..... @rr
129revb_2h 0000 00000000 00000 01100 ..... ..... @rr
130revb_4h 0000 00000000 00000 01101 ..... ..... @rr
131revb_2w 0000 00000000 00000 01110 ..... ..... @rr
132revb_d 0000 00000000 00000 01111 ..... ..... @rr
133revh_2w 0000 00000000 00000 10000 ..... ..... @rr
134revh_d 0000 00000000 00000 10001 ..... ..... @rr
135bitrev_4b 0000 00000000 00000 10010 ..... ..... @rr
136bitrev_8b 0000 00000000 00000 10011 ..... ..... @rr
137bitrev_w 0000 00000000 00000 10100 ..... ..... @rr
138bitrev_d 0000 00000000 00000 10101 ..... ..... @rr
139bytepick_w 0000 00000000 100 .. ..... ..... ..... @rrr_sa2
140bytepick_d 0000 00000000 11 ... ..... ..... ..... @rrr_sa3
141maskeqz 0000 00000001 00110 ..... ..... ..... @rrr
142masknez 0000 00000001 00111 ..... ..... ..... @rrr
143bstrins_w 0000 0000011 ..... 0 ..... ..... ..... @rr_2bw
144bstrpick_w 0000 0000011 ..... 1 ..... ..... ..... @rr_2bw
145bstrins_d 0000 000010 ...... ...... ..... ..... @rr_2bd
146bstrpick_d 0000 000011 ...... ...... ..... ..... @rr_2bd
bb79174d
SG
147
148#
149# Fixed point load/store instruction
150#
151ld_b 0010 100000 ............ ..... ..... @rr_i12
152ld_h 0010 100001 ............ ..... ..... @rr_i12
153ld_w 0010 100010 ............ ..... ..... @rr_i12
154ld_d 0010 100011 ............ ..... ..... @rr_i12
155st_b 0010 100100 ............ ..... ..... @rr_i12
156st_h 0010 100101 ............ ..... ..... @rr_i12
157st_w 0010 100110 ............ ..... ..... @rr_i12
158st_d 0010 100111 ............ ..... ..... @rr_i12
159ld_bu 0010 101000 ............ ..... ..... @rr_i12
160ld_hu 0010 101001 ............ ..... ..... @rr_i12
161ld_wu 0010 101010 ............ ..... ..... @rr_i12
162ldx_b 0011 10000000 00000 ..... ..... ..... @rrr
163ldx_h 0011 10000000 01000 ..... ..... ..... @rrr
164ldx_w 0011 10000000 10000 ..... ..... ..... @rrr
165ldx_d 0011 10000000 11000 ..... ..... ..... @rrr
166stx_b 0011 10000001 00000 ..... ..... ..... @rrr
167stx_h 0011 10000001 01000 ..... ..... ..... @rrr
168stx_w 0011 10000001 10000 ..... ..... ..... @rrr
169stx_d 0011 10000001 11000 ..... ..... ..... @rrr
170ldx_bu 0011 10000010 00000 ..... ..... ..... @rrr
171ldx_hu 0011 10000010 01000 ..... ..... ..... @rrr
172ldx_wu 0011 10000010 10000 ..... ..... ..... @rrr
173preld 0010 101011 ............ ..... ..... @hint_r_i12
174dbar 0011 10000111 00100 ............... @i15
175ibar 0011 10000111 00101 ............... @i15
176ldptr_w 0010 0100 .............. ..... ..... @rr_i14s2
177stptr_w 0010 0101 .............. ..... ..... @rr_i14s2
178ldptr_d 0010 0110 .............. ..... ..... @rr_i14s2
179stptr_d 0010 0111 .............. ..... ..... @rr_i14s2
180ldgt_b 0011 10000111 10000 ..... ..... ..... @rrr
181ldgt_h 0011 10000111 10001 ..... ..... ..... @rrr
182ldgt_w 0011 10000111 10010 ..... ..... ..... @rrr
183ldgt_d 0011 10000111 10011 ..... ..... ..... @rrr
184ldle_b 0011 10000111 10100 ..... ..... ..... @rrr
185ldle_h 0011 10000111 10101 ..... ..... ..... @rrr
186ldle_w 0011 10000111 10110 ..... ..... ..... @rrr
187ldle_d 0011 10000111 10111 ..... ..... ..... @rrr
188stgt_b 0011 10000111 11000 ..... ..... ..... @rrr
189stgt_h 0011 10000111 11001 ..... ..... ..... @rrr
190stgt_w 0011 10000111 11010 ..... ..... ..... @rrr
191stgt_d 0011 10000111 11011 ..... ..... ..... @rrr
192stle_b 0011 10000111 11100 ..... ..... ..... @rrr
193stle_h 0011 10000111 11101 ..... ..... ..... @rrr
194stle_w 0011 10000111 11110 ..... ..... ..... @rrr
195stle_d 0011 10000111 11111 ..... ..... ..... @rrr
This page took 0.041839 seconds and 4 git commands to generate.