]>
Commit | Line | Data |
---|---|---|
99082815 RH |
1 | # |
2 | # Power ISA decode for 32-bit insns (opcode space 0) | |
3 | # | |
4 | # Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br) | |
5 | # | |
6 | # This library is free software; you can redistribute it and/or | |
7 | # modify it under the terms of the GNU Lesser General Public | |
8 | # License as published by the Free Software Foundation; either | |
9 | # version 2.1 of the License, or (at your option) any later version. | |
10 | # | |
11 | # This library is distributed in the hope that it will be useful, | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | # Lesser General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU Lesser General Public | |
17 | # License along with this library; if not, see <http://www.gnu.org/licenses/>. | |
18 | # | |
5e560864 | 19 | |
eb69a84b MF |
20 | &A frt fra frb frc rc:bool |
21 | @A ...... frt:5 fra:5 frb:5 frc:5 ..... rc:1 &A | |
22 | ||
6a8654d6 VC |
23 | &A_tb frt frb rc:bool |
24 | @A_tb ...... frt:5 ..... frb:5 ..... ..... rc:1 &A_tb | |
25 | ||
5e560864 | 26 | &D rt ra si:int64_t |
bbecdb22 | 27 | @D ...... rt:5 ra:5 si:s16 &D |
5e560864 | 28 | |
8f0a4b6a | 29 | &D_bf bf l:bool ra imm |
bbecdb22 VC |
30 | @D_bfs ...... bf:3 . l:1 ra:5 imm:s16 &D_bf |
31 | @D_bfu ...... bf:3 . l:1 ra:5 imm:16 &D_bf | |
8f0a4b6a | 32 | |
e10271e1 MF |
33 | %dq_si 4:s12 !function=times_16 |
34 | %dq_rtp 22:4 !function=times_2 | |
35 | @DQ_rtp ...... ....0 ra:5 ............ .... &D rt=%dq_rtp si=%dq_si | |
36 | ||
72b70d5c LMC |
37 | %dq_rt_tsx 3:1 21:5 |
38 | @DQ_TSX ...... ..... ra:5 ............ .... &D si=%dq_si rt=%dq_rt_tsx | |
39 | ||
96fa2632 LMC |
40 | %rt_tsxp 21:1 22:4 !function=times_2 |
41 | @DQ_TSXP ...... ..... ra:5 ............ .... &D si=%dq_si rt=%rt_tsxp | |
42 | ||
f2aabda8 | 43 | %ds_si 2:s14 !function=times_4 |
bbecdb22 | 44 | @DS ...... rt:5 ra:5 .............. .. &D si=%ds_si |
f2aabda8 | 45 | |
e10271e1 MF |
46 | %ds_rtp 22:4 !function=times_2 |
47 | @DS_rtp ...... ....0 ra:5 .............. .. &D rt=%ds_rtp si=%ds_si | |
48 | ||
9193eaa9 MF |
49 | &DX_b vrt b |
50 | %dx_b 6:10 16:5 0:1 | |
51 | @DX_b ...... vrt:5 ..... .......... ..... . &DX_b b=%dx_b | |
52 | ||
e7a5d578 MF |
53 | &DX rt d |
54 | %dx_d 6:s10 16:5 0:1 | |
bbecdb22 | 55 | @DX ...... rt:5 ..... .......... ..... . &DX d=%dx_d |
e7a5d578 | 56 | |
28110b72 | 57 | &VA vrt vra vrb rc |
bbecdb22 | 58 | @VA ...... vrt:5 vra:5 vrb:5 rc:5 ...... &VA |
28110b72 | 59 | |
6a394290 MF |
60 | &VC vrt vra vrb rc:bool |
61 | @VC ...... vrt:5 vra:5 vrb:5 rc:1 .......... &VC | |
62 | ||
2c716b4d MF |
63 | &VN vrt vra vrb sh |
64 | @VN ...... vrt:5 vra:5 vrb:5 .. sh:3 ...... &VN | |
65 | ||
a5f56954 | 66 | &VX vrt vra vrb |
bbecdb22 | 67 | @VX ...... vrt:5 vra:5 vrb:5 .......... . &VX |
a5f56954 | 68 | |
b58f3931 MF |
69 | &VX_bf bf vra vrb |
70 | @VX_bf ...... bf:3 .. vra:5 vrb:5 ........... &VX_bf | |
71 | ||
95f1ee28 MF |
72 | &VX_mp rt mp:bool vrb |
73 | @VX_mp ...... rt:5 .... mp:1 vrb:5 ........... &VX_mp | |
74 | ||
f622ebe7 MF |
75 | &VX_n rt vrb n |
76 | @VX_n ...... rt:5 .. n:3 vrb:5 ........... &VX_n | |
77 | ||
fb5303cc MF |
78 | &VX_tb_rc vrt vrb rc:bool |
79 | @VX_tb_rc ...... vrt:5 ..... vrb:5 rc:1 .......... &VX_tb_rc | |
80 | ||
23832ae6 | 81 | &VX_uim4 vrt uim vrb |
bbecdb22 | 82 | @VX_uim4 ...... vrt:5 . uim:4 vrb:5 ........... &VX_uim4 |
23832ae6 | 83 | |
5f1470b0 | 84 | &VX_tb vrt vrb |
bbecdb22 | 85 | @VX_tb ...... vrt:5 ..... vrb:5 ........... &VX_tb |
5f1470b0 | 86 | |
f2aabda8 | 87 | &X rt ra rb |
bbecdb22 | 88 | @X ...... rt:5 ra:5 rb:5 .......... . &X |
f2aabda8 | 89 | |
afdc9310 LP |
90 | &X_rc rt ra rb rc:bool |
91 | @X_rc ...... rt:5 ra:5 rb:5 .......... rc:1 &X_rc | |
92 | ||
38d3690b MF |
93 | &X_sa rs ra |
94 | @X_sa ...... rs:5 ra:5 ..... .......... . &X_sa | |
95 | ||
afdc9310 LP |
96 | %x_frtp 22:4 !function=times_2 |
97 | %x_frap 17:4 !function=times_2 | |
98 | %x_frbp 12:4 !function=times_2 | |
99 | @X_tp_ap_bp_rc ...... ....0 ....0 ....0 .......... rc:1 &X_rc rt=%x_frtp ra=%x_frap rb=%x_frbp | |
100 | ||
101 | @X_tp_a_bp_rc ...... ....0 ra:5 ....0 .......... rc:1 &X_rc rt=%x_frtp rb=%x_frbp | |
102 | ||
394c2e2f VC |
103 | &X_t rt |
104 | @X_t ...... rt:5 ..... ..... .......... . &X_t | |
105 | ||
67332e07 MF |
106 | &X_tb rt rb |
107 | @X_tb ...... rt:5 ..... rb:5 .......... . &X_tb | |
108 | ||
f80d04d5 VC |
109 | &X_t_rc rt rc:bool |
110 | @X_t_rc ...... rt:5 ..... ..... .......... rc:1 &X_t_rc | |
111 | ||
c8ef4d1e LP |
112 | &X_tb_rc rt rb rc:bool |
113 | @X_tb_rc ...... rt:5 ..... rb:5 .......... rc:1 &X_tb_rc | |
114 | ||
115 | @X_tbp_rc ...... ....0 ..... ....0 .......... rc:1 &X_tb_rc rt=%x_frtp rb=%x_frbp | |
116 | ||
117 | @X_tp_b_rc ...... ....0 ..... rb:5 .......... rc:1 &X_tb_rc rt=%x_frtp | |
118 | ||
119 | @X_t_bp_rc ...... rt:5 ..... ....0 .......... rc:1 &X_tb_rc rb=%x_frbp | |
120 | ||
9a14365e | 121 | &X_bi rt bi |
bbecdb22 | 122 | @X_bi ...... rt:5 bi:5 ..... .......... . &X_bi |
9a14365e | 123 | |
85c38a46 LP |
124 | &X_bf bf ra rb |
125 | @X_bf ...... bf:3 .. ra:5 rb:5 .......... . &X_bf | |
126 | ||
127 | @X_bf_ap_bp ...... bf:3 .. ....0 ....0 .......... . &X_bf ra=%x_frap rb=%x_frbp | |
128 | ||
129 | @X_bf_a_bp ...... bf:3 .. ra:5 ....0 .......... . &X_bf rb=%x_frbp | |
130 | ||
131 | &X_bf_uim bf uim rb | |
132 | @X_bf_uim ...... bf:3 . uim:6 rb:5 .......... . &X_bf_uim | |
133 | ||
134 | @X_bf_uim_bp ...... bf:3 . uim:6 ....0 .......... . &X_bf_uim rb=%x_frbp | |
135 | ||
8f0a4b6a | 136 | &X_bfl bf l:bool ra rb |
bbecdb22 | 137 | @X_bfl ...... bf:3 . l:1 ra:5 rb:5 .......... . &X_bfl |
8f0a4b6a | 138 | |
bf8adfd8 VC |
139 | &X_imm2 rt imm |
140 | @X_imm2 ...... rt:5 ..... ... imm:2 .......... . &X_imm2 | |
141 | ||
6cef305f VC |
142 | &X_imm3 rt imm |
143 | @X_imm3 ...... rt:5 ..... .. imm:3 .......... . &X_imm3 | |
144 | ||
6166fced | 145 | %x_xt 0:1 21:5 |
b090f4f1 MF |
146 | &X_imm5 xt imm:uint8_t vrb |
147 | @X_imm5 ...... ..... imm:5 vrb:5 .......... . &X_imm5 xt=%x_xt | |
148 | ||
6166fced BL |
149 | &X_imm8 xt imm:uint8_t |
150 | @X_imm8 ...... ..... .. imm:8 .......... . &X_imm8 xt=%x_xt | |
151 | ||
2bfcb7a3 LC |
152 | &X_ih ih:uint8_t |
153 | @X_ih ...... .. ih:3 ..... ..... .......... . &X_ih | |
154 | ||
43507e47 LC |
155 | &X_rb rb |
156 | @X_rb ...... ..... ..... rb:5 .......... . &X_rb | |
157 | ||
491a2553 LC |
158 | &X_rs_l rs l:bool |
159 | @X_rs_l ...... rs:5 .... l:1 ..... .......... . &X_rs_l | |
160 | ||
6e26b85d MF |
161 | &X_uim5 xt uim:uint8_t |
162 | @X_uim5 ...... ..... ..... uim:5 .......... . &X_uim5 xt=%x_xt | |
163 | ||
a2329747 LP |
164 | &X_tb_sp_rc rt rb sp rc:bool |
165 | @X_tb_sp_rc ...... rt:5 sp:2 ... rb:5 .......... rc:1 &X_tb_sp_rc | |
166 | ||
167 | @X_tbp_sp_rc ...... ....0 sp:2 ... ....0 .......... rc:1 &X_tb_sp_rc rt=%x_frtp rb=%x_frbp | |
168 | ||
169 | &X_tb_s_rc rt rb s:bool rc:bool | |
170 | @X_tb_s_rc ...... rt:5 s:1 .... rb:5 .......... rc:1 &X_tb_s_rc | |
171 | ||
172 | @X_tbp_s_rc ...... ....0 s:1 .... ....0 .......... rc:1 &X_tb_s_rc rt=%x_frtp rb=%x_frbp | |
173 | ||
70426b5b LMC |
174 | %x_rt_tsx 0:1 21:5 |
175 | @X_TSX ...... ..... ra:5 rb:5 .......... . &X rt=%x_rt_tsx | |
226ce506 | 176 | @X_TSXP ...... ..... ra:5 rb:5 .......... . &X rt=%rt_tsxp |
70426b5b | 177 | |
670f1da3 VC |
178 | %x_dw 0:1 21:5 !function=dw_compose_ea |
179 | @X_DW ...... ..... ra:5 rb:5 .......... . &X rt=%x_dw | |
180 | ||
d39b2cc7 | 181 | &X_frtp_vrb frtp vrb |
d39b2cc7 LP |
182 | @X_frtp_vrb ...... ....0 ..... vrb:5 .......... . &X_frtp_vrb frtp=%x_frtp |
183 | ||
328747f3 | 184 | &X_vrt_frbp vrt frbp |
328747f3 LP |
185 | @X_vrt_frbp ...... vrt:5 ..... ....0 .......... . &X_vrt_frbp frbp=%x_frbp |
186 | ||
a702c533 LMC |
187 | &X_a ra |
188 | @X_a ...... ra:3 .. ..... ..... .......... . &X_a | |
189 | ||
c5df1898 VC |
190 | %xx_xt 0:1 21:5 |
191 | %xx_xb 1:1 11:5 | |
192 | %xx_xa 2:1 16:5 | |
43d55fc2 | 193 | %xx_xc 3:1 6:5 |
3909ff1f VC |
194 | &XX2 xt xb |
195 | @XX2 ...... ..... ..... ..... ......... .. &XX2 xt=%xx_xt xb=%xx_xb | |
196 | ||
8f5eeee3 MF |
197 | &XX2_uim xt xb uim:uint8_t |
198 | @XX2_uim2 ...... ..... ... uim:2 ..... ......... .. &XX2_uim xt=%xx_xt xb=%xx_xb | |
199 | ||
200 | @XX2_uim4 ...... ..... . uim:4 ..... ......... .. &XX2_uim xt=%xx_xt xb=%xx_xb | |
c5df1898 | 201 | |
d518239b VC |
202 | &XX2_bf_xb bf xb |
203 | @XX2_bf_xb ...... bf:3 .. ..... ..... ......... . . &XX2_bf_xb xb=%xx_xb | |
204 | ||
c5df1898 VC |
205 | &XX3 xt xa xb |
206 | @XX3 ...... ..... ..... ..... ........ ... &XX3 xt=%xx_xt xa=%xx_xa xb=%xx_xb | |
30dfca8d | 207 | |
34553153 LMC |
208 | # 32 bit GER instructions have all mask bits considered 1 |
209 | &MMIRR_XX3 xa xb xt pmsk xmsk ymsk | |
210 | %xx_at 23:3 | |
c29018cc | 211 | %xx_xa_pair 2:1 17:4 !function=times_2 |
34553153 LMC |
212 | @XX3_at ...... ... .. ..... ..... ........ ... &MMIRR_XX3 xt=%xx_at xb=%xx_xb \ |
213 | pmsk=255 xmsk=15 ymsk=15 | |
214 | ||
d31b2c19 MF |
215 | &XX3_dm xt xa xb dm |
216 | @XX3_dm ...... ..... ..... ..... . dm:2 ..... ... &XX3_dm xt=%xx_xt xa=%xx_xa xb=%xx_xb | |
217 | ||
43d55fc2 MF |
218 | &XX4 xt xa xb xc |
219 | @XX4 ...... ..... ..... ..... ..... .. .... &XX4 xt=%xx_xt xa=%xx_xa xb=%xx_xb xc=%xx_xc | |
220 | ||
87bc8e52 LP |
221 | &Z22_bf_fra bf fra dm |
222 | @Z22_bf_fra ...... bf:3 .. fra:5 dm:6 ......... . &Z22_bf_fra | |
223 | ||
224 | %z22_frap 17:4 !function=times_2 | |
225 | @Z22_bf_frap ...... bf:3 .. ....0 dm:6 ......... . &Z22_bf_fra fra=%z22_frap | |
226 | ||
a2329747 LP |
227 | &Z22_ta_sh_rc rt ra sh rc:bool |
228 | @Z22_ta_sh_rc ...... rt:5 ra:5 sh:6 ......... rc:1 &Z22_ta_sh_rc | |
229 | ||
230 | %z22_frtp 22:4 !function=times_2 | |
231 | @Z22_tap_sh_rc ...... ....0 ....0 sh:6 ......... rc:1 &Z22_ta_sh_rc rt=%z22_frtp ra=%z22_frap | |
232 | ||
a8f4bce6 LP |
233 | &Z23_tab frt fra frb rmc rc:bool |
234 | @Z23_tab ...... frt:5 fra:5 frb:5 rmc:2 ........ rc:1 &Z23_tab | |
78464edb LP |
235 | |
236 | %z23_frtp 22:4 !function=times_2 | |
a8f4bce6 | 237 | %z23_frap 17:4 !function=times_2 |
78464edb | 238 | %z23_frbp 12:4 !function=times_2 |
a8f4bce6 LP |
239 | @Z23_tabp ...... ....0 ....0 ....0 rmc:2 ........ rc:1 &Z23_tab frt=%z23_frtp fra=%z23_frap frb=%z23_frbp |
240 | ||
241 | @Z23_tp_a_bp ...... ....0 fra:5 ....0 rmc:2 ........ rc:1 &Z23_tab frt=%z23_frtp frb=%z23_frbp | |
242 | ||
243 | &Z23_tb frt frb r:bool rmc rc:bool | |
244 | @Z23_tb ...... frt:5 .... r:1 frb:5 rmc:2 ........ rc:1 &Z23_tb | |
245 | ||
78464edb LP |
246 | @Z23_tbp ...... ....0 .... r:1 ....0 rmc:2 ........ rc:1 &Z23_tb frt=%z23_frtp frb=%z23_frbp |
247 | ||
248 | &Z23_te_tb te frt frb rmc rc:bool | |
249 | @Z23_te_tb ...... frt:5 te:5 frb:5 rmc:2 ........ rc:1 &Z23_te_tb | |
250 | ||
251 | @Z23_te_tbp ...... ....0 te:5 ....0 rmc:2 ........ rc:1 &Z23_te_tb frt=%z23_frtp frb=%z23_frbp | |
252 | ||
f2aabda8 RH |
253 | ### Fixed-Point Load Instructions |
254 | ||
255 | LBZ 100010 ..... ..... ................ @D | |
256 | LBZU 100011 ..... ..... ................ @D | |
257 | LBZX 011111 ..... ..... ..... 0001010111 - @X | |
258 | LBZUX 011111 ..... ..... ..... 0001110111 - @X | |
259 | ||
260 | LHZ 101000 ..... ..... ................ @D | |
261 | LHZU 101001 ..... ..... ................ @D | |
262 | LHZX 011111 ..... ..... ..... 0100010111 - @X | |
263 | LHZUX 011111 ..... ..... ..... 0100110111 - @X | |
264 | ||
265 | LHA 101010 ..... ..... ................ @D | |
266 | LHAU 101011 ..... ..... ................ @D | |
267 | LHAX 011111 ..... ..... ..... 0101010111 - @X | |
268 | LHAXU 011111 ..... ..... ..... 0101110111 - @X | |
269 | ||
270 | LWZ 100000 ..... ..... ................ @D | |
271 | LWZU 100001 ..... ..... ................ @D | |
272 | LWZX 011111 ..... ..... ..... 0000010111 - @X | |
273 | LWZUX 011111 ..... ..... ..... 0000110111 - @X | |
274 | ||
275 | LWA 111010 ..... ..... ..............10 @DS | |
276 | LWAX 011111 ..... ..... ..... 0101010101 - @X | |
277 | LWAUX 011111 ..... ..... ..... 0101110101 - @X | |
278 | ||
279 | LD 111010 ..... ..... ..............00 @DS | |
280 | LDU 111010 ..... ..... ..............01 @DS | |
281 | LDX 011111 ..... ..... ..... 0000010101 - @X | |
282 | LDUX 011111 ..... ..... ..... 0000110101 - @X | |
283 | ||
e10271e1 MF |
284 | LQ 111000 ..... ..... ............ ---- @DQ_rtp |
285 | ||
e8f4c8d6 RH |
286 | ### Fixed-Point Store Instructions |
287 | ||
288 | STB 100110 ..... ..... ................ @D | |
289 | STBU 100111 ..... ..... ................ @D | |
290 | STBX 011111 ..... ..... ..... 0011010111 - @X | |
291 | STBUX 011111 ..... ..... ..... 0011110111 - @X | |
292 | ||
293 | STH 101100 ..... ..... ................ @D | |
294 | STHU 101101 ..... ..... ................ @D | |
295 | STHX 011111 ..... ..... ..... 0110010111 - @X | |
296 | STHUX 011111 ..... ..... ..... 0110110111 - @X | |
297 | ||
298 | STW 100100 ..... ..... ................ @D | |
299 | STWU 100101 ..... ..... ................ @D | |
300 | STWX 011111 ..... ..... ..... 0010010111 - @X | |
301 | STWUX 011111 ..... ..... ..... 0010110111 - @X | |
302 | ||
303 | STD 111110 ..... ..... ..............00 @DS | |
304 | STDU 111110 ..... ..... ..............01 @DS | |
305 | STDX 011111 ..... ..... ..... 0010010101 - @X | |
306 | STDUX 011111 ..... ..... ..... 0010110101 - @X | |
307 | ||
e10271e1 MF |
308 | STQ 111110 ..... ..... ..............10 @DS_rtp |
309 | ||
8f0a4b6a MF |
310 | ### Fixed-Point Compare Instructions |
311 | ||
312 | CMP 011111 ... - . ..... ..... 0000000000 - @X_bfl | |
313 | CMPL 011111 ... - . ..... ..... 0000100000 - @X_bfl | |
314 | CMPI 001011 ... - . ..... ................ @D_bfs | |
315 | CMPLI 001010 ... - . ..... ................ @D_bfu | |
316 | ||
5e560864 RH |
317 | ### Fixed-Point Arithmetic Instructions |
318 | ||
319 | ADDI 001110 ..... ..... ................ @D | |
320 | ADDIS 001111 ..... ..... ................ @D | |
9a14365e | 321 | |
e7a5d578 MF |
322 | ADDPCIS 010011 ..... ..... .......... 00010 . @DX |
323 | ||
89ccd7dc MF |
324 | ## Fixed-Point Logical Instructions |
325 | ||
326 | CFUGED 011111 ..... ..... ..... 0011011100 - @X | |
82be6e02 | 327 | CNTLZDM 011111 ..... ..... ..... 0000111011 - @X |
f356b3ba | 328 | CNTTZDM 011111 ..... ..... ..... 1000111011 - @X |
21ba6e58 | 329 | PDEPD 011111 ..... ..... ..... 0010011100 - @X |
8bdb7606 | 330 | PEXTD 011111 ..... ..... ..... 0010111100 - @X |
89ccd7dc | 331 | |
670f1da3 VC |
332 | # Fixed-Point Hash Instructions |
333 | ||
334 | HASHST 011111 ..... ..... ..... 1011010010 . @X_DW | |
335 | HASHCHK 011111 ..... ..... ..... 1011110010 . @X_DW | |
53ae2aeb VC |
336 | HASHSTP 011111 ..... ..... ..... 1010010010 . @X_DW |
337 | HASHCHKP 011111 ..... ..... ..... 1010110010 . @X_DW | |
670f1da3 | 338 | |
6addef4d MF |
339 | ## BCD Assist |
340 | ||
341 | ADDG6S 011111 ..... ..... ..... - 001001010 - @X | |
6b924d4a | 342 | CDTBCD 011111 ..... ..... ----- 0100011010 - @X_sa |
38d3690b | 343 | CBCDTD 011111 ..... ..... ----- 0100111010 - @X_sa |
6addef4d | 344 | |
fbd2e60e FEV |
345 | ### Float-Point Load Instructions |
346 | ||
347 | LFS 110000 ..... ..... ................ @D | |
348 | LFSU 110001 ..... ..... ................ @D | |
349 | LFSX 011111 ..... ..... ..... 1000010111 - @X | |
350 | LFSUX 011111 ..... ..... ..... 1000110111 - @X | |
351 | ||
352 | LFD 110010 ..... ..... ................ @D | |
353 | LFDU 110011 ..... ..... ................ @D | |
354 | LFDX 011111 ..... ..... ..... 1001010111 - @X | |
355 | LFDUX 011111 ..... ..... ..... 1001110111 - @X | |
356 | ||
357 | ### Float-Point Store Instructions | |
358 | ||
359 | STFS 110100 ..... ...... ............... @D | |
360 | STFSU 110101 ..... ...... ............... @D | |
361 | STFSX 011111 ..... ...... .... 1010010111 - @X | |
362 | STFSUX 011111 ..... ...... .... 1010110111 - @X | |
363 | ||
364 | STFD 110110 ..... ...... ............... @D | |
365 | STFDU 110111 ..... ...... ............... @D | |
366 | STFDX 011111 ..... ...... .... 1011010111 - @X | |
367 | STFDUX 011111 ..... ...... .... 1011110111 - @X | |
368 | ||
6a8654d6 VC |
369 | ### Floating-Point Arithmetic Instructions |
370 | ||
371 | FSQRT 111111 ..... ----- ..... ----- 10110 . @A_tb | |
4896c15b | 372 | FSQRTS 111011 ..... ----- ..... ----- 10110 . @A_tb |
6a8654d6 | 373 | |
eb69a84b MF |
374 | ### Floating-Point Select Instruction |
375 | ||
376 | FSEL 111111 ..... ..... ..... ..... 10111 . @A | |
377 | ||
9a14365e MF |
378 | ### Move To/From System Register Instructions |
379 | ||
380 | SETBC 011111 ..... ..... ----- 0110000000 - @X_bi | |
381 | SETBCR 011111 ..... ..... ----- 0110100000 - @X_bi | |
382 | SETNBC 011111 ..... ..... ----- 0111000000 - @X_bi | |
383 | SETNBCR 011111 ..... ..... ----- 0111100000 - @X_bi | |
a5f56954 | 384 | |
bf8adfd8 VC |
385 | ### Move To/From FPSCR |
386 | ||
f80d04d5 | 387 | MFFS 111111 ..... 00000 ----- 1001000111 . @X_t_rc |
394c2e2f | 388 | MFFSCE 111111 ..... 00001 ----- 1001000111 - @X_t |
bf8adfd8 | 389 | MFFSCRN 111111 ..... 10110 ..... 1001000111 - @X_tb |
6cef305f | 390 | MFFSCDRN 111111 ..... 10100 ..... 1001000111 - @X_tb |
bf8adfd8 | 391 | MFFSCRNI 111111 ..... 10111 ---.. 1001000111 - @X_imm2 |
6cef305f | 392 | MFFSCDRNI 111111 ..... 10101 --... 1001000111 - @X_imm3 |
3e5bce70 | 393 | MFFSL 111111 ..... 11000 ----- 1001000111 - @X_t |
bf8adfd8 | 394 | |
afdc9310 LP |
395 | ### Decimal Floating-Point Arithmetic Instructions |
396 | ||
397 | DADD 111011 ..... ..... ..... 0000000010 . @X_rc | |
398 | DADDQ 111111 ..... ..... ..... 0000000010 . @X_tp_ap_bp_rc | |
399 | ||
400 | DSUB 111011 ..... ..... ..... 1000000010 . @X_rc | |
401 | DSUBQ 111111 ..... ..... ..... 1000000010 . @X_tp_ap_bp_rc | |
402 | ||
403 | DMUL 111011 ..... ..... ..... 0000100010 . @X_rc | |
404 | DMULQ 111111 ..... ..... ..... 0000100010 . @X_tp_ap_bp_rc | |
405 | ||
406 | DDIV 111011 ..... ..... ..... 1000100010 . @X_rc | |
407 | DDIVQ 111111 ..... ..... ..... 1000100010 . @X_tp_ap_bp_rc | |
408 | ||
85c38a46 LP |
409 | ### Decimal Floating-Point Compare Instructions |
410 | ||
411 | DCMPU 111011 ... -- ..... ..... 1010000010 - @X_bf | |
412 | DCMPUQ 111111 ... -- ..... ..... 1010000010 - @X_bf_ap_bp | |
413 | ||
414 | DCMPO 111011 ... -- ..... ..... 0010000010 - @X_bf | |
415 | DCMPOQ 111111 ... -- ..... ..... 0010000010 - @X_bf_ap_bp | |
416 | ||
87bc8e52 LP |
417 | ### Decimal Floating-Point Test Instructions |
418 | ||
419 | DTSTDC 111011 ... -- ..... ...... 011000010 - @Z22_bf_fra | |
420 | DTSTDCQ 111111 ... -- ..... ...... 011000010 - @Z22_bf_frap | |
421 | ||
422 | DTSTDG 111011 ... -- ..... ...... 011100010 - @Z22_bf_fra | |
423 | DTSTDGQ 111111 ... -- ..... ...... 011100010 - @Z22_bf_frap | |
424 | ||
85c38a46 LP |
425 | DTSTEX 111011 ... -- ..... ..... 0010100010 - @X_bf |
426 | DTSTEXQ 111111 ... -- ..... ..... 0010100010 - @X_bf_ap_bp | |
427 | ||
428 | DTSTSF 111011 ... -- ..... ..... 1010100010 - @X_bf | |
429 | DTSTSFQ 111111 ... -- ..... ..... 1010100010 - @X_bf_a_bp | |
430 | ||
431 | DTSTSFI 111011 ... - ...... ..... 1010100011 - @X_bf_uim | |
432 | DTSTSFIQ 111111 ... - ...... ..... 1010100011 - @X_bf_uim_bp | |
433 | ||
78464edb LP |
434 | ### Decimal Floating-Point Quantum Adjustment Instructions |
435 | ||
436 | DQUAI 111011 ..... ..... ..... .. 01000011 . @Z23_te_tb | |
437 | DQUAIQ 111111 ..... ..... ..... .. 01000011 . @Z23_te_tbp | |
438 | ||
a8f4bce6 LP |
439 | DQUA 111011 ..... ..... ..... .. 00000011 . @Z23_tab |
440 | DQUAQ 111111 ..... ..... ..... .. 00000011 . @Z23_tabp | |
441 | ||
442 | DRRND 111011 ..... ..... ..... .. 00100011 . @Z23_tab | |
443 | DRRNDQ 111111 ..... ..... ..... .. 00100011 . @Z23_tp_a_bp | |
444 | ||
78464edb LP |
445 | DRINTX 111011 ..... ---- . ..... .. 01100011 . @Z23_tb |
446 | DRINTXQ 111111 ..... ---- . ..... .. 01100011 . @Z23_tbp | |
447 | ||
448 | DRINTN 111011 ..... ---- . ..... .. 11100011 . @Z23_tb | |
449 | DRINTNQ 111111 ..... ---- . ..... .. 11100011 . @Z23_tbp | |
450 | ||
d39b2cc7 LP |
451 | ### Decimal Floating-Point Conversion Instructions |
452 | ||
c8ef4d1e LP |
453 | DCTDP 111011 ..... ----- ..... 0100000010 . @X_tb_rc |
454 | DCTQPQ 111111 ..... ----- ..... 0100000010 . @X_tp_b_rc | |
455 | ||
456 | DRSP 111011 ..... ----- ..... 1100000010 . @X_tb_rc | |
457 | DRDPQ 111111 ..... ----- ..... 1100000010 . @X_tbp_rc | |
458 | ||
459 | DCFFIX 111011 ..... ----- ..... 1100100010 . @X_tb_rc | |
460 | DCFFIXQ 111111 ..... ----- ..... 1100100010 . @X_tp_b_rc | |
d39b2cc7 | 461 | DCFFIXQQ 111111 ..... 00000 ..... 1111100010 - @X_frtp_vrb |
c8ef4d1e LP |
462 | |
463 | DCTFIX 111011 ..... ----- ..... 0100100010 . @X_tb_rc | |
464 | DCTFIXQ 111111 ..... ----- ..... 0100100010 . @X_t_bp_rc | |
328747f3 | 465 | DCTFIXQQ 111111 ..... 00001 ..... 1111100010 - @X_vrt_frbp |
d39b2cc7 | 466 | |
afdc9310 LP |
467 | ### Decimal Floating-Point Format Instructions |
468 | ||
a2329747 LP |
469 | DDEDPD 111011 ..... .. --- ..... 0101000010 . @X_tb_sp_rc |
470 | DDEDPDQ 111111 ..... .. --- ..... 0101000010 . @X_tbp_sp_rc | |
471 | ||
472 | DENBCD 111011 ..... . ---- ..... 1101000010 . @X_tb_s_rc | |
473 | DENBCDQ 111111 ..... . ---- ..... 1101000010 . @X_tbp_s_rc | |
474 | ||
c8ef4d1e LP |
475 | DXEX 111011 ..... ----- ..... 0101100010 . @X_tb_rc |
476 | DXEXQ 111111 ..... ----- ..... 0101100010 . @X_t_bp_rc | |
477 | ||
afdc9310 LP |
478 | DIEX 111011 ..... ..... ..... 1101100010 . @X_rc |
479 | DIEXQ 111111 ..... ..... ..... 1101100010 . @X_tp_a_bp_rc | |
480 | ||
a2329747 LP |
481 | DSCLI 111011 ..... ..... ...... 001000010 . @Z22_ta_sh_rc |
482 | DSCLIQ 111111 ..... ..... ...... 001000010 . @Z22_tap_sh_rc | |
483 | ||
484 | DSCRI 111011 ..... ..... ...... 001100010 . @Z22_ta_sh_rc | |
485 | DSCRIQ 111111 ..... ..... ...... 001100010 . @Z22_tap_sh_rc | |
486 | ||
e82ca8ac MF |
487 | ## Vector Exclusive-OR-based Instructions |
488 | ||
489 | VPMSUMD 000100 ..... ..... ..... 10011001000 @VX | |
490 | ||
6a394290 MF |
491 | ## Vector Integer Instructions |
492 | ||
493 | VCMPEQUB 000100 ..... ..... ..... . 0000000110 @VC | |
494 | VCMPEQUH 000100 ..... ..... ..... . 0001000110 @VC | |
495 | VCMPEQUW 000100 ..... ..... ..... . 0010000110 @VC | |
496 | VCMPEQUD 000100 ..... ..... ..... . 0011000111 @VC | |
7b3da08e | 497 | VCMPEQUQ 000100 ..... ..... ..... . 0111000111 @VC |
6a394290 MF |
498 | |
499 | VCMPGTSB 000100 ..... ..... ..... . 1100000110 @VC | |
500 | VCMPGTSH 000100 ..... ..... ..... . 1101000110 @VC | |
501 | VCMPGTSW 000100 ..... ..... ..... . 1110000110 @VC | |
502 | VCMPGTSD 000100 ..... ..... ..... . 1111000111 @VC | |
50449ae4 | 503 | VCMPGTSQ 000100 ..... ..... ..... . 1110000111 @VC |
6a394290 MF |
504 | |
505 | VCMPGTUB 000100 ..... ..... ..... . 1000000110 @VC | |
506 | VCMPGTUH 000100 ..... ..... ..... . 1001000110 @VC | |
507 | VCMPGTUW 000100 ..... ..... ..... . 1010000110 @VC | |
508 | VCMPGTUD 000100 ..... ..... ..... . 1011000111 @VC | |
50449ae4 | 509 | VCMPGTUQ 000100 ..... ..... ..... . 1010000111 @VC |
6a394290 MF |
510 | |
511 | VCMPNEB 000100 ..... ..... ..... . 0000000111 @VC | |
512 | VCMPNEH 000100 ..... ..... ..... . 0001000111 @VC | |
513 | VCMPNEW 000100 ..... ..... ..... . 0010000111 @VC | |
514 | ||
eb936dc0 MF |
515 | VCMPNEZB 000100 ..... ..... ..... . 0100000111 @VC |
516 | VCMPNEZH 000100 ..... ..... ..... . 0101000111 @VC | |
517 | VCMPNEZW 000100 ..... ..... ..... . 0110000111 @VC | |
518 | ||
b58f3931 MF |
519 | VCMPSQ 000100 ... -- ..... ..... 00101000001 @VX_bf |
520 | VCMPUQ 000100 ... -- ..... ..... 00100000001 @VX_bf | |
521 | ||
a5f56954 MF |
522 | ## Vector Bit Manipulation Instruction |
523 | ||
f622ebe7 MF |
524 | VGNB 000100 ..... -- ... ..... 10011001100 @VX_n |
525 | ||
a5f56954 | 526 | VCFUGED 000100 ..... ..... ..... 10101001101 @VX |
a2c975e1 MF |
527 | VCLZDM 000100 ..... ..... ..... 11110000100 @VX |
528 | VCTZDM 000100 ..... ..... ..... 11111000100 @VX | |
00a16569 MF |
529 | VPDEPD 000100 ..... ..... ..... 10111001101 @VX |
530 | VPEXTD 000100 ..... ..... ..... 10110001101 @VX | |
2c716b4d MF |
531 | |
532 | ## Vector Permute and Formatting Instruction | |
533 | ||
28110b72 MF |
534 | VEXTDUBVLX 000100 ..... ..... ..... ..... 011000 @VA |
535 | VEXTDUBVRX 000100 ..... ..... ..... ..... 011001 @VA | |
536 | VEXTDUHVLX 000100 ..... ..... ..... ..... 011010 @VA | |
537 | VEXTDUHVRX 000100 ..... ..... ..... ..... 011011 @VA | |
538 | VEXTDUWVLX 000100 ..... ..... ..... ..... 011100 @VA | |
539 | VEXTDUWVRX 000100 ..... ..... ..... ..... 011101 @VA | |
540 | VEXTDDVLX 000100 ..... ..... ..... ..... 011110 @VA | |
541 | VEXTDDVRX 000100 ..... ..... ..... ..... 011111 @VA | |
542 | ||
b422c2cb MF |
543 | VINSERTB 000100 ..... - .... ..... 01100001101 @VX_uim4 |
544 | VINSERTH 000100 ..... - .... ..... 01101001101 @VX_uim4 | |
545 | VINSERTW 000100 ..... - .... ..... 01110001101 @VX_uim4 | |
546 | VINSERTD 000100 ..... - .... ..... 01111001101 @VX_uim4 | |
547 | ||
2cc12af3 MF |
548 | VINSBLX 000100 ..... ..... ..... 01000001111 @VX |
549 | VINSBRX 000100 ..... ..... ..... 01100001111 @VX | |
550 | VINSHLX 000100 ..... ..... ..... 01001001111 @VX | |
551 | VINSHRX 000100 ..... ..... ..... 01101001111 @VX | |
552 | VINSWLX 000100 ..... ..... ..... 01010001111 @VX | |
553 | VINSWRX 000100 ..... ..... ..... 01110001111 @VX | |
554 | VINSDLX 000100 ..... ..... ..... 01011001111 @VX | |
555 | VINSDRX 000100 ..... ..... ..... 01111001111 @VX | |
556 | ||
23832ae6 MF |
557 | VINSW 000100 ..... - .... ..... 00011001111 @VX_uim4 |
558 | VINSD 000100 ..... - .... ..... 00111001111 @VX_uim4 | |
559 | ||
2c9f7958 MF |
560 | VINSBVLX 000100 ..... ..... ..... 00000001111 @VX |
561 | VINSBVRX 000100 ..... ..... ..... 00100001111 @VX | |
562 | VINSHVLX 000100 ..... ..... ..... 00001001111 @VX | |
563 | VINSHVRX 000100 ..... ..... ..... 00101001111 @VX | |
564 | VINSWVLX 000100 ..... ..... ..... 00010001111 @VX | |
565 | VINSWVRX 000100 ..... ..... ..... 00110001111 @VX | |
566 | ||
2c716b4d MF |
567 | VSLDBI 000100 ..... ..... ..... 00 ... 010110 @VN |
568 | VSRDBI 000100 ..... ..... ..... 01 ... 010110 @VN | |
72b70d5c | 569 | |
28347fe2 MF |
570 | VPERM 000100 ..... ..... ..... ..... 101011 @VA |
571 | VPERMR 000100 ..... ..... ..... ..... 111011 @VA | |
572 | ||
573 | VSEL 000100 ..... ..... ..... ..... 101010 @VA | |
574 | ||
0f052007 MF |
575 | ## Vector Integer Shift Instruction |
576 | ||
577 | VSLB 000100 ..... ..... ..... 00100000100 @VX | |
578 | VSLH 000100 ..... ..... ..... 00101000100 @VX | |
579 | VSLW 000100 ..... ..... ..... 00110000100 @VX | |
580 | VSLD 000100 ..... ..... ..... 10111000100 @VX | |
3e39edb6 | 581 | VSLQ 000100 ..... ..... ..... 00100000101 @VX |
0f052007 MF |
582 | |
583 | VSRB 000100 ..... ..... ..... 01000000100 @VX | |
584 | VSRH 000100 ..... ..... ..... 01001000100 @VX | |
585 | VSRW 000100 ..... ..... ..... 01010000100 @VX | |
586 | VSRD 000100 ..... ..... ..... 11011000100 @VX | |
946c3491 | 587 | VSRQ 000100 ..... ..... ..... 01000000101 @VX |
0f052007 MF |
588 | |
589 | VSRAB 000100 ..... ..... ..... 01100000100 @VX | |
590 | VSRAH 000100 ..... ..... ..... 01101000100 @VX | |
591 | VSRAW 000100 ..... ..... ..... 01110000100 @VX | |
592 | VSRAD 000100 ..... ..... ..... 01111000100 @VX | |
85085bbc | 593 | VSRAQ 000100 ..... ..... ..... 01100000101 @VX |
0f052007 | 594 | |
df489ad6 MF |
595 | VRLB 000100 ..... ..... ..... 00000000100 @VX |
596 | VRLH 000100 ..... ..... ..... 00001000100 @VX | |
597 | VRLW 000100 ..... ..... ..... 00010000100 @VX | |
598 | VRLD 000100 ..... ..... ..... 00011000100 @VX | |
aa0f34ec | 599 | VRLQ 000100 ..... ..... ..... 00000000101 @VX |
df489ad6 | 600 | |
02c74f0e MF |
601 | VRLWMI 000100 ..... ..... ..... 00010000101 @VX |
602 | VRLDMI 000100 ..... ..... ..... 00011000101 @VX | |
7e5947df | 603 | VRLQMI 000100 ..... ..... ..... 00001000101 @VX |
02c74f0e MF |
604 | |
605 | VRLWNM 000100 ..... ..... ..... 00110000101 @VX | |
606 | VRLDNM 000100 ..... ..... ..... 00111000101 @VX | |
4e272668 | 607 | VRLQNM 000100 ..... ..... ..... 00101000101 @VX |
02c74f0e | 608 | |
9bfe9213 LC |
609 | ## Vector Integer Arithmetic Instructions |
610 | ||
8290ea50 | 611 | VADDCUQ 000100 ..... ..... ..... 00101000000 @VX |
7ca04286 MF |
612 | VADDUQM 000100 ..... ..... ..... 00100000000 @VX |
613 | ||
896d92c8 MF |
614 | VADDEUQM 000100 ..... ..... ..... ..... 111100 @VA |
615 | VADDECUQ 000100 ..... ..... ..... ..... 111101 @VA | |
616 | ||
b7d30fae | 617 | VSUBCUQ 000100 ..... ..... ..... 10101000000 @VX |
b132be53 MF |
618 | VSUBUQM 000100 ..... ..... ..... 10100000000 @VX |
619 | ||
e6a5ad43 MF |
620 | VSUBECUQ 000100 ..... ..... ..... ..... 111111 @VA |
621 | VSUBEUQM 000100 ..... ..... ..... ..... 111110 @VA | |
622 | ||
9bfe9213 LC |
623 | VEXTSB2W 000100 ..... 10000 ..... 11000000010 @VX_tb |
624 | VEXTSH2W 000100 ..... 10001 ..... 11000000010 @VX_tb | |
625 | VEXTSB2D 000100 ..... 11000 ..... 11000000010 @VX_tb | |
626 | VEXTSH2D 000100 ..... 11001 ..... 11000000010 @VX_tb | |
627 | VEXTSW2D 000100 ..... 11010 ..... 11000000010 @VX_tb | |
acf43b34 | 628 | VEXTSD2Q 000100 ..... 11011 ..... 11000000010 @VX_tb |
9bfe9213 | 629 | |
5f1470b0 MF |
630 | ## Vector Mask Manipulation Instructions |
631 | ||
9193eaa9 MF |
632 | MTVSRBM 000100 ..... 10000 ..... 11001000010 @VX_tb |
633 | MTVSRHM 000100 ..... 10001 ..... 11001000010 @VX_tb | |
634 | MTVSRWM 000100 ..... 10010 ..... 11001000010 @VX_tb | |
635 | MTVSRDM 000100 ..... 10011 ..... 11001000010 @VX_tb | |
636 | MTVSRQM 000100 ..... 10100 ..... 11001000010 @VX_tb | |
637 | MTVSRBMI 000100 ..... ..... .......... 01010 . @DX_b | |
638 | ||
5f1470b0 MF |
639 | VEXPANDBM 000100 ..... 00000 ..... 11001000010 @VX_tb |
640 | VEXPANDHM 000100 ..... 00001 ..... 11001000010 @VX_tb | |
641 | VEXPANDWM 000100 ..... 00010 ..... 11001000010 @VX_tb | |
642 | VEXPANDDM 000100 ..... 00011 ..... 11001000010 @VX_tb | |
643 | VEXPANDQM 000100 ..... 00100 ..... 11001000010 @VX_tb | |
644 | ||
17868d81 MF |
645 | VEXTRACTBM 000100 ..... 01000 ..... 11001000010 @VX_tb |
646 | VEXTRACTHM 000100 ..... 01001 ..... 11001000010 @VX_tb | |
647 | VEXTRACTWM 000100 ..... 01010 ..... 11001000010 @VX_tb | |
648 | VEXTRACTDM 000100 ..... 01011 ..... 11001000010 @VX_tb | |
649 | VEXTRACTQM 000100 ..... 01100 ..... 11001000010 @VX_tb | |
650 | ||
95f1ee28 MF |
651 | VCNTMBB 000100 ..... 1100 . ..... 11001000010 @VX_mp |
652 | VCNTMBH 000100 ..... 1101 . ..... 11001000010 @VX_mp | |
653 | VCNTMBW 000100 ..... 1110 . ..... 11001000010 @VX_mp | |
654 | VCNTMBD 000100 ..... 1111 . ..... 11001000010 @VX_mp | |
655 | ||
80eca687 LMC |
656 | ## Vector Multiply Instruction |
657 | ||
658 | VMULESB 000100 ..... ..... ..... 01100001000 @VX | |
659 | VMULOSB 000100 ..... ..... ..... 00100001000 @VX | |
660 | VMULEUB 000100 ..... ..... ..... 01000001000 @VX | |
661 | VMULOUB 000100 ..... ..... ..... 00000001000 @VX | |
662 | ||
663 | VMULESH 000100 ..... ..... ..... 01101001000 @VX | |
664 | VMULOSH 000100 ..... ..... ..... 00101001000 @VX | |
665 | VMULEUH 000100 ..... ..... ..... 01001001000 @VX | |
666 | VMULOUH 000100 ..... ..... ..... 00001001000 @VX | |
667 | ||
668 | VMULESW 000100 ..... ..... ..... 01110001000 @VX | |
669 | VMULOSW 000100 ..... ..... ..... 00110001000 @VX | |
670 | VMULEUW 000100 ..... ..... ..... 01010001000 @VX | |
671 | VMULOUW 000100 ..... ..... ..... 00010001000 @VX | |
672 | ||
673 | VMULESD 000100 ..... ..... ..... 01111001000 @VX | |
674 | VMULOSD 000100 ..... ..... ..... 00111001000 @VX | |
675 | VMULEUD 000100 ..... ..... ..... 01011001000 @VX | |
676 | VMULOUD 000100 ..... ..... ..... 00011001000 @VX | |
677 | ||
d45da014 LMC |
678 | VMULHSW 000100 ..... ..... ..... 01110001001 @VX |
679 | VMULHUW 000100 ..... ..... ..... 01010001001 @VX | |
680 | VMULHSD 000100 ..... ..... ..... 01111001001 @VX | |
681 | VMULHUD 000100 ..... ..... ..... 01011001001 @VX | |
682 | VMULLD 000100 ..... ..... ..... 00111001001 @VX | |
683 | ||
5476ef1d VC |
684 | ## Vector Multiply-Sum Instructions |
685 | ||
b2dc03a5 MF |
686 | VMSUMUBM 000100 ..... ..... ..... ..... 100100 @VA |
687 | VMSUMMBM 000100 ..... ..... ..... ..... 100101 @VA | |
6f52f731 MF |
688 | VMSUMSHM 000100 ..... ..... ..... ..... 101000 @VA |
689 | VMSUMSHS 000100 ..... ..... ..... ..... 101001 @VA | |
89a5a1ae MF |
690 | VMSUMUHM 000100 ..... ..... ..... ..... 100110 @VA |
691 | VMSUMUHS 000100 ..... ..... ..... ..... 100111 @VA | |
b2dc03a5 | 692 | |
5476ef1d | 693 | VMSUMCUD 000100 ..... ..... ..... ..... 010111 @VA |
536f9876 | 694 | VMSUMUDM 000100 ..... ..... ..... ..... 100011 @VA |
5476ef1d | 695 | |
fb5303cc MF |
696 | ## Vector String Instructions |
697 | ||
698 | VSTRIBL 000100 ..... 00000 ..... . 0000001101 @VX_tb_rc | |
699 | VSTRIBR 000100 ..... 00001 ..... . 0000001101 @VX_tb_rc | |
700 | VSTRIHL 000100 ..... 00010 ..... . 0000001101 @VX_tb_rc | |
701 | VSTRIHR 000100 ..... 00011 ..... . 0000001101 @VX_tb_rc | |
702 | ||
08d512e1 | 703 | VCLRLB 000100 ..... ..... ..... 00110001101 @VX |
fb1b5675 | 704 | VCLRRB 000100 ..... ..... ..... 00111001101 @VX |
08d512e1 | 705 | |
72b70d5c LMC |
706 | # VSX Load/Store Instructions |
707 | ||
7eec8cbb LL |
708 | LXSD 111001 ..... ..... .............. 10 @DS |
709 | STXSD 111101 ..... ..... .............. 10 @DS | |
20e2d04e LL |
710 | LXSSP 111001 ..... ..... .............. 11 @DS |
711 | STXSSP 111101 ..... ..... .............. 11 @DS | |
72b70d5c LMC |
712 | LXV 111101 ..... ..... ............ . 001 @DQ_TSX |
713 | STXV 111101 ..... ..... ............ . 101 @DQ_TSX | |
96fa2632 LMC |
714 | LXVP 000110 ..... ..... ............ 0000 @DQ_TSXP |
715 | STXVP 000110 ..... ..... ............ 0001 @DQ_TSXP | |
70426b5b LMC |
716 | LXVX 011111 ..... ..... ..... 0100 - 01100 . @X_TSX |
717 | STXVX 011111 ..... ..... ..... 0110001100 . @X_TSX | |
226ce506 LMC |
718 | LXVPX 011111 ..... ..... ..... 0101001101 - @X_TSXP |
719 | STXVPX 011111 ..... ..... ..... 0111001101 - @X_TSXP | |
604d00c7 LC |
720 | LXVRBX 011111 ..... ..... ..... 0000001101 . @X_TSX |
721 | LXVRHX 011111 ..... ..... ..... 0000101101 . @X_TSX | |
722 | LXVRWX 011111 ..... ..... ..... 0001001101 . @X_TSX | |
723 | LXVRDX 011111 ..... ..... ..... 0001101101 . @X_TSX | |
724 | STXVRBX 011111 ..... ..... ..... 0010001101 . @X_TSX | |
725 | STXVRHX 011111 ..... ..... ..... 0010101101 . @X_TSX | |
726 | STXVRWX 011111 ..... ..... ..... 0011001101 . @X_TSX | |
727 | STXVRDX 011111 ..... ..... ..... 0011101101 . @X_TSX | |
30dfca8d | 728 | |
e4318ab2 MF |
729 | ## VSX Scalar Multiply-Add Instructions |
730 | ||
731 | XSMADDADP 111100 ..... ..... ..... 00100001 . . . @XX3 | |
732 | XSMADDMDP 111100 ..... ..... ..... 00101001 . . . @XX3 | |
733 | XSMADDASP 111100 ..... ..... ..... 00000001 . . . @XX3 | |
734 | XSMADDMSP 111100 ..... ..... ..... 00001001 . . . @XX3 | |
3bb1aed2 | 735 | XSMADDQP 111111 ..... ..... ..... 0110000100 . @X_rc |
e4318ab2 MF |
736 | |
737 | XSMSUBADP 111100 ..... ..... ..... 00110001 . . . @XX3 | |
738 | XSMSUBMDP 111100 ..... ..... ..... 00111001 . . . @XX3 | |
739 | XSMSUBASP 111100 ..... ..... ..... 00010001 . . . @XX3 | |
740 | XSMSUBMSP 111100 ..... ..... ..... 00011001 . . . @XX3 | |
3bb1aed2 | 741 | XSMSUBQP 111111 ..... ..... ..... 0110100100 . @X_rc |
e4318ab2 MF |
742 | |
743 | XSNMADDASP 111100 ..... ..... ..... 10000001 . . . @XX3 | |
744 | XSNMADDMSP 111100 ..... ..... ..... 10001001 . . . @XX3 | |
745 | XSNMADDADP 111100 ..... ..... ..... 10100001 . . . @XX3 | |
746 | XSNMADDMDP 111100 ..... ..... ..... 10101001 . . . @XX3 | |
3bb1aed2 | 747 | XSNMADDQP 111111 ..... ..... ..... 0111000100 . @X_rc |
e4318ab2 MF |
748 | |
749 | XSNMSUBASP 111100 ..... ..... ..... 10010001 . . . @XX3 | |
750 | XSNMSUBMSP 111100 ..... ..... ..... 10011001 . . . @XX3 | |
751 | XSNMSUBADP 111100 ..... ..... ..... 10110001 . . . @XX3 | |
752 | XSNMSUBMDP 111100 ..... ..... ..... 10111001 . . . @XX3 | |
3bb1aed2 | 753 | XSNMSUBQP 111111 ..... ..... ..... 0111100100 . @X_rc |
e4318ab2 | 754 | |
30dfca8d BL |
755 | ## VSX splat instruction |
756 | ||
6166fced | 757 | XXSPLTIB 111100 ..... 00 ........ 0101101000 . @X_imm8 |
3909ff1f | 758 | XXSPLTW 111100 ..... ---.. ..... 010100100 . . @XX2_uim2 |
6e26b85d | 759 | |
6a94bf19 MF |
760 | ## VSX Permute Instructions |
761 | ||
8f5eeee3 MF |
762 | XXEXTRACTUW 111100 ..... - .... ..... 010100101 .. @XX2_uim4 |
763 | XXINSERTW 111100 ..... - .... ..... 010110101 .. @XX2_uim4 | |
764 | ||
6a94bf19 MF |
765 | XXPERM 111100 ..... ..... ..... 00011010 ... @XX3 |
766 | XXPERMR 111100 ..... ..... ..... 00111010 ... @XX3 | |
d31b2c19 | 767 | XXPERMDI 111100 ..... ..... ..... 0 .. 01010 ... @XX3_dm |
6a94bf19 | 768 | |
43d55fc2 MF |
769 | XXSEL 111100 ..... ..... ..... ..... 11 .... @XX4 |
770 | ||
b090f4f1 MF |
771 | ## VSX Vector Generate PCV |
772 | ||
773 | XXGENPCVBM 111100 ..... ..... ..... 1110010100 . @X_imm5 | |
774 | XXGENPCVHM 111100 ..... ..... ..... 1110010101 . @X_imm5 | |
775 | XXGENPCVWM 111100 ..... ..... ..... 1110110100 . @X_imm5 | |
776 | XXGENPCVDM 111100 ..... ..... ..... 1110110101 . @X_imm5 | |
777 | ||
6e26b85d MF |
778 | ## VSX Vector Load Special Value Instruction |
779 | ||
780 | LXVKQ 111100 ..... 11111 ..... 0101101000 . @X_uim5 | |
c5df1898 VC |
781 | |
782 | ## VSX Comparison Instructions | |
783 | ||
784 | XSMAXCDP 111100 ..... ..... ..... 10000000 ... @XX3 | |
785 | XSMINCDP 111100 ..... ..... ..... 10001000 ... @XX3 | |
786 | XSMAXJDP 111100 ..... ..... ..... 10010000 ... @XX3 | |
787 | XSMINJDP 111100 ..... ..... ..... 10011000 ... @XX3 | |
7b8d6e3e VC |
788 | XSMAXCQP 111111 ..... ..... ..... 1010100100 - @X |
789 | XSMINCQP 111111 ..... ..... ..... 1011100100 - @X | |
790 | ||
72d24354 VC |
791 | XSCMPEQDP 111100 ..... ..... ..... 00000011 ... @XX3 |
792 | XSCMPGEDP 111100 ..... ..... ..... 00010011 ... @XX3 | |
793 | XSCMPGTDP 111100 ..... ..... ..... 00001011 ... @XX3 | |
568e7c4d VC |
794 | XSCMPEQQP 111111 ..... ..... ..... 0001000100 - @X |
795 | XSCMPGEQP 111111 ..... ..... ..... 0011000100 - @X | |
796 | XSCMPGTQP 111111 ..... ..... ..... 0011100100 - @X | |
caf6f9b5 MF |
797 | |
798 | ## VSX Binary Floating-Point Convert Instructions | |
799 | ||
800 | XSCVQPDP 111111 ..... 10100 ..... 1101000100 . @X_tb_rc | |
b3d45205 MF |
801 | XSCVQPUQZ 111111 ..... 00000 ..... 1101000100 - @X_tb |
802 | XSCVQPSQZ 111111 ..... 01000 ..... 1101000100 - @X_tb | |
67332e07 MF |
803 | XSCVUQQP 111111 ..... 00011 ..... 1101000100 - @X_tb |
804 | XSCVSQQP 111111 ..... 01011 ..... 1101000100 - @X_tb | |
3909ff1f VC |
805 | XVCVBF16SPN 111100 ..... 10000 ..... 111011011 .. @XX2 |
806 | XVCVSPBF16 111100 ..... 10001 ..... 111011011 .. @XX2 | |
cf862bee | 807 | XSCVSPDPN 111100 ..... ----- ..... 101001011 .. @XX2 |
1f26c751 | 808 | |
c36ab970 MF |
809 | ## VSX Binary Floating-Point Math Support Instructions |
810 | ||
811 | XVXSIGSP 111100 ..... 01001 ..... 111011011 .. @XX2 | |
812 | ||
d518239b VC |
813 | ## VSX Vector Test Least-Significant Bit by Byte Instruction |
814 | ||
815 | XVTLSBB 111100 ... -- 00010 ..... 111011011 . - @XX2_bf_xb | |
816 | ||
1f26c751 DHB |
817 | ### rfebb |
818 | &XL_s s:uint8_t | |
819 | @XL_s ......-------------- s:1 .......... - &XL_s | |
820 | RFEBB 010011-------------- . 0010010010 - @XL_s | |
a702c533 LMC |
821 | |
822 | ## Accumulator Instructions | |
823 | ||
824 | XXMFACC 011111 ... -- 00000 ----- 0010110001 - @X_a | |
825 | XXMTACC 011111 ... -- 00001 ----- 0010110001 - @X_a | |
826 | XXSETACCZ 011111 ... -- 00011 ----- 0010110001 - @X_a | |
34553153 LMC |
827 | |
828 | ## VSX GER instruction | |
829 | ||
830 | XVI4GER8 111011 ... -- ..... ..... 00100011 ..- @XX3_at xa=%xx_xa | |
831 | XVI4GER8PP 111011 ... -- ..... ..... 00100010 ..- @XX3_at xa=%xx_xa | |
832 | XVI8GER4 111011 ... -- ..... ..... 00000011 ..- @XX3_at xa=%xx_xa | |
833 | XVI8GER4PP 111011 ... -- ..... ..... 00000010 ..- @XX3_at xa=%xx_xa | |
834 | XVI16GER2 111011 ... -- ..... ..... 01001011 ..- @XX3_at xa=%xx_xa | |
835 | XVI16GER2PP 111011 ... -- ..... ..... 01101011 ..- @XX3_at xa=%xx_xa | |
836 | XVI8GER4SPP 111011 ... -- ..... ..... 01100011 ..- @XX3_at xa=%xx_xa | |
837 | XVI16GER2S 111011 ... -- ..... ..... 00101011 ..- @XX3_at xa=%xx_xa | |
838 | XVI16GER2SPP 111011 ... -- ..... ..... 00101010 ..- @XX3_at xa=%xx_xa | |
c29018cc | 839 | |
5724e131 LMC |
840 | XVBF16GER2 111011 ... -- ..... ..... 00110011 ..- @XX3_at xa=%xx_xa |
841 | XVBF16GER2PP 111011 ... -- ..... ..... 00110010 ..- @XX3_at xa=%xx_xa | |
842 | XVBF16GER2PN 111011 ... -- ..... ..... 10110010 ..- @XX3_at xa=%xx_xa | |
843 | XVBF16GER2NP 111011 ... -- ..... ..... 01110010 ..- @XX3_at xa=%xx_xa | |
844 | XVBF16GER2NN 111011 ... -- ..... ..... 11110010 ..- @XX3_at xa=%xx_xa | |
845 | ||
2d9cba74 LMC |
846 | XVF16GER2 111011 ... -- ..... ..... 00010011 ..- @XX3_at xa=%xx_xa |
847 | XVF16GER2PP 111011 ... -- ..... ..... 00010010 ..- @XX3_at xa=%xx_xa | |
848 | XVF16GER2PN 111011 ... -- ..... ..... 10010010 ..- @XX3_at xa=%xx_xa | |
849 | XVF16GER2NP 111011 ... -- ..... ..... 01010010 ..- @XX3_at xa=%xx_xa | |
850 | XVF16GER2NN 111011 ... -- ..... ..... 11010010 ..- @XX3_at xa=%xx_xa | |
851 | ||
c29018cc LMC |
852 | XVF32GER 111011 ... -- ..... ..... 00011011 ..- @XX3_at xa=%xx_xa |
853 | XVF32GERPP 111011 ... -- ..... ..... 00011010 ..- @XX3_at xa=%xx_xa | |
854 | XVF32GERPN 111011 ... -- ..... ..... 10011010 ..- @XX3_at xa=%xx_xa | |
855 | XVF32GERNP 111011 ... -- ..... ..... 01011010 ..- @XX3_at xa=%xx_xa | |
856 | XVF32GERNN 111011 ... -- ..... ..... 11011010 ..- @XX3_at xa=%xx_xa | |
857 | ||
858 | XVF64GER 111011 ... -- .... 0 ..... 00111011 ..- @XX3_at xa=%xx_xa_pair | |
859 | XVF64GERPP 111011 ... -- .... 0 ..... 00111010 ..- @XX3_at xa=%xx_xa_pair | |
860 | XVF64GERPN 111011 ... -- .... 0 ..... 10111010 ..- @XX3_at xa=%xx_xa_pair | |
861 | XVF64GERNP 111011 ... -- .... 0 ..... 01111010 ..- @XX3_at xa=%xx_xa_pair | |
862 | XVF64GERNN 111011 ... -- .... 0 ..... 11111010 ..- @XX3_at xa=%xx_xa_pair | |
61f30261 LMC |
863 | |
864 | ## Vector Division Instructions | |
865 | ||
866 | VDIVSW 000100 ..... ..... ..... 00110001011 @VX | |
867 | VDIVUW 000100 ..... ..... ..... 00010001011 @VX | |
868 | VDIVSD 000100 ..... ..... ..... 00111001011 @VX | |
869 | VDIVUD 000100 ..... ..... ..... 00011001011 @VX | |
1700f2bf LMC |
870 | VDIVSQ 000100 ..... ..... ..... 00100001011 @VX |
871 | VDIVUQ 000100 ..... ..... ..... 00000001011 @VX | |
9a1f0866 LMC |
872 | |
873 | VDIVESW 000100 ..... ..... ..... 01110001011 @VX | |
874 | VDIVEUW 000100 ..... ..... ..... 01010001011 @VX | |
a173ba88 LMC |
875 | VDIVESD 000100 ..... ..... ..... 01111001011 @VX |
876 | VDIVEUD 000100 ..... ..... ..... 01011001011 @VX | |
877 | VDIVESQ 000100 ..... ..... ..... 01100001011 @VX | |
878 | VDIVEUQ 000100 ..... ..... ..... 01000001011 @VX | |
5adb27cd LMC |
879 | |
880 | VMODSW 000100 ..... ..... ..... 11110001011 @VX | |
881 | VMODUW 000100 ..... ..... ..... 11010001011 @VX | |
882 | VMODSD 000100 ..... ..... ..... 11111001011 @VX | |
883 | VMODUD 000100 ..... ..... ..... 11011001011 @VX | |
b80bec3a LMC |
884 | VMODSQ 000100 ..... ..... ..... 11100001011 @VX |
885 | VMODUQ 000100 ..... ..... ..... 11000001011 @VX | |
016b6e1d | 886 | |
43507e47 LC |
887 | ## SLB Management Instructions |
888 | ||
889 | SLBIE 011111 ----- ----- ..... 0110110010 - @X_rb | |
a1b05c06 | 890 | SLBIEG 011111 ..... ----- ..... 0111010010 - @X_tb |
43507e47 | 891 | |
2bfcb7a3 | 892 | SLBIA 011111 --... ----- ----- 0111110010 - @X_ih |
491a2553 | 893 | SLBIAG 011111 ..... ----. ----- 1101010010 - @X_rs_l |
2bfcb7a3 | 894 | |
0b0ba40f LC |
895 | SLBMTE 011111 ..... ----- ..... 0110010010 - @X_tb |
896 | ||
74a15384 | 897 | SLBMFEV 011111 ..... ----- ..... 1101010011 - @X_tb |
41b60e46 | 898 | SLBMFEE 011111 ..... ----- ..... 1110010011 - @X_tb |
74a15384 | 899 | |
26d02c9d LC |
900 | SLBFEE 011111 ..... ----- ..... 1111010011 1 @X_tb |
901 | ||
acc130cf LC |
902 | SLBSYNC 011111 ----- ----- ----- 0101010010 - |
903 | ||
016b6e1d LL |
904 | ## TLB Management Instructions |
905 | ||
906 | &X_tlbie rb rs ric prs:bool r:bool | |
907 | @X_tlbie ...... rs:5 - ric:2 prs:1 r:1 rb:5 .......... - &X_tlbie | |
908 | ||
909 | TLBIE 011111 ..... - .. . . ..... 0100110010 - @X_tlbie | |
910 | TLBIEL 011111 ..... - .. . . ..... 0100010010 - @X_tlbie |