aboutsummaryrefslogtreecommitdiff
path: root/target/loongarch/insns.decode
blob: b0bed5531bd8c69fca93b1bb676fd46f9a3a1bc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# SPDX-License-Identifier: GPL-2.0-or-later
#
# LoongArch instruction decode definitions.
#
# Copyright (c) 2021 Loongson Technology Corporation Limited
#

#
# Fields
#
%sa2p1     15:2         !function=plus_1

#
# Argument sets
#
&r_i          rd imm
&rr           rd rj
&rrr          rd rj rk
&rr_i         rd rj imm
&rrr_sa       rd rj rk sa
&rr_ms_ls     rd rj ms ls

#
# Formats
#
@rr               .... ........ ..... ..... rj:5 rd:5    &rr
@rrr               .... ........ ..... rk:5 rj:5 rd:5    &rrr
@r_i20                          .... ... imm:s20 rd:5    &r_i
@rr_ui5           .... ........ ..... imm:5 rj:5 rd:5    &rr_i
@rr_ui6            .... ........ .... imm:6 rj:5 rd:5    &rr_i
@rr_i12                 .... ...... imm:s12 rj:5 rd:5    &rr_i
@rr_ui12                 .... ...... imm:12 rj:5 rd:5    &rr_i
@rr_i16                     .... .. imm:s16 rj:5 rd:5    &rr_i
@rrr_sa2p1        .... ........ ... .. rk:5 rj:5 rd:5    &rrr_sa  sa=%sa2p1
@rrr_sa2        .... ........ ... sa:2 rk:5 rj:5 rd:5    &rrr_sa
@rrr_sa3         .... ........ .. sa:3 rk:5 rj:5 rd:5    &rrr_sa
@rr_2bw            .... ....... ms:5 . ls:5 rj:5 rd:5    &rr_ms_ls
@rr_2bd               .... ...... ms:6 ls:6 rj:5 rd:5    &rr_ms_ls

#
# Fixed point arithmetic operation instruction
#
add_w           0000 00000001 00000 ..... ..... .....    @rrr
add_d           0000 00000001 00001 ..... ..... .....    @rrr
sub_w           0000 00000001 00010 ..... ..... .....    @rrr
sub_d           0000 00000001 00011 ..... ..... .....    @rrr
slt             0000 00000001 00100 ..... ..... .....    @rrr
sltu            0000 00000001 00101 ..... ..... .....    @rrr
slti            0000 001000 ............ ..... .....     @rr_i12
sltui           0000 001001 ............ ..... .....     @rr_i12
nor             0000 00000001 01000 ..... ..... .....    @rrr
and             0000 00000001 01001 ..... ..... .....    @rrr
or              0000 00000001 01010 ..... ..... .....    @rrr
xor             0000 00000001 01011 ..... ..... .....    @rrr
orn             0000 00000001 01100 ..... ..... .....    @rrr
andn            0000 00000001 01101 ..... ..... .....    @rrr
mul_w           0000 00000001 11000 ..... ..... .....    @rrr
mulh_w          0000 00000001 11001 ..... ..... .....    @rrr
mulh_wu         0000 00000001 11010 ..... ..... .....    @rrr
mul_d           0000 00000001 11011 ..... ..... .....    @rrr
mulh_d          0000 00000001 11100 ..... ..... .....    @rrr
mulh_du         0000 00000001 11101 ..... ..... .....    @rrr
mulw_d_w        0000 00000001 11110 ..... ..... .....    @rrr
mulw_d_wu       0000 00000001 11111 ..... ..... .....    @rrr
div_w           0000 00000010 00000 ..... ..... .....    @rrr
mod_w           0000 00000010 00001 ..... ..... .....    @rrr
div_wu          0000 00000010 00010 ..... ..... .....    @rrr
mod_wu          0000 00000010 00011 ..... ..... .....    @rrr
div_d           0000 00000010 00100 ..... ..... .....    @rrr
mod_d           0000 00000010 00101 ..... ..... .....    @rrr
div_du          0000 00000010 00110 ..... ..... .....    @rrr
mod_du          0000 00000010 00111 ..... ..... .....    @rrr
alsl_w          0000 00000000 010 .. ..... ..... .....   @rrr_sa2p1
alsl_wu         0000 00000000 011 .. ..... ..... .....   @rrr_sa2p1
alsl_d          0000 00000010 110 .. ..... ..... .....   @rrr_sa2p1
lu12i_w         0001 010 .................... .....      @r_i20
lu32i_d         0001 011 .................... .....      @r_i20
lu52i_d         0000 001100 ............ ..... .....     @rr_i12
pcaddi          0001 100 .................... .....      @r_i20
pcalau12i       0001 101 .................... .....      @r_i20
pcaddu12i       0001 110 .................... .....      @r_i20
pcaddu18i       0001 111 .................... .....      @r_i20
addi_w          0000 001010 ............ ..... .....     @rr_i12
addi_d          0000 001011 ............ ..... .....     @rr_i12
addu16i_d       0001 00 ................ ..... .....     @rr_i16
andi            0000 001101 ............ ..... .....     @rr_ui12
ori             0000 001110 ............ ..... .....     @rr_ui12
xori            0000 001111 ............ ..... .....     @rr_ui12

#
# Fixed point shift operation instruction
#
sll_w           0000 00000001 01110 ..... ..... .....    @rrr
srl_w           0000 00000001 01111 ..... ..... .....    @rrr
sra_w           0000 00000001 10000 ..... ..... .....    @rrr
sll_d           0000 00000001 10001 ..... ..... .....    @rrr
srl_d           0000 00000001 10010 ..... ..... .....    @rrr
sra_d           0000 00000001 10011 ..... ..... .....    @rrr
rotr_w          0000 00000001 10110 ..... ..... .....    @rrr
rotr_d          0000 00000001 10111 ..... ..... .....    @rrr
slli_w          0000 00000100 00001 ..... ..... .....    @rr_ui5
slli_d          0000 00000100 0001 ...... ..... .....    @rr_ui6
srli_w          0000 00000100 01001 ..... ..... .....    @rr_ui5
srli_d          0000 00000100 0101 ...... ..... .....    @rr_ui6
srai_w          0000 00000100 10001 ..... ..... .....    @rr_ui5
srai_d          0000 00000100 1001 ...... ..... .....    @rr_ui6
rotri_w         0000 00000100 11001 ..... ..... .....    @rr_ui5
rotri_d         0000 00000100 1101 ...... ..... .....    @rr_ui6

#
# Fixed point bit operation instruction
#
ext_w_h         0000 00000000 00000 10110 ..... .....    @rr
ext_w_b         0000 00000000 00000 10111 ..... .....    @rr
clo_w           0000 00000000 00000 00100 ..... .....    @rr
clz_w           0000 00000000 00000 00101 ..... .....    @rr
cto_w           0000 00000000 00000 00110 ..... .....    @rr
ctz_w           0000 00000000 00000 00111 ..... .....    @rr
clo_d           0000 00000000 00000 01000 ..... .....    @rr
clz_d           0000 00000000 00000 01001 ..... .....    @rr
cto_d           0000 00000000 00000 01010 ..... .....    @rr
ctz_d           0000 00000000 00000 01011 ..... .....    @rr
revb_2h         0000 00000000 00000 01100 ..... .....    @rr
revb_4h         0000 00000000 00000 01101 ..... .....    @rr
revb_2w         0000 00000000 00000 01110 ..... .....    @rr
revb_d          0000 00000000 00000 01111 ..... .....    @rr
revh_2w         0000 00000000 00000 10000 ..... .....    @rr
revh_d          0000 00000000 00000 10001 ..... .....    @rr
bitrev_4b       0000 00000000 00000 10010 ..... .....    @rr
bitrev_8b       0000 00000000 00000 10011 ..... .....    @rr
bitrev_w        0000 00000000 00000 10100 ..... .....    @rr
bitrev_d        0000 00000000 00000 10101 ..... .....    @rr
bytepick_w      0000 00000000 100 .. ..... ..... .....   @rrr_sa2
bytepick_d      0000 00000000 11 ... ..... ..... .....   @rrr_sa3
maskeqz         0000 00000001 00110 ..... ..... .....    @rrr
masknez         0000 00000001 00111 ..... ..... .....    @rrr
bstrins_w       0000 0000011 ..... 0 ..... ..... .....   @rr_2bw
bstrpick_w      0000 0000011 ..... 1 ..... ..... .....   @rr_2bw
bstrins_d       0000 000010 ...... ...... ..... .....    @rr_2bd
bstrpick_d      0000 000011 ...... ...... ..... .....    @rr_2bd