| 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 | # |
| 19 | |
| 20 | &A frt fra frb frc rc:bool |
| 21 | @A ...... frt:5 fra:5 frb:5 frc:5 ..... rc:1 &A |
| 22 | |
| 23 | &A_tab frt fra frb rc:bool |
| 24 | @A_tab ...... frt:5 fra:5 frb:5 ..... ..... rc:1 &A_tab |
| 25 | |
| 26 | &A_tac frt fra frc rc:bool |
| 27 | @A_tac ...... frt:5 fra:5 ..... frc:5 ..... rc:1 &A_tac |
| 28 | |
| 29 | &A_tb frt frb rc:bool |
| 30 | @A_tb ...... frt:5 ..... frb:5 ..... ..... rc:1 &A_tb |
| 31 | |
| 32 | &A_tab_bc rt ra rb bc |
| 33 | @A_tab_bc ...... rt:5 ra:5 rb:5 bc:5 ..... . &A_tab_bc |
| 34 | |
| 35 | &D rt ra si:int64_t |
| 36 | @D ...... rt:5 ra:5 si:s16 &D |
| 37 | |
| 38 | &D_ui rt ra ui:uint64_t |
| 39 | @D_ui ...... rt:5 ra:5 ui:16 &D_ui |
| 40 | |
| 41 | &D_bf bf l:bool ra imm |
| 42 | @D_bfs ...... bf:3 . l:1 ra:5 imm:s16 &D_bf |
| 43 | @D_bfu ...... bf:3 . l:1 ra:5 imm:16 &D_bf |
| 44 | |
| 45 | %dq_si 4:s12 !function=times_16 |
| 46 | %dq_rtp 22:4 !function=times_2 |
| 47 | @DQ_rtp ...... ....0 ra:5 ............ .... &D rt=%dq_rtp si=%dq_si |
| 48 | |
| 49 | %dq_rt_tsx 3:1 21:5 |
| 50 | @DQ_TSX ...... ..... ra:5 ............ .... &D si=%dq_si rt=%dq_rt_tsx |
| 51 | |
| 52 | %rt_tsxp 21:1 22:4 !function=times_2 |
| 53 | @DQ_TSXP ...... ..... ra:5 ............ .... &D si=%dq_si rt=%rt_tsxp |
| 54 | |
| 55 | %ds_si 2:s14 !function=times_4 |
| 56 | @DS ...... rt:5 ra:5 .............. .. &D si=%ds_si |
| 57 | |
| 58 | %ds_rtp 22:4 !function=times_2 |
| 59 | @DS_rtp ...... ....0 ra:5 .............. .. &D rt=%ds_rtp si=%ds_si |
| 60 | |
| 61 | %dd_si 3:s13 |
| 62 | &DD rt ra si:int64_t |
| 63 | @DD ...... rt:5 ra:5 ............. . .. &DD si=%dd_si |
| 64 | |
| 65 | &DX_b vrt b |
| 66 | %dx_b 6:10 16:5 0:1 |
| 67 | @DX_b ...... vrt:5 ..... .......... ..... . &DX_b b=%dx_b |
| 68 | |
| 69 | &DX rt d |
| 70 | %dx_d 6:s10 16:5 0:1 |
| 71 | @DX ...... rt:5 ..... .......... ..... . &DX d=%dx_d |
| 72 | |
| 73 | &XFX rt fxm |
| 74 | @XFX ...... rt:5 . fxm:8 ...... ..... . &XFX |
| 75 | |
| 76 | %md_sh 1:1 11:5 |
| 77 | %md_mb 5:1 6:5 |
| 78 | &MD rs ra sh mb rc |
| 79 | @MD ...... rs:5 ra:5 ..... ...... ... . rc:1 &MD sh=%md_sh mb=%md_mb |
| 80 | |
| 81 | &VA vrt vra vrb rc |
| 82 | @VA ...... vrt:5 vra:5 vrb:5 rc:5 ...... &VA |
| 83 | |
| 84 | &VC vrt vra vrb rc:bool |
| 85 | @VC ...... vrt:5 vra:5 vrb:5 rc:1 .......... &VC |
| 86 | |
| 87 | &VN vrt vra vrb sh |
| 88 | @VN ...... vrt:5 vra:5 vrb:5 .. sh:3 ...... &VN |
| 89 | |
| 90 | &VX vrt vra vrb |
| 91 | @VX ...... vrt:5 vra:5 vrb:5 .......... . &VX |
| 92 | |
| 93 | &VX_ps vrt vra vrb ps |
| 94 | @VX_ps ...... vrt:5 vra:5 vrb:5 . ps:1 ........ . &VX_ps |
| 95 | |
| 96 | &VX_bf bf vra vrb |
| 97 | @VX_bf ...... bf:3 .. vra:5 vrb:5 ........... &VX_bf |
| 98 | |
| 99 | &VX_mp rt mp:bool vrb |
| 100 | @VX_mp ...... rt:5 .... mp:1 vrb:5 ........... &VX_mp |
| 101 | |
| 102 | &VX_n rt vrb n |
| 103 | @VX_n ...... rt:5 .. n:3 vrb:5 ........... &VX_n |
| 104 | |
| 105 | &VX_tb_rc vrt vrb rc:bool |
| 106 | @VX_tb_rc ...... vrt:5 ..... vrb:5 rc:1 .......... &VX_tb_rc |
| 107 | |
| 108 | &VX_uim4 vrt uim vrb |
| 109 | @VX_uim4 ...... vrt:5 . uim:4 vrb:5 ........... &VX_uim4 |
| 110 | |
| 111 | &VX_tb vrt vrb |
| 112 | @VX_tb ...... vrt:5 ..... vrb:5 ........... &VX_tb |
| 113 | |
| 114 | &VX_tb_ps vrt vrb ps |
| 115 | @VX_tb_ps ...... vrt:5 ..... vrb:5 . ps:1 ......... &VX_tb_ps |
| 116 | |
| 117 | &X rt ra rb |
| 118 | @X ...... rt:5 ra:5 rb:5 .......... . &X |
| 119 | |
| 120 | &X_rc rt ra rb rc:bool |
| 121 | @X_rc ...... rt:5 ra:5 rb:5 .......... rc:1 &X_rc |
| 122 | |
| 123 | &X_sa rs ra |
| 124 | @X_sa ...... rs:5 ra:5 ..... .......... . &X_sa |
| 125 | |
| 126 | &X_sa_rc rs ra rc |
| 127 | @X_sa_rc ...... rs:5 ra:5 ..... .......... rc:1 &X_sa_rc |
| 128 | |
| 129 | # XS-form with fractured shift amount |
| 130 | %xs_sh 1:1 11:5 |
| 131 | &XS rs ra sh rc:bool |
| 132 | @XS ...... rs:5 ra:5 ..... ......... . rc:1 &XS sh=%xs_sh |
| 133 | |
| 134 | %x_frtp 22:4 !function=times_2 |
| 135 | %x_frap 17:4 !function=times_2 |
| 136 | %x_frbp 12:4 !function=times_2 |
| 137 | @X_tp_ap_bp_rc ...... ....0 ....0 ....0 .......... rc:1 &X_rc rt=%x_frtp ra=%x_frap rb=%x_frbp |
| 138 | |
| 139 | @X_tp_a_bp_rc ...... ....0 ra:5 ....0 .......... rc:1 &X_rc rt=%x_frtp rb=%x_frbp |
| 140 | |
| 141 | &X_t rt |
| 142 | @X_t ...... rt:5 ..... ..... .......... . &X_t |
| 143 | |
| 144 | &X_tb rt rb |
| 145 | @X_tb ...... rt:5 ..... rb:5 .......... . &X_tb |
| 146 | |
| 147 | &X_t_rc rt rc:bool |
| 148 | @X_t_rc ...... rt:5 ..... ..... .......... rc:1 &X_t_rc |
| 149 | |
| 150 | &X_tb_rc rt rb rc:bool |
| 151 | @X_tb_rc ...... rt:5 ..... rb:5 .......... rc:1 &X_tb_rc |
| 152 | |
| 153 | @X_tbp_rc ...... ....0 ..... ....0 .......... rc:1 &X_tb_rc rt=%x_frtp rb=%x_frbp |
| 154 | |
| 155 | @X_tp_b_rc ...... ....0 ..... rb:5 .......... rc:1 &X_tb_rc rt=%x_frtp |
| 156 | |
| 157 | @X_t_bp_rc ...... rt:5 ..... ....0 .......... rc:1 &X_tb_rc rb=%x_frbp |
| 158 | |
| 159 | &X_bi rt bi |
| 160 | @X_bi ...... rt:5 bi:5 ..... .......... . &X_bi |
| 161 | |
| 162 | &X_bf bf ra rb |
| 163 | @X_bf ...... bf:3 .. ra:5 rb:5 .......... . &X_bf |
| 164 | |
| 165 | &X_bf_b bf rb |
| 166 | @X_bf_b ...... bf:3 .. ..... rb:5 .......... . &X_bf_b |
| 167 | |
| 168 | @X_bf_ap_bp ...... bf:3 .. ....0 ....0 .......... . &X_bf ra=%x_frap rb=%x_frbp |
| 169 | |
| 170 | @X_bf_a_bp ...... bf:3 .. ra:5 ....0 .......... . &X_bf rb=%x_frbp |
| 171 | |
| 172 | &X_bf_uim bf uim rb |
| 173 | @X_bf_uim ...... bf:3 . uim:6 rb:5 .......... . &X_bf_uim |
| 174 | |
| 175 | @X_bf_uim_bp ...... bf:3 . uim:6 ....0 .......... . &X_bf_uim rb=%x_frbp |
| 176 | |
| 177 | &X_bfl bf l:bool ra rb |
| 178 | @X_bfl ...... bf:3 . l:1 ra:5 rb:5 .......... . &X_bfl |
| 179 | |
| 180 | &X_imm2 rt imm |
| 181 | @X_imm2 ...... rt:5 ..... ... imm:2 .......... . &X_imm2 |
| 182 | |
| 183 | &X_imm3 rt imm |
| 184 | @X_imm3 ...... rt:5 ..... .. imm:3 .......... . &X_imm3 |
| 185 | |
| 186 | %x_xt 0:1 21:5 |
| 187 | &X_imm5 xt imm:uint8_t vrb |
| 188 | @X_imm5 ...... ..... imm:5 vrb:5 .......... . &X_imm5 xt=%x_xt |
| 189 | |
| 190 | &X_imm8 xt imm:uint8_t |
| 191 | @X_imm8 ...... ..... .. imm:8 .......... . &X_imm8 xt=%x_xt |
| 192 | |
| 193 | &X_ih ih:uint8_t |
| 194 | @X_ih ...... .. ih:3 ..... ..... .......... . &X_ih |
| 195 | |
| 196 | &X_rb rb |
| 197 | @X_rb ...... ..... ..... rb:5 .......... . &X_rb |
| 198 | |
| 199 | &X_rs_l rs l:bool |
| 200 | @X_rs_l ...... rs:5 .... l:1 ..... .......... . &X_rs_l |
| 201 | |
| 202 | &SC lev:uint8_t |
| 203 | @SC ...... ..... ..... .... lev:7 ... . . &SC |
| 204 | |
| 205 | &X_uim5 xt uim:uint8_t |
| 206 | @X_uim5 ...... ..... ..... uim:5 .......... . &X_uim5 xt=%x_xt |
| 207 | |
| 208 | &X_tb_sp_rc rt rb sp rc:bool |
| 209 | @X_tb_sp_rc ...... rt:5 sp:2 ... rb:5 .......... rc:1 &X_tb_sp_rc |
| 210 | |
| 211 | @X_tbp_sp_rc ...... ....0 sp:2 ... ....0 .......... rc:1 &X_tb_sp_rc rt=%x_frtp rb=%x_frbp |
| 212 | |
| 213 | &X_tb_s_rc rt rb s:bool rc:bool |
| 214 | @X_tb_s_rc ...... rt:5 s:1 .... rb:5 .......... rc:1 &X_tb_s_rc |
| 215 | |
| 216 | @X_tbp_s_rc ...... ....0 s:1 .... ....0 .......... rc:1 &X_tb_s_rc rt=%x_frtp rb=%x_frbp |
| 217 | |
| 218 | %x_rt_tsx 0:1 21:5 |
| 219 | @X_TSX ...... ..... ra:5 rb:5 .......... . &X rt=%x_rt_tsx |
| 220 | @X_TSXP ...... ..... ra:5 rb:5 .......... . &X rt=%rt_tsxp |
| 221 | |
| 222 | %x_dw 0:1 21:5 !function=dw_compose_ea |
| 223 | @X_DW ...... ..... ra:5 rb:5 .......... . &X rt=%x_dw |
| 224 | |
| 225 | &X_frtp_vrb frtp vrb |
| 226 | @X_frtp_vrb ...... ....0 ..... vrb:5 .......... . &X_frtp_vrb frtp=%x_frtp |
| 227 | |
| 228 | &X_vrt_frbp vrt frbp |
| 229 | @X_vrt_frbp ...... vrt:5 ..... ....0 .......... . &X_vrt_frbp frbp=%x_frbp |
| 230 | |
| 231 | &X_a ra |
| 232 | @X_a ...... ra:3 .. ..... ..... .......... . &X_a |
| 233 | |
| 234 | &X_tl rt l |
| 235 | @X_tl ...... rt:5 ... l:2 ..... .......... . &X_tl |
| 236 | |
| 237 | &XO rt ra rb oe:bool rc:bool |
| 238 | @XO ...... rt:5 ra:5 rb:5 oe:1 ......... rc:1 &XO |
| 239 | |
| 240 | &XO_ta rt ra oe:bool rc:bool |
| 241 | @XO_ta ...... rt:5 ra:5 ..... oe:1 ......... rc:1 &XO_ta |
| 242 | |
| 243 | &XO_tab_rc rt ra rb rc:bool |
| 244 | @XO_tab_rc ...... rt:5 ra:5 rb:5 . ......... rc:1 &XO_tab_rc |
| 245 | |
| 246 | %xx_xt 0:1 21:5 |
| 247 | %xx_xb 1:1 11:5 |
| 248 | %xx_xa 2:1 16:5 |
| 249 | %xx_xc 3:1 6:5 |
| 250 | &XX2 xt xb |
| 251 | @XX2 ...... ..... ..... ..... ......... .. &XX2 xt=%xx_xt xb=%xx_xb |
| 252 | |
| 253 | &XX2_uim xt xb uim:uint8_t |
| 254 | @XX2_uim2 ...... ..... ... uim:2 ..... ......... .. &XX2_uim xt=%xx_xt xb=%xx_xb |
| 255 | |
| 256 | @XX2_uim4 ...... ..... . uim:4 ..... ......... .. &XX2_uim xt=%xx_xt xb=%xx_xb |
| 257 | |
| 258 | %xx_uim7 6:1 2:1 16:5 |
| 259 | @XX2_uim7 ...... ..... ..... ..... .... . ... . .. &XX2_uim xt=%xx_xt xb=%xx_xb uim=%xx_uim7 |
| 260 | |
| 261 | &XX2_bf_uim bf xb uim |
| 262 | @XX2_bf_uim ...... bf:3 uim:7 ..... ......... . . &XX2_bf_uim |
| 263 | |
| 264 | &XX2_bf_xb bf xb |
| 265 | @XX2_bf_xb ...... bf:3 .. ..... ..... ......... . . &XX2_bf_xb xb=%xx_xb |
| 266 | |
| 267 | &XX3 xt xa xb |
| 268 | @XX3 ...... ..... ..... ..... ........ ... &XX3 xt=%xx_xt xa=%xx_xa xb=%xx_xb |
| 269 | |
| 270 | &XX3_rc xt xa xb rc:bool |
| 271 | @XX3_rc ...... ..... ..... ..... rc:1 ....... ... &XX3_rc xt=%xx_xt xa=%xx_xa xb=%xx_xb |
| 272 | |
| 273 | # 32 bit GER instructions have all mask bits considered 1 |
| 274 | &MMIRR_XX3 xa xb xt pmsk xmsk ymsk |
| 275 | %xx_at 23:3 |
| 276 | %xx_xa_pair 2:1 17:4 !function=times_2 |
| 277 | @XX3_at ...... ... .. ..... ..... ........ ... &MMIRR_XX3 xt=%xx_at xb=%xx_xb \ |
| 278 | pmsk=255 xmsk=15 ymsk=15 |
| 279 | |
| 280 | &XX3_dm xt xa xb dm |
| 281 | @XX3_dm ...... ..... ..... ..... . dm:2 ..... ... &XX3_dm xt=%xx_xt xa=%xx_xa xb=%xx_xb |
| 282 | |
| 283 | &XX4 xt xa xb xc |
| 284 | @XX4 ...... ..... ..... ..... ..... .. .... &XX4 xt=%xx_xt xa=%xx_xa xb=%xx_xb xc=%xx_xc |
| 285 | |
| 286 | &Z22_bf_fra bf fra dm |
| 287 | @Z22_bf_fra ...... bf:3 .. fra:5 dm:6 ......... . &Z22_bf_fra |
| 288 | |
| 289 | %z22_frap 17:4 !function=times_2 |
| 290 | @Z22_bf_frap ...... bf:3 .. ....0 dm:6 ......... . &Z22_bf_fra fra=%z22_frap |
| 291 | |
| 292 | &Z22_ta_sh_rc rt ra sh rc:bool |
| 293 | @Z22_ta_sh_rc ...... rt:5 ra:5 sh:6 ......... rc:1 &Z22_ta_sh_rc |
| 294 | |
| 295 | %z22_frtp 22:4 !function=times_2 |
| 296 | @Z22_tap_sh_rc ...... ....0 ....0 sh:6 ......... rc:1 &Z22_ta_sh_rc rt=%z22_frtp ra=%z22_frap |
| 297 | |
| 298 | &Z23_tab frt fra frb rmc rc:bool |
| 299 | @Z23_tab ...... frt:5 fra:5 frb:5 rmc:2 ........ rc:1 &Z23_tab |
| 300 | |
| 301 | %z23_frtp 22:4 !function=times_2 |
| 302 | %z23_frap 17:4 !function=times_2 |
| 303 | %z23_frbp 12:4 !function=times_2 |
| 304 | @Z23_tabp ...... ....0 ....0 ....0 rmc:2 ........ rc:1 &Z23_tab frt=%z23_frtp fra=%z23_frap frb=%z23_frbp |
| 305 | |
| 306 | @Z23_tp_a_bp ...... ....0 fra:5 ....0 rmc:2 ........ rc:1 &Z23_tab frt=%z23_frtp frb=%z23_frbp |
| 307 | |
| 308 | &Z23_tb frt frb r:bool rmc rc:bool |
| 309 | @Z23_tb ...... frt:5 .... r:1 frb:5 rmc:2 ........ rc:1 &Z23_tb |
| 310 | |
| 311 | @Z23_tbp ...... ....0 .... r:1 ....0 rmc:2 ........ rc:1 &Z23_tb frt=%z23_frtp frb=%z23_frbp |
| 312 | |
| 313 | &Z23_te_tb te frt frb rmc rc:bool |
| 314 | @Z23_te_tb ...... frt:5 te:5 frb:5 rmc:2 ........ rc:1 &Z23_te_tb |
| 315 | |
| 316 | @Z23_te_tbp ...... ....0 te:5 ....0 rmc:2 ........ rc:1 &Z23_te_tb frt=%z23_frtp frb=%z23_frbp |
| 317 | |
| 318 | &M ra rs sh mb me rc:bool |
| 319 | @M ...... rs:5 ra:5 sh:5 mb:5 me:5 rc:1 &M |
| 320 | |
| 321 | ### MSR |
| 322 | MFMSR 011111 ..... ----- ----- 0001010011 - @X_t |
| 323 | MTMSR 011111 ..... ---- . ----- 0010010010 - @X_rs_l |
| 324 | MTMSRD 011111 ..... ---- . ----- 0010110010 - @X_rs_l |
| 325 | |
| 326 | ### System Call and Return from Interrupt |
| 327 | SC 010001 ----- ----- ---- ....... --- 1 - @SC |
| 328 | SCV 010001 ----- ----- ---- ....... --- 0 1 @SC |
| 329 | RFI 010011 ----- ----- ----- 0000110010 - |
| 330 | RFID 010011 ----- ----- ----- 0000010010 - |
| 331 | RFSCV 010011 ----- ----- ----- 0001010010 - |
| 332 | HRFID 010011 ----- ----- ----- 0100010010 - |
| 333 | |
| 334 | ### Fixed-Point Byte-Reverse Instructions |
| 335 | BRW 011111 ..... ..... ----- 0010011011 - @X_sa |
| 336 | BRD 011111 ..... ..... ----- 0010111011 - @X_sa |
| 337 | BRH 011111 ..... ..... ----- 0011011011 - @X_sa |
| 338 | |
| 339 | ### Fixed-Point Load Instructions |
| 340 | |
| 341 | LBZ 100010 ..... ..... ................ @D |
| 342 | LBZU 100011 ..... ..... ................ @D |
| 343 | LBZX 011111 ..... ..... ..... 0001010111 - @X |
| 344 | LBZUX 011111 ..... ..... ..... 0001110111 - @X |
| 345 | |
| 346 | LHZ 101000 ..... ..... ................ @D |
| 347 | LHZU 101001 ..... ..... ................ @D |
| 348 | LHZX 011111 ..... ..... ..... 0100010111 - @X |
| 349 | LHZUX 011111 ..... ..... ..... 0100110111 - @X |
| 350 | |
| 351 | LHA 101010 ..... ..... ................ @D |
| 352 | LHAU 101011 ..... ..... ................ @D |
| 353 | LHAX 011111 ..... ..... ..... 0101010111 - @X |
| 354 | LHAXU 011111 ..... ..... ..... 0101110111 - @X |
| 355 | |
| 356 | LWZ 100000 ..... ..... ................ @D |
| 357 | LWZU 100001 ..... ..... ................ @D |
| 358 | LWZX 011111 ..... ..... ..... 0000010111 - @X |
| 359 | LWZUX 011111 ..... ..... ..... 0000110111 - @X |
| 360 | |
| 361 | LWA 111010 ..... ..... ..............10 @DS |
| 362 | LWAX 011111 ..... ..... ..... 0101010101 - @X |
| 363 | LWAUX 011111 ..... ..... ..... 0101110101 - @X |
| 364 | |
| 365 | LD 111010 ..... ..... ..............00 @DS |
| 366 | LDU 111010 ..... ..... ..............01 @DS |
| 367 | LDX 011111 ..... ..... ..... 0000010101 - @X |
| 368 | LDUX 011111 ..... ..... ..... 0000110101 - @X |
| 369 | |
| 370 | LQ 111000 ..... ..... ............ ---- @DQ_rtp |
| 371 | |
| 372 | LVD 000101 ..... ..... ................ @D |
| 373 | LVDU 001001 ..... ..... ................ @D |
| 374 | LVDX 011111 ..... ..... ..... 0000010001 - @X |
| 375 | LSKU 111010 ..... ..... ............. 0 11 @DD |
| 376 | LCXU 111010 ..... ..... ............. 1 11 @DD |
| 377 | |
| 378 | LMW 101110 ..... ..... ................ @D |
| 379 | |
| 380 | ### Fixed-Point Atomic Load/Store Instructions |
| 381 | |
| 382 | LWAT 011111 ..... ..... ..... 1001000110 - @X |
| 383 | STWAT 011111 ..... ..... ..... 1011000110 - @X |
| 384 | LDAT 011111 ..... ..... ..... 1001100110 - @X |
| 385 | STDAT 011111 ..... ..... ..... 1011100110 - @X |
| 386 | |
| 387 | ### Fixed-Point Store Instructions |
| 388 | |
| 389 | STB 100110 ..... ..... ................ @D |
| 390 | STBU 100111 ..... ..... ................ @D |
| 391 | STBX 011111 ..... ..... ..... 0011010111 - @X |
| 392 | STBUX 011111 ..... ..... ..... 0011110111 - @X |
| 393 | |
| 394 | STH 101100 ..... ..... ................ @D |
| 395 | STHU 101101 ..... ..... ................ @D |
| 396 | STHX 011111 ..... ..... ..... 0110010111 - @X |
| 397 | STHUX 011111 ..... ..... ..... 0110110111 - @X |
| 398 | |
| 399 | STW 100100 ..... ..... ................ @D |
| 400 | STWU 100101 ..... ..... ................ @D |
| 401 | STWX 011111 ..... ..... ..... 0010010111 - @X |
| 402 | STWUX 011111 ..... ..... ..... 0010110111 - @X |
| 403 | |
| 404 | STD 111110 ..... ..... ..............00 @DS |
| 405 | STDU 111110 ..... ..... ..............01 @DS |
| 406 | STDX 011111 ..... ..... ..... 0010010101 - @X |
| 407 | STDUX 011111 ..... ..... ..... 0010110101 - @X |
| 408 | |
| 409 | STQ 111110 ..... ..... ..............10 @DS_rtp |
| 410 | |
| 411 | STVDU 010110 ..... ..... ................ @D |
| 412 | STVDX 011111 ..... ..... ..... 0010010001 - @X |
| 413 | STSKU 111110 ..... ..... ............. 0 11 @DD |
| 414 | STCXU 111110 ..... ..... ............. 1 11 @DD |
| 415 | |
| 416 | STDBRX 011111 ..... ..... ..... 1010010100 - @X |
| 417 | STDCIX 011111 ..... ..... ..... 1111110101 - @X |
| 418 | STWCIX 011111 ..... ..... ..... 1110010101 - @X |
| 419 | STHCIX 011111 ..... ..... ..... 1110110101 - @X |
| 420 | STBCIX 011111 ..... ..... ..... 1111010101 - @X |
| 421 | STHBRX 011111 ..... ..... ..... 1110010110 - @X |
| 422 | STWBRX 011111 ..... ..... ..... 1010010110 - @X |
| 423 | |
| 424 | STMW 101111 ..... ..... ................ @D |
| 425 | |
| 426 | ### Fixed-Point Compare Instructions |
| 427 | |
| 428 | CMP 011111 ... - . ..... ..... 0000000000 - @X_bfl |
| 429 | CMPL 011111 ... - . ..... ..... 0000100000 - @X_bfl |
| 430 | CMPI 001011 ... - . ..... ................ @D_bfs |
| 431 | CMPLI 001010 ... - . ..... ................ @D_bfu |
| 432 | CMPRB 011111 ... - . ..... ..... 0011000000 - @X_bfl |
| 433 | CMPEQB 011111 ... -- ..... ..... 0011100000 - @X_bf |
| 434 | |
| 435 | ### Fixed-Point Trap Instructions |
| 436 | |
| 437 | TW 011111 ..... ..... ..... 0000000100 - @X |
| 438 | TD 011111 ..... ..... ..... 0001000100 - @X |
| 439 | TWI 000011 ..... ..... ................ @D |
| 440 | TDI 000010 ..... ..... ................ @D |
| 441 | |
| 442 | ### Fixed-Point Select Instruction |
| 443 | |
| 444 | ISEL 011111 ..... ..... ..... ..... 01111 - @A_tab_bc |
| 445 | |
| 446 | ### Fixed-Point Arithmetic Instructions |
| 447 | |
| 448 | ADD 011111 ..... ..... ..... . 100001010 . @XO |
| 449 | ADDC 011111 ..... ..... ..... . 000001010 . @XO |
| 450 | ADDE 011111 ..... ..... ..... . 010001010 . @XO |
| 451 | |
| 452 | # ADDEX is Z23-form, with CY=0; all other values for CY are reserved. |
| 453 | # This works out the same as X-form. |
| 454 | ADDEX 011111 ..... ..... ..... 00 10101010 - @X |
| 455 | |
| 456 | ADDI 001110 ..... ..... ................ @D |
| 457 | ADDIS 001111 ..... ..... ................ @D |
| 458 | ADDIC 001100 ..... ..... ................ @D |
| 459 | ADDIC_ 001101 ..... ..... ................ @D |
| 460 | |
| 461 | ADDPCIS 010011 ..... ..... .......... 00010 . @DX |
| 462 | ADDME 011111 ..... ..... ----- . 011101010 . @XO_ta |
| 463 | ADDZE 011111 ..... ..... ----- . 011001010 . @XO_ta |
| 464 | |
| 465 | SUBF 011111 ..... ..... ..... . 000101000 . @XO |
| 466 | SUBFIC 001000 ..... ..... ................ @D |
| 467 | SUBFC 011111 ..... ..... ..... . 000001000 . @XO |
| 468 | SUBFE 011111 ..... ..... ..... . 010001000 . @XO |
| 469 | |
| 470 | SUBFME 011111 ..... ..... ----- . 011101000 . @XO_ta |
| 471 | SUBFZE 011111 ..... ..... ----- . 011001000 . @XO_ta |
| 472 | |
| 473 | MULLI 000111 ..... ..... ................ @D |
| 474 | MULLW 011111 ..... ..... ..... 0 011101011 . @XO_tab_rc |
| 475 | MULLWO 011111 ..... ..... ..... 1 011101011 . @XO_tab_rc |
| 476 | MULHW 011111 ..... ..... ..... - 001001011 . @XO_tab_rc |
| 477 | MULHWU 011111 ..... ..... ..... - 000001011 . @XO_tab_rc |
| 478 | |
| 479 | DIVW 011111 ..... ..... ..... . 111101011 . @XO |
| 480 | DIVWU 011111 ..... ..... ..... . 111001011 . @XO |
| 481 | DIVWE 011111 ..... ..... ..... . 110101011 . @XO |
| 482 | DIVWEU 011111 ..... ..... ..... . 110001011 . @XO |
| 483 | |
| 484 | MODSW 011111 ..... ..... ..... 1100001011 - @X |
| 485 | MODUW 011111 ..... ..... ..... 0100001011 - @X |
| 486 | DARN 011111 ..... --- .. ----- 1011110011 - @X_tl |
| 487 | NEG 011111 ..... ..... ----- . 001101000 . @XO_ta |
| 488 | |
| 489 | MULLD 011111 ..... ..... ..... 0 011101001 . @XO_tab_rc |
| 490 | MULLDO 011111 ..... ..... ..... 1 011101001 . @XO_tab_rc |
| 491 | MULHD 011111 ..... ..... ..... - 001001001 . @XO_tab_rc |
| 492 | MULHDU 011111 ..... ..... ..... - 000001001 . @XO_tab_rc |
| 493 | |
| 494 | MADDLD 000100 ..... ..... ..... ..... 110011 @VA |
| 495 | MADDHD 000100 ..... ..... ..... ..... 110000 @VA |
| 496 | MADDHDU 000100 ..... ..... ..... ..... 110001 @VA |
| 497 | |
| 498 | DIVD 011111 ..... ..... ..... . 111101001 . @XO |
| 499 | DIVDU 011111 ..... ..... ..... . 111001001 . @XO |
| 500 | DIVDE 011111 ..... ..... ..... . 110101001 . @XO |
| 501 | DIVDEU 011111 ..... ..... ..... . 110001001 . @XO |
| 502 | |
| 503 | MODSD 011111 ..... ..... ..... 1100001001 - @X |
| 504 | MODUD 011111 ..... ..... ..... 0100001001 - @X |
| 505 | |
| 506 | ## Fixed-Point Logical Instructions |
| 507 | |
| 508 | ANDI_ 011100 ..... ..... ................ @D_ui |
| 509 | ANDIS_ 011101 ..... ..... ................ @D_ui |
| 510 | ORI 011000 ..... ..... ................ @D_ui |
| 511 | ORIS 011001 ..... ..... ................ @D_ui |
| 512 | XORI 011010 ..... ..... ................ @D_ui |
| 513 | XORIS 011011 ..... ..... ................ @D_ui |
| 514 | |
| 515 | AND 011111 ..... ..... ..... 0000011100 . @X_rc |
| 516 | ANDC 011111 ..... ..... ..... 0000111100 . @X_rc |
| 517 | NAND 011111 ..... ..... ..... 0111011100 . @X_rc |
| 518 | OR 011111 ..... ..... ..... 0110111100 . @X_rc |
| 519 | ORC 011111 ..... ..... ..... 0110011100 . @X_rc |
| 520 | NOR 011111 ..... ..... ..... 0001111100 . @X_rc |
| 521 | XOR 011111 ..... ..... ..... 0100111100 . @X_rc |
| 522 | EQV 011111 ..... ..... ..... 0100011100 . @X_rc |
| 523 | CMPB 011111 ..... ..... ..... 0111111100 . @X_rc |
| 524 | |
| 525 | EXTSB 011111 ..... ..... ----- 1110111010 . @X_sa_rc |
| 526 | EXTSH 011111 ..... ..... ----- 1110011010 . @X_sa_rc |
| 527 | EXTSW 011111 ..... ..... ----- 1111011010 . @X_sa_rc |
| 528 | CNTLZW 011111 ..... ..... ----- 0000011010 . @X_sa_rc |
| 529 | CNTTZW 011111 ..... ..... ----- 1000011010 . @X_sa_rc |
| 530 | CNTLZD 011111 ..... ..... ----- 0000111010 . @X_sa_rc |
| 531 | CNTTZD 011111 ..... ..... ----- 1000111010 . @X_sa_rc |
| 532 | POPCNTB 011111 ..... ..... ----- 0001111010 . @X_sa_rc |
| 533 | |
| 534 | POPCNTW 011111 ..... ..... ----- 0101111010 - @X_sa |
| 535 | POPCNTD 011111 ..... ..... ----- 0111111010 - @X_sa |
| 536 | PRTYW 011111 ..... ..... ----- 0010011010 - @X_sa |
| 537 | PRTYD 011111 ..... ..... ----- 0010111010 - @X_sa |
| 538 | |
| 539 | BPERMD 011111 ..... ..... ..... 0011111100 - @X |
| 540 | CFUGED 011111 ..... ..... ..... 0011011100 - @X |
| 541 | { |
| 542 | SLVD 011111 ..... ..... ..... 0000111011 . @X_rc |
| 543 | CNTLZDM 011111 ..... ..... ..... 0000111011 - @X |
| 544 | } |
| 545 | { |
| 546 | SRVD 011111 ..... ..... ..... 1000111011 . @X_rc |
| 547 | CNTTZDM 011111 ..... ..... ..... 1000111011 - @X |
| 548 | } |
| 549 | PDEPD 011111 ..... ..... ..... 0010011100 - @X |
| 550 | PEXTD 011111 ..... ..... ..... 0010111100 - @X |
| 551 | |
| 552 | ## Condition Register Instructions |
| 553 | |
| 554 | CRAND 010011 ..... ..... ..... 0100000001 - @X |
| 555 | CROR 010011 ..... ..... ..... 0111000001 - @X |
| 556 | CRNAND 010011 ..... ..... ..... 0011100001 - @X |
| 557 | CRXOR 010011 ..... ..... ..... 0011000001 - @X |
| 558 | CRNOR 010011 ..... ..... ..... 0000100001 - @X |
| 559 | CREQV 010011 ..... ..... ..... 0100100001 - @X |
| 560 | CRANDC 010011 ..... ..... ..... 0010000001 - @X |
| 561 | CRORC 010011 ..... ..... ..... 0110100001 - @X |
| 562 | |
| 563 | # Fixed Point Move Assist Instructions |
| 564 | |
| 565 | LSWI 011111 ..... ..... ..... 1 001010101 - @X |
| 566 | LSWX 011111 ..... ..... ..... 1 000010101 - @X |
| 567 | STSWI 011111 ..... ..... ..... 1 011010101 - @X |
| 568 | STSWX 011111 ..... ..... ..... 1 010010101 - @X |
| 569 | |
| 570 | # Fixed-Point Hash Instructions |
| 571 | |
| 572 | HASHST 011111 ..... ..... ..... 1011010010 . @X_DW |
| 573 | HASHCHK 011111 ..... ..... ..... 1011110010 . @X_DW |
| 574 | HASHSTP 011111 ..... ..... ..... 1010010010 . @X_DW |
| 575 | HASHCHKP 011111 ..... ..... ..... 1010110010 . @X_DW |
| 576 | |
| 577 | # Fixed-Point Shift Instructions |
| 578 | |
| 579 | SLW 011111 ..... ..... ..... 0000011000 . @X_rc |
| 580 | SRW 011111 ..... ..... ..... 1000011000 . @X_rc |
| 581 | SRAW 011111 ..... ..... ..... 1100011000 . @X_rc |
| 582 | SRAWI 011111 ..... ..... ..... 1100111000 . @X_rc |
| 583 | |
| 584 | SLD 011111 ..... ..... ..... 0000011011 . @X_rc |
| 585 | SRD 011111 ..... ..... ..... 1000011011 . @X_rc |
| 586 | SRAD 011111 ..... ..... ..... 1100011010 . @X_rc |
| 587 | SRADI 011111 ..... ..... ..... 110011101 . . @XS |
| 588 | |
| 589 | EXTSWSLI 011111 ..... ..... ..... 110111101 . . @XS |
| 590 | |
| 591 | RLWIMI 010100 ..... ..... ..... ..... ...... @M |
| 592 | RLWINM 010101 ..... ..... ..... ..... ...... @M |
| 593 | |
| 594 | ## BCD Assist |
| 595 | |
| 596 | ADDG6S 011111 ..... ..... ..... - 001001010 - @X |
| 597 | CDTBCD 011111 ..... ..... ----- 0100011010 - @X_sa |
| 598 | CBCDTD 011111 ..... ..... ----- 0100111010 - @X_sa |
| 599 | |
| 600 | ### Float-Point Load Instructions |
| 601 | |
| 602 | LFS 110000 ..... ..... ................ @D |
| 603 | LFSU 110001 ..... ..... ................ @D |
| 604 | LFSX 011111 ..... ..... ..... 1000010111 - @X |
| 605 | LFSUX 011111 ..... ..... ..... 1000110111 - @X |
| 606 | |
| 607 | LFD 110010 ..... ..... ................ @D |
| 608 | LFDU 110011 ..... ..... ................ @D |
| 609 | LFDX 011111 ..... ..... ..... 1001010111 - @X |
| 610 | LFDUX 011111 ..... ..... ..... 1001110111 - @X |
| 611 | |
| 612 | ### Float-Point Store Instructions |
| 613 | |
| 614 | STFS 110100 ..... ...... ............... @D |
| 615 | STFSU 110101 ..... ...... ............... @D |
| 616 | STFSX 011111 ..... ...... .... 1010010111 - @X |
| 617 | STFSUX 011111 ..... ...... .... 1010110111 - @X |
| 618 | |
| 619 | STFD 110110 ..... ...... ............... @D |
| 620 | STFDU 110111 ..... ...... ............... @D |
| 621 | STFDX 011111 ..... ...... .... 1011010111 - @X |
| 622 | STFDUX 011111 ..... ...... .... 1011110111 - @X |
| 623 | |
| 624 | ### Floating-Point Move Instructions |
| 625 | |
| 626 | FMR 111111 ..... ----- ..... 0001001000 . @X_tb_rc |
| 627 | FNEG 111111 ..... ----- ..... 0000101000 . @X_tb_rc |
| 628 | FABS 111111 ..... ----- ..... 0100001000 . @X_tb_rc |
| 629 | FNABS 111111 ..... ----- ..... 0010001000 . @X_tb_rc |
| 630 | |
| 631 | FCPSGN 111111 ..... ..... ..... 0000001000 . @X_rc |
| 632 | FMRGEW 111111 ..... ..... ..... 1111000110 - @X |
| 633 | FMRGOW 111111 ..... ..... ..... 1101000110 - @X |
| 634 | |
| 635 | ### Floating-Point Arithmetic Instructions |
| 636 | |
| 637 | FADD 111111 ..... ..... ..... ----- 10101 . @A_tab |
| 638 | FADDS 111011 ..... ..... ..... ----- 10101 . @A_tab |
| 639 | |
| 640 | FSUB 111111 ..... ..... ..... ----- 10100 . @A_tab |
| 641 | FSUBS 111011 ..... ..... ..... ----- 10100 . @A_tab |
| 642 | |
| 643 | FMUL 111111 ..... ..... ----- ..... 11001 . @A_tac |
| 644 | FMULS 111011 ..... ..... ----- ..... 11001 . @A_tac |
| 645 | |
| 646 | FDIV 111111 ..... ..... ..... ----- 10010 . @A_tab |
| 647 | FDIVS 111011 ..... ..... ..... ----- 10010 . @A_tab |
| 648 | |
| 649 | FSQRT 111111 ..... ----- ..... ----- 10110 . @A_tb |
| 650 | FSQRTS 111011 ..... ----- ..... ----- 10110 . @A_tb |
| 651 | |
| 652 | FRE 111111 ..... ----- ..... ----- 11000 . @A_tb |
| 653 | FRES 111011 ..... ----- ..... ----- 11000 . @A_tb |
| 654 | |
| 655 | FRSQRTE 111111 ..... ----- ..... ----- 11010 . @A_tb |
| 656 | FRSQRTES 111011 ..... ----- ..... ----- 11010 . @A_tb |
| 657 | |
| 658 | FTDIV 111111 ... -- ..... ..... 0010000000 - @X_bf |
| 659 | FTSQRT 111111 ... -- ----- ..... 0010100000 - @X_bf_b |
| 660 | |
| 661 | FMADD 111111 ..... ..... ..... ..... 11101 . @A |
| 662 | FMADDS 111011 ..... ..... ..... ..... 11101 . @A |
| 663 | |
| 664 | FMSUB 111111 ..... ..... ..... ..... 11100 . @A |
| 665 | FMSUBS 111011 ..... ..... ..... ..... 11100 . @A |
| 666 | |
| 667 | FNMADD 111111 ..... ..... ..... ..... 11111 . @A |
| 668 | FNMADDS 111011 ..... ..... ..... ..... 11111 . @A |
| 669 | |
| 670 | FNMSUB 111111 ..... ..... ..... ..... 11110 . @A |
| 671 | FNMSUBS 111011 ..... ..... ..... ..... 11110 . @A |
| 672 | |
| 673 | ### Floating-Point Rounding and Conversion Instructions |
| 674 | |
| 675 | FRSP 111111 ..... ----- ..... 0000001100 . @X_tb_rc |
| 676 | |
| 677 | FRIN 111111 ..... ----- ..... 0110001000 . @X_tb_rc |
| 678 | FRIZ 111111 ..... ----- ..... 0110101000 . @X_tb_rc |
| 679 | FRIP 111111 ..... ----- ..... 0111001000 . @X_tb_rc |
| 680 | FRIM 111111 ..... ----- ..... 0111101000 . @X_tb_rc |
| 681 | |
| 682 | FCTIW 111111 ..... ----- ..... 0000001110 . @X_tb_rc |
| 683 | FCTIWU 111111 ..... ----- ..... 0010001110 . @X_tb_rc |
| 684 | FCTIWZ 111111 ..... ----- ..... 0000001111 . @X_tb_rc |
| 685 | FCTIWUZ 111111 ..... ----- ..... 0010001111 . @X_tb_rc |
| 686 | |
| 687 | FCTID 111111 ..... ----- ..... 1100101110 . @X_tb_rc |
| 688 | FCTIDU 111111 ..... ----- ..... 1110101110 . @X_tb_rc |
| 689 | FCTIDZ 111111 ..... ----- ..... 1100101111 . @X_tb_rc |
| 690 | FCTIDUZ 111111 ..... ----- ..... 1110101111 . @X_tb_rc |
| 691 | |
| 692 | FCFID 111111 ..... ----- ..... 1101001110 . @X_tb_rc |
| 693 | FCFIDS 111011 ..... ----- ..... 1101001110 . @X_tb_rc |
| 694 | FCFIDU 111111 ..... ----- ..... 1111001110 . @X_tb_rc |
| 695 | FCFIDUS 111011 ..... ----- ..... 1111001110 . @X_tb_rc |
| 696 | |
| 697 | ### Floating-Point Compare Instructions |
| 698 | |
| 699 | FCMPU 111111 ... -- ..... ..... 0000000000 - @X_bf |
| 700 | FCMPO 111111 ... -- ..... ..... 0000100000 - @X_bf |
| 701 | |
| 702 | ### Floating-Point Select Instruction |
| 703 | |
| 704 | FSEL 111111 ..... ..... ..... ..... 10111 . @A |
| 705 | |
| 706 | ### Move To/From System Register Instructions |
| 707 | |
| 708 | MFCR 011111 ..... 0.... ....- 0000010011 - @XFX |
| 709 | MFOCR 011111 ..... 1.... ....- 0000010011 - @XFX |
| 710 | MTCRF 011111 ..... 0.... ....- 0010010000 - @XFX |
| 711 | MTOCRF 011111 ..... 1.... ....- 0010010000 - @XFX |
| 712 | |
| 713 | SETBC 011111 ..... ..... ----- 0110000000 - @X_bi |
| 714 | SETBCR 011111 ..... ..... ----- 0110100000 - @X_bi |
| 715 | SETNBC 011111 ..... ..... ----- 0111000000 - @X_bi |
| 716 | SETNBCR 011111 ..... ..... ----- 0111100000 - @X_bi |
| 717 | |
| 718 | ### Move To/From FPSCR |
| 719 | |
| 720 | { |
| 721 | # Before Power ISA v3.0, MFFS bits 11~15 were reserved and should be ignored |
| 722 | MFFS_ISA207 111111 ..... ----- ----- 1001000111 . @X_t_rc |
| 723 | [ |
| 724 | MFFS 111111 ..... 00000 ----- 1001000111 . @X_t_rc |
| 725 | MFFSCE 111111 ..... 00001 ----- 1001000111 - @X_t |
| 726 | MFFSCRN 111111 ..... 10110 ..... 1001000111 - @X_tb |
| 727 | MFFSCDRN 111111 ..... 10100 ..... 1001000111 - @X_tb |
| 728 | MFFSCRNI 111111 ..... 10111 ---.. 1001000111 - @X_imm2 |
| 729 | MFFSCDRNI 111111 ..... 10101 --... 1001000111 - @X_imm3 |
| 730 | MFFSL 111111 ..... 11000 ----- 1001000111 - @X_t |
| 731 | ] |
| 732 | } |
| 733 | |
| 734 | ### Decimal Floating-Point Arithmetic Instructions |
| 735 | |
| 736 | DADD 111011 ..... ..... ..... 0000000010 . @X_rc |
| 737 | DADDQ 111111 ..... ..... ..... 0000000010 . @X_tp_ap_bp_rc |
| 738 | |
| 739 | DSUB 111011 ..... ..... ..... 1000000010 . @X_rc |
| 740 | DSUBQ 111111 ..... ..... ..... 1000000010 . @X_tp_ap_bp_rc |
| 741 | |
| 742 | DMUL 111011 ..... ..... ..... 0000100010 . @X_rc |
| 743 | DMULQ 111111 ..... ..... ..... 0000100010 . @X_tp_ap_bp_rc |
| 744 | |
| 745 | DDIV 111011 ..... ..... ..... 1000100010 . @X_rc |
| 746 | DDIVQ 111111 ..... ..... ..... 1000100010 . @X_tp_ap_bp_rc |
| 747 | |
| 748 | ### Decimal Floating-Point Compare Instructions |
| 749 | |
| 750 | DCMPU 111011 ... -- ..... ..... 1010000010 - @X_bf |
| 751 | DCMPUQ 111111 ... -- ..... ..... 1010000010 - @X_bf_ap_bp |
| 752 | |
| 753 | DCMPO 111011 ... -- ..... ..... 0010000010 - @X_bf |
| 754 | DCMPOQ 111111 ... -- ..... ..... 0010000010 - @X_bf_ap_bp |
| 755 | |
| 756 | ### Decimal Floating-Point Test Instructions |
| 757 | |
| 758 | DTSTDC 111011 ... -- ..... ...... 011000010 - @Z22_bf_fra |
| 759 | DTSTDCQ 111111 ... -- ..... ...... 011000010 - @Z22_bf_frap |
| 760 | |
| 761 | DTSTDG 111011 ... -- ..... ...... 011100010 - @Z22_bf_fra |
| 762 | DTSTDGQ 111111 ... -- ..... ...... 011100010 - @Z22_bf_frap |
| 763 | |
| 764 | DTSTEX 111011 ... -- ..... ..... 0010100010 - @X_bf |
| 765 | DTSTEXQ 111111 ... -- ..... ..... 0010100010 - @X_bf_ap_bp |
| 766 | |
| 767 | DTSTSF 111011 ... -- ..... ..... 1010100010 - @X_bf |
| 768 | DTSTSFQ 111111 ... -- ..... ..... 1010100010 - @X_bf_a_bp |
| 769 | |
| 770 | DTSTSFI 111011 ... - ...... ..... 1010100011 - @X_bf_uim |
| 771 | DTSTSFIQ 111111 ... - ...... ..... 1010100011 - @X_bf_uim_bp |
| 772 | |
| 773 | ### Decimal Floating-Point Quantum Adjustment Instructions |
| 774 | |
| 775 | DQUAI 111011 ..... ..... ..... .. 01000011 . @Z23_te_tb |
| 776 | DQUAIQ 111111 ..... ..... ..... .. 01000011 . @Z23_te_tbp |
| 777 | |
| 778 | DQUA 111011 ..... ..... ..... .. 00000011 . @Z23_tab |
| 779 | DQUAQ 111111 ..... ..... ..... .. 00000011 . @Z23_tabp |
| 780 | |
| 781 | DRRND 111011 ..... ..... ..... .. 00100011 . @Z23_tab |
| 782 | DRRNDQ 111111 ..... ..... ..... .. 00100011 . @Z23_tp_a_bp |
| 783 | |
| 784 | DRINTX 111011 ..... ---- . ..... .. 01100011 . @Z23_tb |
| 785 | DRINTXQ 111111 ..... ---- . ..... .. 01100011 . @Z23_tbp |
| 786 | |
| 787 | DRINTN 111011 ..... ---- . ..... .. 11100011 . @Z23_tb |
| 788 | DRINTNQ 111111 ..... ---- . ..... .. 11100011 . @Z23_tbp |
| 789 | |
| 790 | ### Decimal Floating-Point Conversion Instructions |
| 791 | |
| 792 | DCTDP 111011 ..... ----- ..... 0100000010 . @X_tb_rc |
| 793 | DCTQPQ 111111 ..... ----- ..... 0100000010 . @X_tp_b_rc |
| 794 | |
| 795 | DRSP 111011 ..... ----- ..... 1100000010 . @X_tb_rc |
| 796 | DRDPQ 111111 ..... ----- ..... 1100000010 . @X_tbp_rc |
| 797 | |
| 798 | DCFFIX 111011 ..... ----- ..... 1100100010 . @X_tb_rc |
| 799 | DCFFIXQ 111111 ..... ----- ..... 1100100010 . @X_tp_b_rc |
| 800 | DCFFIXQQ 111111 ..... 00000 ..... 1111100010 - @X_frtp_vrb |
| 801 | |
| 802 | DCTFIX 111011 ..... ----- ..... 0100100010 . @X_tb_rc |
| 803 | DCTFIXQ 111111 ..... ----- ..... 0100100010 . @X_t_bp_rc |
| 804 | DCTFIXQQ 111111 ..... 00001 ..... 1111100010 - @X_vrt_frbp |
| 805 | |
| 806 | ### Decimal Floating-Point Format Instructions |
| 807 | |
| 808 | DDEDPD 111011 ..... .. --- ..... 0101000010 . @X_tb_sp_rc |
| 809 | DDEDPDQ 111111 ..... .. --- ..... 0101000010 . @X_tbp_sp_rc |
| 810 | |
| 811 | DENBCD 111011 ..... . ---- ..... 1101000010 . @X_tb_s_rc |
| 812 | DENBCDQ 111111 ..... . ---- ..... 1101000010 . @X_tbp_s_rc |
| 813 | |
| 814 | DXEX 111011 ..... ----- ..... 0101100010 . @X_tb_rc |
| 815 | DXEXQ 111111 ..... ----- ..... 0101100010 . @X_t_bp_rc |
| 816 | |
| 817 | DIEX 111011 ..... ..... ..... 1101100010 . @X_rc |
| 818 | DIEXQ 111111 ..... ..... ..... 1101100010 . @X_tp_a_bp_rc |
| 819 | |
| 820 | DSCLI 111011 ..... ..... ...... 001000010 . @Z22_ta_sh_rc |
| 821 | DSCLIQ 111111 ..... ..... ...... 001000010 . @Z22_tap_sh_rc |
| 822 | |
| 823 | DSCRI 111011 ..... ..... ...... 001100010 . @Z22_ta_sh_rc |
| 824 | DSCRIQ 111111 ..... ..... ...... 001100010 . @Z22_tap_sh_rc |
| 825 | |
| 826 | ### Store Conditional Instructions |
| 827 | |
| 828 | STBCX 011111 ..... ..... ..... 1010110110 1 @X |
| 829 | STHCX 011111 ..... ..... ..... 1011010110 1 @X |
| 830 | STWCX 011111 ..... ..... ..... 0010010110 1 @X |
| 831 | STDCX 011111 ..... ..... ..... 0011010110 1 @X |
| 832 | STQCX 011111 ..... ..... ..... 0010110110 1 @X |
| 833 | |
| 834 | ## Vector Exclusive-OR-based Instructions |
| 835 | |
| 836 | VPMSUMD 000100 ..... ..... ..... 10011001000 @VX |
| 837 | |
| 838 | ## Vector Load/Store Instructions |
| 839 | |
| 840 | LVEBX 011111 ..... ..... ..... 0000000111 - @X |
| 841 | LVEHX 011111 ..... ..... ..... 0000100111 - @X |
| 842 | LVEWX 011111 ..... ..... ..... 0001000111 - @X |
| 843 | LVX 011111 ..... ..... ..... 0001100111 - @X |
| 844 | LVXL 011111 ..... ..... ..... 0101100111 - @X |
| 845 | |
| 846 | STVEBX 011111 ..... ..... ..... 0010000111 - @X |
| 847 | STVEHX 011111 ..... ..... ..... 0010100111 - @X |
| 848 | STVEWX 011111 ..... ..... ..... 0011000111 - @X |
| 849 | STVX 011111 ..... ..... ..... 0011100111 - @X |
| 850 | STVXL 011111 ..... ..... ..... 0111100111 - @X |
| 851 | |
| 852 | LVSL 011111 ..... ..... ..... 0000000110 - @X |
| 853 | LVSR 011111 ..... ..... ..... 0000100110 - @X |
| 854 | |
| 855 | ## Vector Integer Instructions |
| 856 | |
| 857 | VCMPEQUB 000100 ..... ..... ..... . 0000000110 @VC |
| 858 | VCMPEQUH 000100 ..... ..... ..... . 0001000110 @VC |
| 859 | VCMPEQUW 000100 ..... ..... ..... . 0010000110 @VC |
| 860 | VCMPEQUD 000100 ..... ..... ..... . 0011000111 @VC |
| 861 | VCMPEQUQ 000100 ..... ..... ..... . 0111000111 @VC |
| 862 | |
| 863 | VCMPGTSB 000100 ..... ..... ..... . 1100000110 @VC |
| 864 | VCMPGTSH 000100 ..... ..... ..... . 1101000110 @VC |
| 865 | VCMPGTSW 000100 ..... ..... ..... . 1110000110 @VC |
| 866 | VCMPGTSD 000100 ..... ..... ..... . 1111000111 @VC |
| 867 | VCMPGTSQ 000100 ..... ..... ..... . 1110000111 @VC |
| 868 | |
| 869 | VCMPGTUB 000100 ..... ..... ..... . 1000000110 @VC |
| 870 | VCMPGTUH 000100 ..... ..... ..... . 1001000110 @VC |
| 871 | VCMPGTUW 000100 ..... ..... ..... . 1010000110 @VC |
| 872 | VCMPGTUD 000100 ..... ..... ..... . 1011000111 @VC |
| 873 | VCMPGTUQ 000100 ..... ..... ..... . 1010000111 @VC |
| 874 | |
| 875 | VCMPNEB 000100 ..... ..... ..... . 0000000111 @VC |
| 876 | VCMPNEH 000100 ..... ..... ..... . 0001000111 @VC |
| 877 | VCMPNEW 000100 ..... ..... ..... . 0010000111 @VC |
| 878 | |
| 879 | VCMPNEZB 000100 ..... ..... ..... . 0100000111 @VC |
| 880 | VCMPNEZH 000100 ..... ..... ..... . 0101000111 @VC |
| 881 | VCMPNEZW 000100 ..... ..... ..... . 0110000111 @VC |
| 882 | |
| 883 | VCMPSQ 000100 ... -- ..... ..... 00101000001 @VX_bf |
| 884 | VCMPUQ 000100 ... -- ..... ..... 00100000001 @VX_bf |
| 885 | |
| 886 | ## Vector Integer Logical Instructions |
| 887 | |
| 888 | VAND 000100 ..... ..... ..... 10000000100 @VX |
| 889 | VANDC 000100 ..... ..... ..... 10001000100 @VX |
| 890 | VNAND 000100 ..... ..... ..... 10110000100 @VX |
| 891 | VOR 000100 ..... ..... ..... 10010000100 @VX |
| 892 | VORC 000100 ..... ..... ..... 10101000100 @VX |
| 893 | VNOR 000100 ..... ..... ..... 10100000100 @VX |
| 894 | VXOR 000100 ..... ..... ..... 10011000100 @VX |
| 895 | VEQV 000100 ..... ..... ..... 11010000100 @VX |
| 896 | |
| 897 | ## Vector Merge Instructions |
| 898 | |
| 899 | VMRGHB 000100 ..... ..... ..... 00000001100 @VX |
| 900 | VMRGHH 000100 ..... ..... ..... 00001001100 @VX |
| 901 | VMRGHW 000100 ..... ..... ..... 00010001100 @VX |
| 902 | VMRGLB 000100 ..... ..... ..... 00100001100 @VX |
| 903 | VMRGLH 000100 ..... ..... ..... 00101001100 @VX |
| 904 | VMRGLW 000100 ..... ..... ..... 00110001100 @VX |
| 905 | |
| 906 | ## Vector Integer Average Instructions |
| 907 | |
| 908 | VAVGSB 000100 ..... ..... ..... 10100000010 @VX |
| 909 | VAVGSH 000100 ..... ..... ..... 10101000010 @VX |
| 910 | VAVGSW 000100 ..... ..... ..... 10110000010 @VX |
| 911 | VAVGUB 000100 ..... ..... ..... 10000000010 @VX |
| 912 | VAVGUH 000100 ..... ..... ..... 10001000010 @VX |
| 913 | VAVGUW 000100 ..... ..... ..... 10010000010 @VX |
| 914 | |
| 915 | ## Vector Integer Absolute Difference Instructions |
| 916 | |
| 917 | VABSDUB 000100 ..... ..... ..... 10000000011 @VX |
| 918 | VABSDUH 000100 ..... ..... ..... 10001000011 @VX |
| 919 | VABSDUW 000100 ..... ..... ..... 10010000011 @VX |
| 920 | |
| 921 | ## Vector Bit Manipulation Instruction |
| 922 | |
| 923 | VGNB 000100 ..... -- ... ..... 10011001100 @VX_n |
| 924 | |
| 925 | VCFUGED 000100 ..... ..... ..... 10101001101 @VX |
| 926 | VCLZDM 000100 ..... ..... ..... 11110000100 @VX |
| 927 | VCTZDM 000100 ..... ..... ..... 11111000100 @VX |
| 928 | VPDEPD 000100 ..... ..... ..... 10111001101 @VX |
| 929 | VPEXTD 000100 ..... ..... ..... 10110001101 @VX |
| 930 | |
| 931 | VPRTYBD 000100 ..... 01001 ..... 11000000010 @VX_tb |
| 932 | VPRTYBQ 000100 ..... 01010 ..... 11000000010 @VX_tb |
| 933 | VPRTYBW 000100 ..... 01000 ..... 11000000010 @VX_tb |
| 934 | |
| 935 | ## Vector Permute and Formatting Instruction |
| 936 | |
| 937 | VEXTDUBVLX 000100 ..... ..... ..... ..... 011000 @VA |
| 938 | VEXTDUBVRX 000100 ..... ..... ..... ..... 011001 @VA |
| 939 | VEXTDUHVLX 000100 ..... ..... ..... ..... 011010 @VA |
| 940 | VEXTDUHVRX 000100 ..... ..... ..... ..... 011011 @VA |
| 941 | VEXTDUWVLX 000100 ..... ..... ..... ..... 011100 @VA |
| 942 | VEXTDUWVRX 000100 ..... ..... ..... ..... 011101 @VA |
| 943 | VEXTDDVLX 000100 ..... ..... ..... ..... 011110 @VA |
| 944 | VEXTDDVRX 000100 ..... ..... ..... ..... 011111 @VA |
| 945 | |
| 946 | VINSERTB 000100 ..... - .... ..... 01100001101 @VX_uim4 |
| 947 | VINSERTH 000100 ..... - .... ..... 01101001101 @VX_uim4 |
| 948 | VINSERTW 000100 ..... - .... ..... 01110001101 @VX_uim4 |
| 949 | VINSERTD 000100 ..... - .... ..... 01111001101 @VX_uim4 |
| 950 | |
| 951 | VINSBLX 000100 ..... ..... ..... 01000001111 @VX |
| 952 | VINSBRX 000100 ..... ..... ..... 01100001111 @VX |
| 953 | VINSHLX 000100 ..... ..... ..... 01001001111 @VX |
| 954 | VINSHRX 000100 ..... ..... ..... 01101001111 @VX |
| 955 | VINSWLX 000100 ..... ..... ..... 01010001111 @VX |
| 956 | VINSWRX 000100 ..... ..... ..... 01110001111 @VX |
| 957 | VINSDLX 000100 ..... ..... ..... 01011001111 @VX |
| 958 | VINSDRX 000100 ..... ..... ..... 01111001111 @VX |
| 959 | |
| 960 | VINSW 000100 ..... - .... ..... 00011001111 @VX_uim4 |
| 961 | VINSD 000100 ..... - .... ..... 00111001111 @VX_uim4 |
| 962 | |
| 963 | VINSBVLX 000100 ..... ..... ..... 00000001111 @VX |
| 964 | VINSBVRX 000100 ..... ..... ..... 00100001111 @VX |
| 965 | VINSHVLX 000100 ..... ..... ..... 00001001111 @VX |
| 966 | VINSHVRX 000100 ..... ..... ..... 00101001111 @VX |
| 967 | VINSWVLX 000100 ..... ..... ..... 00010001111 @VX |
| 968 | VINSWVRX 000100 ..... ..... ..... 00110001111 @VX |
| 969 | |
| 970 | VSLDBI 000100 ..... ..... ..... 00 ... 010110 @VN |
| 971 | VSRDBI 000100 ..... ..... ..... 01 ... 010110 @VN |
| 972 | |
| 973 | VPERM 000100 ..... ..... ..... ..... 101011 @VA |
| 974 | VPERMR 000100 ..... ..... ..... ..... 111011 @VA |
| 975 | |
| 976 | VSEL 000100 ..... ..... ..... ..... 101010 @VA |
| 977 | |
| 978 | ## Power Management Instructions |
| 979 | |
| 980 | DOZE 010011 ----- ----- ----- 0110010010 - |
| 981 | NAP 010011 ----- ----- ----- 0110110010 - |
| 982 | SLEEP 010011 ----- ----- ----- 0111010010 - |
| 983 | RVWINKLE 010011 ----- ----- ----- 0111110010 - |
| 984 | STOP 010011 ----- ----- ----- 0101110010 - |
| 985 | |
| 986 | ## Vector Integer Shift Instruction |
| 987 | |
| 988 | VSLB 000100 ..... ..... ..... 00100000100 @VX |
| 989 | VSLH 000100 ..... ..... ..... 00101000100 @VX |
| 990 | VSLW 000100 ..... ..... ..... 00110000100 @VX |
| 991 | VSLD 000100 ..... ..... ..... 10111000100 @VX |
| 992 | VSLQ 000100 ..... ..... ..... 00100000101 @VX |
| 993 | |
| 994 | VSRB 000100 ..... ..... ..... 01000000100 @VX |
| 995 | VSRH 000100 ..... ..... ..... 01001000100 @VX |
| 996 | VSRW 000100 ..... ..... ..... 01010000100 @VX |
| 997 | VSRD 000100 ..... ..... ..... 11011000100 @VX |
| 998 | VSRQ 000100 ..... ..... ..... 01000000101 @VX |
| 999 | |
| 1000 | VSRAB 000100 ..... ..... ..... 01100000100 @VX |
| 1001 | VSRAH 000100 ..... ..... ..... 01101000100 @VX |
| 1002 | VSRAW 000100 ..... ..... ..... 01110000100 @VX |
| 1003 | VSRAD 000100 ..... ..... ..... 01111000100 @VX |
| 1004 | VSRAQ 000100 ..... ..... ..... 01100000101 @VX |
| 1005 | |
| 1006 | VRLB 000100 ..... ..... ..... 00000000100 @VX |
| 1007 | VRLH 000100 ..... ..... ..... 00001000100 @VX |
| 1008 | VRLW 000100 ..... ..... ..... 00010000100 @VX |
| 1009 | VRLD 000100 ..... ..... ..... 00011000100 @VX |
| 1010 | VRLQ 000100 ..... ..... ..... 00000000101 @VX |
| 1011 | |
| 1012 | VRLWMI 000100 ..... ..... ..... 00010000101 @VX |
| 1013 | VRLDMI 000100 ..... ..... ..... 00011000101 @VX |
| 1014 | VRLQMI 000100 ..... ..... ..... 00001000101 @VX |
| 1015 | |
| 1016 | VRLWNM 000100 ..... ..... ..... 00110000101 @VX |
| 1017 | VRLDNM 000100 ..... ..... ..... 00111000101 @VX |
| 1018 | VRLQNM 000100 ..... ..... ..... 00101000101 @VX |
| 1019 | |
| 1020 | ## Vector Integer Arithmetic Instructions |
| 1021 | |
| 1022 | VADDCUW 000100 ..... ..... ..... 00110000000 @VX |
| 1023 | VADDCUQ 000100 ..... ..... ..... 00101000000 @VX |
| 1024 | VADDUQM 000100 ..... ..... ..... 00100000000 @VX |
| 1025 | |
| 1026 | VADDSBS 000100 ..... ..... ..... 01100000000 @VX |
| 1027 | VADDSHS 000100 ..... ..... ..... 01101000000 @VX |
| 1028 | VADDSWS 000100 ..... ..... ..... 01110000000 @VX |
| 1029 | |
| 1030 | VADDUBM 000100 ..... ..... ..... 00000000000 @VX |
| 1031 | VADDUHM 000100 ..... ..... ..... 00001000000 @VX |
| 1032 | VADDUWM 000100 ..... ..... ..... 00010000000 @VX |
| 1033 | VADDUDM 000100 ..... ..... ..... 00011000000 @VX |
| 1034 | VADDUBS 000100 ..... ..... ..... 01000000000 @VX |
| 1035 | VADDUHS 000100 ..... ..... ..... 01001000000 @VX |
| 1036 | VADDUWS 000100 ..... ..... ..... 01010000000 @VX |
| 1037 | |
| 1038 | VADDEUQM 000100 ..... ..... ..... ..... 111100 @VA |
| 1039 | VADDECUQ 000100 ..... ..... ..... ..... 111101 @VA |
| 1040 | |
| 1041 | VSUBCUW 000100 ..... ..... ..... 10110000000 @VX |
| 1042 | VSUBCUQ 000100 ..... ..... ..... 10101000000 @VX |
| 1043 | VSUBUQM 000100 ..... ..... ..... 10100000000 @VX |
| 1044 | |
| 1045 | VSUBSBS 000100 ..... ..... ..... 11100000000 @VX |
| 1046 | VSUBSHS 000100 ..... ..... ..... 11101000000 @VX |
| 1047 | VSUBSWS 000100 ..... ..... ..... 11110000000 @VX |
| 1048 | |
| 1049 | VSUBUBM 000100 ..... ..... ..... 10000000000 @VX |
| 1050 | VSUBUHM 000100 ..... ..... ..... 10001000000 @VX |
| 1051 | VSUBUWM 000100 ..... ..... ..... 10010000000 @VX |
| 1052 | VSUBUDM 000100 ..... ..... ..... 10011000000 @VX |
| 1053 | VSUBUBS 000100 ..... ..... ..... 11000000000 @VX |
| 1054 | VSUBUHS 000100 ..... ..... ..... 11001000000 @VX |
| 1055 | VSUBUWS 000100 ..... ..... ..... 11010000000 @VX |
| 1056 | |
| 1057 | VSUBECUQ 000100 ..... ..... ..... ..... 111111 @VA |
| 1058 | VSUBEUQM 000100 ..... ..... ..... ..... 111110 @VA |
| 1059 | |
| 1060 | VEXTSB2W 000100 ..... 10000 ..... 11000000010 @VX_tb |
| 1061 | VEXTSH2W 000100 ..... 10001 ..... 11000000010 @VX_tb |
| 1062 | VEXTSB2D 000100 ..... 11000 ..... 11000000010 @VX_tb |
| 1063 | VEXTSH2D 000100 ..... 11001 ..... 11000000010 @VX_tb |
| 1064 | VEXTSW2D 000100 ..... 11010 ..... 11000000010 @VX_tb |
| 1065 | VEXTSD2Q 000100 ..... 11011 ..... 11000000010 @VX_tb |
| 1066 | |
| 1067 | VNEGD 000100 ..... 00111 ..... 11000000010 @VX_tb |
| 1068 | VNEGW 000100 ..... 00110 ..... 11000000010 @VX_tb |
| 1069 | |
| 1070 | ## Vector Integer Maximum/Minimum Instructions |
| 1071 | |
| 1072 | VMAXUB 000100 ..... ..... ..... 00000000010 @VX |
| 1073 | VMAXUH 000100 ..... ..... ..... 00001000010 @VX |
| 1074 | VMAXUW 000100 ..... ..... ..... 00010000010 @VX |
| 1075 | VMAXUD 000100 ..... ..... ..... 00011000010 @VX |
| 1076 | |
| 1077 | VMAXSB 000100 ..... ..... ..... 00100000010 @VX |
| 1078 | VMAXSH 000100 ..... ..... ..... 00101000010 @VX |
| 1079 | VMAXSW 000100 ..... ..... ..... 00110000010 @VX |
| 1080 | VMAXSD 000100 ..... ..... ..... 00111000010 @VX |
| 1081 | |
| 1082 | VMINUB 000100 ..... ..... ..... 01000000010 @VX |
| 1083 | VMINUH 000100 ..... ..... ..... 01001000010 @VX |
| 1084 | VMINUW 000100 ..... ..... ..... 01010000010 @VX |
| 1085 | VMINUD 000100 ..... ..... ..... 01011000010 @VX |
| 1086 | |
| 1087 | VMINSB 000100 ..... ..... ..... 01100000010 @VX |
| 1088 | VMINSH 000100 ..... ..... ..... 01101000010 @VX |
| 1089 | VMINSW 000100 ..... ..... ..... 01110000010 @VX |
| 1090 | VMINSD 000100 ..... ..... ..... 01111000010 @VX |
| 1091 | |
| 1092 | ## Vector Mask Manipulation Instructions |
| 1093 | |
| 1094 | MTVSRBM 000100 ..... 10000 ..... 11001000010 @VX_tb |
| 1095 | MTVSRHM 000100 ..... 10001 ..... 11001000010 @VX_tb |
| 1096 | MTVSRWM 000100 ..... 10010 ..... 11001000010 @VX_tb |
| 1097 | MTVSRDM 000100 ..... 10011 ..... 11001000010 @VX_tb |
| 1098 | MTVSRQM 000100 ..... 10100 ..... 11001000010 @VX_tb |
| 1099 | MTVSRBMI 000100 ..... ..... .......... 01010 . @DX_b |
| 1100 | |
| 1101 | VEXPANDBM 000100 ..... 00000 ..... 11001000010 @VX_tb |
| 1102 | VEXPANDHM 000100 ..... 00001 ..... 11001000010 @VX_tb |
| 1103 | VEXPANDWM 000100 ..... 00010 ..... 11001000010 @VX_tb |
| 1104 | VEXPANDDM 000100 ..... 00011 ..... 11001000010 @VX_tb |
| 1105 | VEXPANDQM 000100 ..... 00100 ..... 11001000010 @VX_tb |
| 1106 | |
| 1107 | VEXTRACTBM 000100 ..... 01000 ..... 11001000010 @VX_tb |
| 1108 | VEXTRACTHM 000100 ..... 01001 ..... 11001000010 @VX_tb |
| 1109 | VEXTRACTWM 000100 ..... 01010 ..... 11001000010 @VX_tb |
| 1110 | VEXTRACTDM 000100 ..... 01011 ..... 11001000010 @VX_tb |
| 1111 | VEXTRACTQM 000100 ..... 01100 ..... 11001000010 @VX_tb |
| 1112 | |
| 1113 | VCNTMBB 000100 ..... 1100 . ..... 11001000010 @VX_mp |
| 1114 | VCNTMBH 000100 ..... 1101 . ..... 11001000010 @VX_mp |
| 1115 | VCNTMBW 000100 ..... 1110 . ..... 11001000010 @VX_mp |
| 1116 | VCNTMBD 000100 ..... 1111 . ..... 11001000010 @VX_mp |
| 1117 | |
| 1118 | ## Vector Multiply Instruction |
| 1119 | |
| 1120 | VMULESB 000100 ..... ..... ..... 01100001000 @VX |
| 1121 | VMULOSB 000100 ..... ..... ..... 00100001000 @VX |
| 1122 | VMULEUB 000100 ..... ..... ..... 01000001000 @VX |
| 1123 | VMULOUB 000100 ..... ..... ..... 00000001000 @VX |
| 1124 | |
| 1125 | VMULESH 000100 ..... ..... ..... 01101001000 @VX |
| 1126 | VMULOSH 000100 ..... ..... ..... 00101001000 @VX |
| 1127 | VMULEUH 000100 ..... ..... ..... 01001001000 @VX |
| 1128 | VMULOUH 000100 ..... ..... ..... 00001001000 @VX |
| 1129 | |
| 1130 | VMULESW 000100 ..... ..... ..... 01110001000 @VX |
| 1131 | VMULOSW 000100 ..... ..... ..... 00110001000 @VX |
| 1132 | VMULEUW 000100 ..... ..... ..... 01010001000 @VX |
| 1133 | VMULOUW 000100 ..... ..... ..... 00010001000 @VX |
| 1134 | |
| 1135 | VMULESD 000100 ..... ..... ..... 01111001000 @VX |
| 1136 | VMULOSD 000100 ..... ..... ..... 00111001000 @VX |
| 1137 | VMULEUD 000100 ..... ..... ..... 01011001000 @VX |
| 1138 | VMULOUD 000100 ..... ..... ..... 00011001000 @VX |
| 1139 | |
| 1140 | VMULHSW 000100 ..... ..... ..... 01110001001 @VX |
| 1141 | VMULHUW 000100 ..... ..... ..... 01010001001 @VX |
| 1142 | VMULHSD 000100 ..... ..... ..... 01111001001 @VX |
| 1143 | VMULHUD 000100 ..... ..... ..... 01011001001 @VX |
| 1144 | VMULLD 000100 ..... ..... ..... 00111001001 @VX |
| 1145 | |
| 1146 | VMULUWM 000100 ..... ..... ..... 00010001001 @VX |
| 1147 | |
| 1148 | VMUL10UQ 000100 ..... ..... ..... 01000000001 @VX |
| 1149 | VMUL10EUQ 000100 ..... ..... ..... 01001000001 @VX |
| 1150 | VMUL10ECUQ 000100 ..... ..... ..... 00001000001 @VX |
| 1151 | VMUL10CUQ 000100 ..... ..... ..... 00000000001 @VX |
| 1152 | |
| 1153 | ## Vector Multiply-Sum Instructions |
| 1154 | |
| 1155 | VMSUMUBM 000100 ..... ..... ..... ..... 100100 @VA |
| 1156 | VMSUMMBM 000100 ..... ..... ..... ..... 100101 @VA |
| 1157 | VMSUMSHM 000100 ..... ..... ..... ..... 101000 @VA |
| 1158 | VMSUMSHS 000100 ..... ..... ..... ..... 101001 @VA |
| 1159 | VMSUMUHM 000100 ..... ..... ..... ..... 100110 @VA |
| 1160 | VMSUMUHS 000100 ..... ..... ..... ..... 100111 @VA |
| 1161 | |
| 1162 | VMSUMCUD 000100 ..... ..... ..... ..... 010111 @VA |
| 1163 | VMSUMUDM 000100 ..... ..... ..... ..... 100011 @VA |
| 1164 | |
| 1165 | VMLADDUHM 000100 ..... ..... ..... ..... 100010 @VA |
| 1166 | VMHADDSHS 000100 ..... ..... ..... ..... 100000 @VA |
| 1167 | VMHRADDSHS 000100 ..... ..... ..... ..... 100001 @VA |
| 1168 | |
| 1169 | ## Vector String Instructions |
| 1170 | |
| 1171 | VSTRIBL 000100 ..... 00000 ..... . 0000001101 @VX_tb_rc |
| 1172 | VSTRIBR 000100 ..... 00001 ..... . 0000001101 @VX_tb_rc |
| 1173 | VSTRIHL 000100 ..... 00010 ..... . 0000001101 @VX_tb_rc |
| 1174 | VSTRIHR 000100 ..... 00011 ..... . 0000001101 @VX_tb_rc |
| 1175 | |
| 1176 | VCLRLB 000100 ..... ..... ..... 00110001101 @VX |
| 1177 | VCLRRB 000100 ..... ..... ..... 00111001101 @VX |
| 1178 | |
| 1179 | ## Vector Pack Instructions |
| 1180 | |
| 1181 | VPKUHUM 000100 ..... ..... ..... 0000000111 0 @VX |
| 1182 | VPKUWUM 000100 ..... ..... ..... 0000100111 0 @VX |
| 1183 | VPKUDUM 000100 ..... ..... ..... 1000100111 0 @VX |
| 1184 | VPKUHUS 000100 ..... ..... ..... 0001000111 0 @VX |
| 1185 | VPKUWUS 000100 ..... ..... ..... 0001100111 0 @VX |
| 1186 | VPKUDUS 000100 ..... ..... ..... 1001100111 0 @VX |
| 1187 | VPKSHUS 000100 ..... ..... ..... 0010000111 0 @VX |
| 1188 | VPKSWUS 000100 ..... ..... ..... 0010100111 0 @VX |
| 1189 | VPKSDUS 000100 ..... ..... ..... 1010100111 0 @VX |
| 1190 | VPKSHSS 000100 ..... ..... ..... 0011000111 0 @VX |
| 1191 | VPKSWSS 000100 ..... ..... ..... 0011100111 0 @VX |
| 1192 | VPKSDSS 000100 ..... ..... ..... 1011100111 0 @VX |
| 1193 | VPKPX 000100 ..... ..... ..... 0110000111 0 @VX |
| 1194 | |
| 1195 | ## Decimal Integer Arithmetic Instructions |
| 1196 | |
| 1197 | BCDADD 000100 ..... ..... ..... 1.000000001 @VX_ps |
| 1198 | BCDSUB 000100 ..... ..... ..... 1.001000001 @VX_ps |
| 1199 | BCDUS 000100 ..... ..... ..... 10010000001 @VX |
| 1200 | BCDS 000100 ..... ..... ..... 1.011000001 @VX_ps |
| 1201 | BCDCTSQ 000100 ..... 00000 ..... 10110000001 @VX_tb |
| 1202 | BCDCTN 000100 ..... 00101 ..... 10110000001 @VX_tb |
| 1203 | BCDCFSQ 000100 ..... 00010 ..... 1.110000001 @VX_tb_ps |
| 1204 | BCDCTZ 000100 ..... 00100 ..... 1.110000001 @VX_tb_ps |
| 1205 | BCDCFZ 000100 ..... 00110 ..... 1.110000001 @VX_tb_ps |
| 1206 | BCDCFN 000100 ..... 00111 ..... 1.110000001 @VX_tb_ps |
| 1207 | BCDSETSGN 000100 ..... 11111 ..... 1.110000001 @VX_tb_ps |
| 1208 | BCDCPSGN 000100 ..... ..... ..... 01101000001 @VX |
| 1209 | BCDSR 000100 ..... ..... ..... 1.111000001 @VX_ps |
| 1210 | BCDTRUNC 000100 ..... ..... ..... 1.100000001 @VX_ps |
| 1211 | BCDUTRUNC 000100 ..... ..... ..... 10101000001 @VX |
| 1212 | |
| 1213 | # VSX Load/Store Instructions |
| 1214 | |
| 1215 | LXSD 111001 ..... ..... .............. 10 @DS |
| 1216 | STXSD 111101 ..... ..... .............. 10 @DS |
| 1217 | LXSSP 111001 ..... ..... .............. 11 @DS |
| 1218 | STXSSP 111101 ..... ..... .............. 11 @DS |
| 1219 | LXV 111101 ..... ..... ............ . 001 @DQ_TSX |
| 1220 | STXV 111101 ..... ..... ............ . 101 @DQ_TSX |
| 1221 | |
| 1222 | # STVD PPE instruction overlaps with the LXVP and STXVP instructions |
| 1223 | { |
| 1224 | STVD 000110 ..... ..... ................ @D |
| 1225 | [ |
| 1226 | LXVP 000110 ..... ..... ............ 0000 @DQ_TSXP |
| 1227 | STXVP 000110 ..... ..... ............ 0001 @DQ_TSXP |
| 1228 | ] |
| 1229 | } |
| 1230 | |
| 1231 | LXVX 011111 ..... ..... ..... 0100 - 01100 . @X_TSX |
| 1232 | STXVX 011111 ..... ..... ..... 0110001100 . @X_TSX |
| 1233 | LXVPX 011111 ..... ..... ..... 0101001101 - @X_TSXP |
| 1234 | STXVPX 011111 ..... ..... ..... 0111001101 - @X_TSXP |
| 1235 | LXVRBX 011111 ..... ..... ..... 0000001101 . @X_TSX |
| 1236 | LXVRHX 011111 ..... ..... ..... 0000101101 . @X_TSX |
| 1237 | LXVRWX 011111 ..... ..... ..... 0001001101 . @X_TSX |
| 1238 | LXVRDX 011111 ..... ..... ..... 0001101101 . @X_TSX |
| 1239 | STXVRBX 011111 ..... ..... ..... 0010001101 . @X_TSX |
| 1240 | STXVRHX 011111 ..... ..... ..... 0010101101 . @X_TSX |
| 1241 | STXVRWX 011111 ..... ..... ..... 0011001101 . @X_TSX |
| 1242 | STXVRDX 011111 ..... ..... ..... 0011101101 . @X_TSX |
| 1243 | |
| 1244 | LXSDX 011111 ..... ..... ..... 1001001100 . @X_TSX |
| 1245 | LXSIWAX 011111 ..... ..... ..... 0001001100 . @X_TSX |
| 1246 | LXSIBZX 011111 ..... ..... ..... 1100001101 . @X_TSX |
| 1247 | LXSIHZX 011111 ..... ..... ..... 1100101101 . @X_TSX |
| 1248 | LXSIWZX 011111 ..... ..... ..... 0000001100 . @X_TSX |
| 1249 | LXSSPX 011111 ..... ..... ..... 1000001100 . @X_TSX |
| 1250 | |
| 1251 | STXSDX 011111 ..... ..... ..... 1011001100 . @X_TSX |
| 1252 | STXSIBX 011111 ..... ..... ..... 1110001101 . @X_TSX |
| 1253 | STXSIHX 011111 ..... ..... ..... 1110101101 . @X_TSX |
| 1254 | STXSIWX 011111 ..... ..... ..... 0010001100 . @X_TSX |
| 1255 | STXSSPX 011111 ..... ..... ..... 1010001100 . @X_TSX |
| 1256 | |
| 1257 | LXVB16X 011111 ..... ..... ..... 1101101100 . @X_TSX |
| 1258 | LXVD2X 011111 ..... ..... ..... 1101001100 . @X_TSX |
| 1259 | LXVH8X 011111 ..... ..... ..... 1100101100 . @X_TSX |
| 1260 | LXVW4X 011111 ..... ..... ..... 1100001100 . @X_TSX |
| 1261 | LXVDSX 011111 ..... ..... ..... 0101001100 . @X_TSX |
| 1262 | LXVWSX 011111 ..... ..... ..... 0101101100 . @X_TSX |
| 1263 | LXVL 011111 ..... ..... ..... 0100001101 . @X_TSX |
| 1264 | LXVLL 011111 ..... ..... ..... 0100101101 . @X_TSX |
| 1265 | |
| 1266 | STXVB16X 011111 ..... ..... ..... 1111101100 . @X_TSX |
| 1267 | STXVD2X 011111 ..... ..... ..... 1111001100 . @X_TSX |
| 1268 | STXVH8X 011111 ..... ..... ..... 1110101100 . @X_TSX |
| 1269 | STXVW4X 011111 ..... ..... ..... 1110001100 . @X_TSX |
| 1270 | STXVL 011111 ..... ..... ..... 0110001101 . @X_TSX |
| 1271 | STXVLL 011111 ..... ..... ..... 0110101101 . @X_TSX |
| 1272 | |
| 1273 | ## VSX Vector Binary Floating-Point Sign Manipulation Instructions |
| 1274 | |
| 1275 | XVABSDP 111100 ..... 00000 ..... 111011001 .. @XX2 |
| 1276 | XVABSSP 111100 ..... 00000 ..... 110011001 .. @XX2 |
| 1277 | XVNABSDP 111100 ..... 00000 ..... 111101001 .. @XX2 |
| 1278 | XVNABSSP 111100 ..... 00000 ..... 110101001 .. @XX2 |
| 1279 | XVNEGDP 111100 ..... 00000 ..... 111111001 .. @XX2 |
| 1280 | XVNEGSP 111100 ..... 00000 ..... 110111001 .. @XX2 |
| 1281 | XVCPSGNDP 111100 ..... ..... ..... 11110000 ... @XX3 |
| 1282 | XVCPSGNSP 111100 ..... ..... ..... 11010000 ... @XX3 |
| 1283 | |
| 1284 | ## VSX Binary Floating-Point Arithmetic Instructions |
| 1285 | |
| 1286 | XSADDSP 111100 ..... ..... ..... 00000000 ... @XX3 |
| 1287 | XSSUBSP 111100 ..... ..... ..... 00001000 ... @XX3 |
| 1288 | XSMULSP 111100 ..... ..... ..... 00010000 ... @XX3 |
| 1289 | XSDIVSP 111100 ..... ..... ..... 00011000 ... @XX3 |
| 1290 | |
| 1291 | XSADDDP 111100 ..... ..... ..... 00100000 ... @XX3 |
| 1292 | XSSUBDP 111100 ..... ..... ..... 00101000 ... @XX3 |
| 1293 | XSMULDP 111100 ..... ..... ..... 00110000 ... @XX3 |
| 1294 | XSDIVDP 111100 ..... ..... ..... 00111000 ... @XX3 |
| 1295 | |
| 1296 | XVADDSP 111100 ..... ..... ..... 01000000 ... @XX3 |
| 1297 | XVSUBSP 111100 ..... ..... ..... 01001000 ... @XX3 |
| 1298 | XVMULSP 111100 ..... ..... ..... 01010000 ... @XX3 |
| 1299 | XVDIVSP 111100 ..... ..... ..... 01011000 ... @XX3 |
| 1300 | |
| 1301 | XVADDDP 111100 ..... ..... ..... 01100000 ... @XX3 |
| 1302 | XVSUBDP 111100 ..... ..... ..... 01101000 ... @XX3 |
| 1303 | XVMULDP 111100 ..... ..... ..... 01110000 ... @XX3 |
| 1304 | XVDIVDP 111100 ..... ..... ..... 01111000 ... @XX3 |
| 1305 | |
| 1306 | ## VSX Scalar Multiply-Add Instructions |
| 1307 | |
| 1308 | XSMADDADP 111100 ..... ..... ..... 00100001 . . . @XX3 |
| 1309 | XSMADDMDP 111100 ..... ..... ..... 00101001 . . . @XX3 |
| 1310 | XSMADDASP 111100 ..... ..... ..... 00000001 . . . @XX3 |
| 1311 | XSMADDMSP 111100 ..... ..... ..... 00001001 . . . @XX3 |
| 1312 | XSMADDQP 111111 ..... ..... ..... 0110000100 . @X_rc |
| 1313 | |
| 1314 | XSMSUBADP 111100 ..... ..... ..... 00110001 . . . @XX3 |
| 1315 | XSMSUBMDP 111100 ..... ..... ..... 00111001 . . . @XX3 |
| 1316 | XSMSUBASP 111100 ..... ..... ..... 00010001 . . . @XX3 |
| 1317 | XSMSUBMSP 111100 ..... ..... ..... 00011001 . . . @XX3 |
| 1318 | XSMSUBQP 111111 ..... ..... ..... 0110100100 . @X_rc |
| 1319 | |
| 1320 | XSNMADDASP 111100 ..... ..... ..... 10000001 . . . @XX3 |
| 1321 | XSNMADDMSP 111100 ..... ..... ..... 10001001 . . . @XX3 |
| 1322 | XSNMADDADP 111100 ..... ..... ..... 10100001 . . . @XX3 |
| 1323 | XSNMADDMDP 111100 ..... ..... ..... 10101001 . . . @XX3 |
| 1324 | XSNMADDQP 111111 ..... ..... ..... 0111000100 . @X_rc |
| 1325 | |
| 1326 | XSNMSUBASP 111100 ..... ..... ..... 10010001 . . . @XX3 |
| 1327 | XSNMSUBMSP 111100 ..... ..... ..... 10011001 . . . @XX3 |
| 1328 | XSNMSUBADP 111100 ..... ..... ..... 10110001 . . . @XX3 |
| 1329 | XSNMSUBMDP 111100 ..... ..... ..... 10111001 . . . @XX3 |
| 1330 | XSNMSUBQP 111111 ..... ..... ..... 0111100100 . @X_rc |
| 1331 | |
| 1332 | ## VSX splat instruction |
| 1333 | |
| 1334 | XXSPLTIB 111100 ..... 00 ........ 0101101000 . @X_imm8 |
| 1335 | XXSPLTW 111100 ..... ---.. ..... 010100100 . . @XX2_uim2 |
| 1336 | |
| 1337 | ## VSX Permute Instructions |
| 1338 | |
| 1339 | XXEXTRACTUW 111100 ..... - .... ..... 010100101 .. @XX2_uim4 |
| 1340 | XXINSERTW 111100 ..... - .... ..... 010110101 .. @XX2_uim4 |
| 1341 | |
| 1342 | XXPERM 111100 ..... ..... ..... 00011010 ... @XX3 |
| 1343 | XXPERMR 111100 ..... ..... ..... 00111010 ... @XX3 |
| 1344 | XXPERMDI 111100 ..... ..... ..... 0 .. 01010 ... @XX3_dm |
| 1345 | |
| 1346 | XXSEL 111100 ..... ..... ..... ..... 11 .... @XX4 |
| 1347 | |
| 1348 | ## VSX Vector Generate PCV |
| 1349 | |
| 1350 | XXGENPCVBM 111100 ..... ..... ..... 1110010100 . @X_imm5 |
| 1351 | XXGENPCVHM 111100 ..... ..... ..... 1110010101 . @X_imm5 |
| 1352 | XXGENPCVWM 111100 ..... ..... ..... 1110110100 . @X_imm5 |
| 1353 | XXGENPCVDM 111100 ..... ..... ..... 1110110101 . @X_imm5 |
| 1354 | |
| 1355 | ## VSX Vector Load Special Value Instruction |
| 1356 | |
| 1357 | LXVKQ 111100 ..... 11111 ..... 0101101000 . @X_uim5 |
| 1358 | |
| 1359 | ## VSX Comparison Instructions |
| 1360 | |
| 1361 | XSMAXCDP 111100 ..... ..... ..... 10000000 ... @XX3 |
| 1362 | XSMINCDP 111100 ..... ..... ..... 10001000 ... @XX3 |
| 1363 | XSMAXJDP 111100 ..... ..... ..... 10010000 ... @XX3 |
| 1364 | XSMINJDP 111100 ..... ..... ..... 10011000 ... @XX3 |
| 1365 | XSMAXCQP 111111 ..... ..... ..... 1010100100 - @X |
| 1366 | XSMINCQP 111111 ..... ..... ..... 1011100100 - @X |
| 1367 | |
| 1368 | XSCMPEQDP 111100 ..... ..... ..... 00000011 ... @XX3 |
| 1369 | XSCMPGEDP 111100 ..... ..... ..... 00010011 ... @XX3 |
| 1370 | XSCMPGTDP 111100 ..... ..... ..... 00001011 ... @XX3 |
| 1371 | XSCMPEQQP 111111 ..... ..... ..... 0001000100 - @X |
| 1372 | XSCMPGEQP 111111 ..... ..... ..... 0011000100 - @X |
| 1373 | XSCMPGTQP 111111 ..... ..... ..... 0011100100 - @X |
| 1374 | |
| 1375 | XVCMPEQSP 111100 ..... ..... ..... . 1000011 ... @XX3_rc |
| 1376 | XVCMPGTSP 111100 ..... ..... ..... . 1001011 ... @XX3_rc |
| 1377 | XVCMPGESP 111100 ..... ..... ..... . 1010011 ... @XX3_rc |
| 1378 | XVCMPNESP 111100 ..... ..... ..... . 1011011 ... @XX3_rc |
| 1379 | XVCMPEQDP 111100 ..... ..... ..... . 1100011 ... @XX3_rc |
| 1380 | XVCMPGTDP 111100 ..... ..... ..... . 1101011 ... @XX3_rc |
| 1381 | XVCMPGEDP 111100 ..... ..... ..... . 1110011 ... @XX3_rc |
| 1382 | XVCMPNEDP 111100 ..... ..... ..... . 1111011 ... @XX3_rc |
| 1383 | |
| 1384 | XSMAXDP 111100 ..... ..... ..... 10100000 ... @XX3 |
| 1385 | XSMINDP 111100 ..... ..... ..... 10101000 ... @XX3 |
| 1386 | |
| 1387 | XVMAXSP 111100 ..... ..... ..... 11000000 ... @XX3 |
| 1388 | XVMINSP 111100 ..... ..... ..... 11001000 ... @XX3 |
| 1389 | XVMAXDP 111100 ..... ..... ..... 11100000 ... @XX3 |
| 1390 | XVMINDP 111100 ..... ..... ..... 11101000 ... @XX3 |
| 1391 | |
| 1392 | ## VSX Binary Floating-Point Convert Instructions |
| 1393 | |
| 1394 | XSCVQPDP 111111 ..... 10100 ..... 1101000100 . @X_tb_rc |
| 1395 | XSCVQPUQZ 111111 ..... 00000 ..... 1101000100 - @X_tb |
| 1396 | XSCVQPSQZ 111111 ..... 01000 ..... 1101000100 - @X_tb |
| 1397 | XSCVUQQP 111111 ..... 00011 ..... 1101000100 - @X_tb |
| 1398 | XSCVSQQP 111111 ..... 01011 ..... 1101000100 - @X_tb |
| 1399 | XVCVBF16SPN 111100 ..... 10000 ..... 111011011 .. @XX2 |
| 1400 | XVCVSPBF16 111100 ..... 10001 ..... 111011011 .. @XX2 |
| 1401 | XSCVSPDPN 111100 ..... ----- ..... 101001011 .. @XX2 |
| 1402 | |
| 1403 | ## VSX Binary Floating-Point Math Support Instructions |
| 1404 | |
| 1405 | XVXSIGSP 111100 ..... 01001 ..... 111011011 .. @XX2 |
| 1406 | XVTSTDCDP 111100 ..... ..... ..... 1111 . 101 ... @XX2_uim7 |
| 1407 | XVTSTDCSP 111100 ..... ..... ..... 1101 . 101 ... @XX2_uim7 |
| 1408 | XSTSTDCSP 111100 ... ....... ..... 100101010 . - @XX2_bf_uim xb=%xx_xb |
| 1409 | XSTSTDCDP 111100 ... ....... ..... 101101010 . - @XX2_bf_uim xb=%xx_xb |
| 1410 | XSTSTDCQP 111111 ... ....... xb:5 1011000100 - @XX2_bf_uim |
| 1411 | |
| 1412 | ## VSX Vector Test Least-Significant Bit by Byte Instruction |
| 1413 | |
| 1414 | XVTLSBB 111100 ... -- 00010 ..... 111011011 . - @XX2_bf_xb |
| 1415 | |
| 1416 | ### rfebb |
| 1417 | &XL_s s:uint8_t |
| 1418 | @XL_s ......-------------- s:1 .......... - &XL_s |
| 1419 | RFEBB 010011-------------- . 0010010010 - @XL_s |
| 1420 | |
| 1421 | ## Accumulator Instructions |
| 1422 | |
| 1423 | XXMFACC 011111 ... -- 00000 ----- 0010110001 - @X_a |
| 1424 | XXMTACC 011111 ... -- 00001 ----- 0010110001 - @X_a |
| 1425 | XXSETACCZ 011111 ... -- 00011 ----- 0010110001 - @X_a |
| 1426 | |
| 1427 | ## VSX Vector Logical instructions |
| 1428 | |
| 1429 | XXLAND 111100 ..... ..... ..... 10000010 ... @XX3 |
| 1430 | XXLANDC 111100 ..... ..... ..... 10001010 ... @XX3 |
| 1431 | XXLOR 111100 ..... ..... ..... 10010010 ... @XX3 |
| 1432 | XXLXOR 111100 ..... ..... ..... 10011010 ... @XX3 |
| 1433 | XXLNOR 111100 ..... ..... ..... 10100010 ... @XX3 |
| 1434 | XXLEQV 111100 ..... ..... ..... 10111010 ... @XX3 |
| 1435 | XXLNAND 111100 ..... ..... ..... 10110010 ... @XX3 |
| 1436 | XXLORC 111100 ..... ..... ..... 10101010 ... @XX3 |
| 1437 | |
| 1438 | ## VSX GER instruction |
| 1439 | |
| 1440 | XVI4GER8 111011 ... -- ..... ..... 00100011 ..- @XX3_at xa=%xx_xa |
| 1441 | XVI4GER8PP 111011 ... -- ..... ..... 00100010 ..- @XX3_at xa=%xx_xa |
| 1442 | XVI8GER4 111011 ... -- ..... ..... 00000011 ..- @XX3_at xa=%xx_xa |
| 1443 | XVI8GER4PP 111011 ... -- ..... ..... 00000010 ..- @XX3_at xa=%xx_xa |
| 1444 | XVI16GER2 111011 ... -- ..... ..... 01001011 ..- @XX3_at xa=%xx_xa |
| 1445 | XVI16GER2PP 111011 ... -- ..... ..... 01101011 ..- @XX3_at xa=%xx_xa |
| 1446 | XVI8GER4SPP 111011 ... -- ..... ..... 01100011 ..- @XX3_at xa=%xx_xa |
| 1447 | XVI16GER2S 111011 ... -- ..... ..... 00101011 ..- @XX3_at xa=%xx_xa |
| 1448 | XVI16GER2SPP 111011 ... -- ..... ..... 00101010 ..- @XX3_at xa=%xx_xa |
| 1449 | |
| 1450 | XVBF16GER2 111011 ... -- ..... ..... 00110011 ..- @XX3_at xa=%xx_xa |
| 1451 | XVBF16GER2PP 111011 ... -- ..... ..... 00110010 ..- @XX3_at xa=%xx_xa |
| 1452 | XVBF16GER2PN 111011 ... -- ..... ..... 10110010 ..- @XX3_at xa=%xx_xa |
| 1453 | XVBF16GER2NP 111011 ... -- ..... ..... 01110010 ..- @XX3_at xa=%xx_xa |
| 1454 | XVBF16GER2NN 111011 ... -- ..... ..... 11110010 ..- @XX3_at xa=%xx_xa |
| 1455 | |
| 1456 | XVF16GER2 111011 ... -- ..... ..... 00010011 ..- @XX3_at xa=%xx_xa |
| 1457 | XVF16GER2PP 111011 ... -- ..... ..... 00010010 ..- @XX3_at xa=%xx_xa |
| 1458 | XVF16GER2PN 111011 ... -- ..... ..... 10010010 ..- @XX3_at xa=%xx_xa |
| 1459 | XVF16GER2NP 111011 ... -- ..... ..... 01010010 ..- @XX3_at xa=%xx_xa |
| 1460 | XVF16GER2NN 111011 ... -- ..... ..... 11010010 ..- @XX3_at xa=%xx_xa |
| 1461 | |
| 1462 | XVF32GER 111011 ... -- ..... ..... 00011011 ..- @XX3_at xa=%xx_xa |
| 1463 | XVF32GERPP 111011 ... -- ..... ..... 00011010 ..- @XX3_at xa=%xx_xa |
| 1464 | XVF32GERPN 111011 ... -- ..... ..... 10011010 ..- @XX3_at xa=%xx_xa |
| 1465 | XVF32GERNP 111011 ... -- ..... ..... 01011010 ..- @XX3_at xa=%xx_xa |
| 1466 | XVF32GERNN 111011 ... -- ..... ..... 11011010 ..- @XX3_at xa=%xx_xa |
| 1467 | |
| 1468 | XVF64GER 111011 ... -- .... 0 ..... 00111011 ..- @XX3_at xa=%xx_xa_pair |
| 1469 | XVF64GERPP 111011 ... -- .... 0 ..... 00111010 ..- @XX3_at xa=%xx_xa_pair |
| 1470 | XVF64GERPN 111011 ... -- .... 0 ..... 10111010 ..- @XX3_at xa=%xx_xa_pair |
| 1471 | XVF64GERNP 111011 ... -- .... 0 ..... 01111010 ..- @XX3_at xa=%xx_xa_pair |
| 1472 | XVF64GERNN 111011 ... -- .... 0 ..... 11111010 ..- @XX3_at xa=%xx_xa_pair |
| 1473 | |
| 1474 | ## Cache Management Instructions |
| 1475 | |
| 1476 | &X_ea ra rb |
| 1477 | @X_ea ...... ..... ra:5 rb:5 .......... . &X_ea |
| 1478 | |
| 1479 | &X_l l ra rb |
| 1480 | @X_l ...... .. l:3 ra:5 rb:5 .......... . &X_l |
| 1481 | |
| 1482 | &X_th th ra rb |
| 1483 | @X_th ...... th:5 ra:5 rb:5 .......... . &X_th |
| 1484 | |
| 1485 | DCBF 011111 -- ... ..... ..... 0001010110 - @X_l |
| 1486 | DCBFEP 011111 ----- ..... ..... 0001111111 - @X_ea |
| 1487 | DCBI 011111 ----- ..... ..... 0111010110 - @X_ea |
| 1488 | DCBST 011111 ----- ..... ..... 0000110110 - @X_ea |
| 1489 | DCBSTEP 011111 ----- ..... ..... 0000111111 - @X_ea |
| 1490 | DCBA 011111 ----- ..... ..... 1011110110 - @X_ea |
| 1491 | |
| 1492 | DCBT 011111 ..... ..... ..... 0100010110 - @X_th |
| 1493 | DCBTEP 011111 ----- ..... ..... 0100111111 - @X_ea |
| 1494 | DCBTST 011111 ..... ..... ..... 0011110110 - @X_th |
| 1495 | DCBTSTEP 011111 ----- ..... ..... 0011111111 - @X_ea |
| 1496 | |
| 1497 | DCBTLS 011111 ..... ..... ..... 0010100110 - @X_th |
| 1498 | DCBLC 011111 ..... ..... ..... 0110000110 - @X_th |
| 1499 | |
| 1500 | ICBI 011111 ----- ..... ..... 1111010110 - @X_ea |
| 1501 | ICBIEP 011111 ----- ..... ..... 1111011111 - @X_ea |
| 1502 | |
| 1503 | DST 011111 ----- ..... ..... 0101010110 - @X_ea |
| 1504 | DSTST 011111 ----- ..... ..... 0101110110 - @X_ea |
| 1505 | DSS 011111 ----- ..... ..... 1100110110 - @X_ea |
| 1506 | |
| 1507 | ## Load and Reserve Instructions |
| 1508 | LBARX 011111 ..... ..... ..... 0000110100 . @X_rc |
| 1509 | LHARX 011111 ..... ..... ..... 0001110100 . @X_rc |
| 1510 | LWARX 011111 ..... ..... ..... 0000010100 . @X_rc |
| 1511 | LDARX 011111 ..... ..... ..... 0001010100 . @X_rc |
| 1512 | LQARX 011111 ..... ..... ..... 0100010100 . @X_rc |
| 1513 | |
| 1514 | ## Vector Division Instructions |
| 1515 | |
| 1516 | VDIVSW 000100 ..... ..... ..... 00110001011 @VX |
| 1517 | VDIVUW 000100 ..... ..... ..... 00010001011 @VX |
| 1518 | VDIVSD 000100 ..... ..... ..... 00111001011 @VX |
| 1519 | VDIVUD 000100 ..... ..... ..... 00011001011 @VX |
| 1520 | VDIVSQ 000100 ..... ..... ..... 00100001011 @VX |
| 1521 | VDIVUQ 000100 ..... ..... ..... 00000001011 @VX |
| 1522 | |
| 1523 | VDIVESW 000100 ..... ..... ..... 01110001011 @VX |
| 1524 | VDIVEUW 000100 ..... ..... ..... 01010001011 @VX |
| 1525 | VDIVESD 000100 ..... ..... ..... 01111001011 @VX |
| 1526 | VDIVEUD 000100 ..... ..... ..... 01011001011 @VX |
| 1527 | VDIVESQ 000100 ..... ..... ..... 01100001011 @VX |
| 1528 | VDIVEUQ 000100 ..... ..... ..... 01000001011 @VX |
| 1529 | |
| 1530 | VMODSW 000100 ..... ..... ..... 11110001011 @VX |
| 1531 | VMODUW 000100 ..... ..... ..... 11010001011 @VX |
| 1532 | VMODSD 000100 ..... ..... ..... 11111001011 @VX |
| 1533 | VMODUD 000100 ..... ..... ..... 11011001011 @VX |
| 1534 | VMODSQ 000100 ..... ..... ..... 11100001011 @VX |
| 1535 | VMODUQ 000100 ..... ..... ..... 11000001011 @VX |
| 1536 | |
| 1537 | ## SLB Management Instructions |
| 1538 | |
| 1539 | SLBIE 011111 ----- ----- ..... 0110110010 - @X_rb |
| 1540 | SLBIEG 011111 ..... ----- ..... 0111010010 - @X_tb |
| 1541 | |
| 1542 | SLBIA 011111 --... ----- ----- 0111110010 - @X_ih |
| 1543 | SLBIAG 011111 ..... ----. ----- 1101010010 - @X_rs_l |
| 1544 | |
| 1545 | SLBMTE 011111 ..... ----- ..... 0110010010 - @X_tb |
| 1546 | |
| 1547 | SLBMFEV 011111 ..... ----- ..... 1101010011 - @X_tb |
| 1548 | SLBMFEE 011111 ..... ----- ..... 1110010011 - @X_tb |
| 1549 | |
| 1550 | SLBFEE 011111 ..... ----- ..... 1111010011 1 @X_tb |
| 1551 | |
| 1552 | SLBSYNC 011111 ----- ----- ----- 0101010010 - |
| 1553 | |
| 1554 | ## TLB Management Instructions |
| 1555 | |
| 1556 | &X_tlbie rb rs ric prs:bool r:bool |
| 1557 | @X_tlbie ...... rs:5 - ric:2 prs:1 r:1 rb:5 .......... - &X_tlbie |
| 1558 | |
| 1559 | TLBIE 011111 ..... - .. . . ..... 0100110010 - @X_tlbie |
| 1560 | TLBIEL 011111 ..... - .. . . ..... 0100010010 - @X_tlbie |
| 1561 | |
| 1562 | # Processor Control Instructions |
| 1563 | |
| 1564 | MSGCLR 011111 ----- ----- ..... 0011101110 - @X_rb |
| 1565 | MSGSND 011111 ----- ----- ..... 0011001110 - @X_rb |
| 1566 | MSGCLRP 011111 ----- ----- ..... 0010101110 - @X_rb |
| 1567 | MSGSNDP 011111 ----- ----- ..... 0010001110 - @X_rb |
| 1568 | MSGSYNC 011111 ----- ----- ----- 1101110110 - |
| 1569 | |
| 1570 | # Memory Barrier Instructions |
| 1571 | |
| 1572 | &X_sync l sc |
| 1573 | @X_sync ...... .. l:3 ... sc:2 ..... .......... . &X_sync |
| 1574 | SYNC 011111 -- ... --- .. ----- 1001010110 - @X_sync |
| 1575 | EIEIO 011111 ----- ----- ----- 1101010110 - |
| 1576 | ISYNC 010011 ----- ----- ----- 0010010110 - |
| 1577 | |
| 1578 | # Condition Register Field Instruction |
| 1579 | |
| 1580 | &XL_bfa bf bfa |
| 1581 | @XL_bfa ...... bf:3 .. bfa:3 .. ..... ..... ..... . |
| 1582 | MCRF 010011 ... -- ... -- ----- 00000 00000 - @XL_bfa |
| 1583 | |
| 1584 | # Wait Instructions |
| 1585 | |
| 1586 | # We can use the same X_wait argument set for both WAIT and older ISA2.x |
| 1587 | # compliant WAIT_2_x. Depending on the version, we may or may not use the |
| 1588 | # arguments. For more information, check do_wait() helper. |
| 1589 | |
| 1590 | &X_wait wc pl |
| 1591 | @X_wait ...... ..- wc:2 --- pl:2 ----- .......... - &X_wait |
| 1592 | |
| 1593 | # According to ISA v3.1, bit 6 and 7 are implementation dependent and "unless |
| 1594 | # the intention is to use the implementation-dependent field, these bits must be |
| 1595 | # coded zero". Hence, we code them to 0. |
| 1596 | WAIT 011111 00-.. ---.. ----- 0000011110 - @X_wait |
| 1597 | WAIT_ISA_2_X 011111 ---.. ---.. ----- 0000111110 - @X_wait |
| 1598 | |
| 1599 | # Branch History Rolling Buffer (BHRB) Instructions |
| 1600 | |
| 1601 | &XFX_bhrbe rt bhrbe |
| 1602 | @XFX_bhrbe ...... rt:5 bhrbe:10 .......... - &XFX_bhrbe |
| 1603 | |
| 1604 | MFBHRBE 011111 ..... ..... ..... 0100101110 - @XFX_bhrbe |
| 1605 | CLRBHRB 011111 ----- ----- ----- 0110101110 - |
| 1606 | |
| 1607 | # Branch Instructions |
| 1608 | %li 2:24 !function=times_4 |
| 1609 | &I_b li aa:bool lk:bool |
| 1610 | @I_b ...... ........................ aa:1 lk:1 &I_b li=%li |
| 1611 | |
| 1612 | B 010010 ........................ . . @I_b |
| 1613 | |
| 1614 | %bd 2:14 !function=times_4 |
| 1615 | &bcond bo:uint32_t bi bd aa:bool lk:bool |
| 1616 | @B_bcond ...... bo:5 bi:5 .............. aa:1 lk:1 &bcond bd=%bd |
| 1617 | |
| 1618 | BC 010000 ..... ..... .............. . . @B_bcond |
| 1619 | |
| 1620 | &bclr bo bi bh lk:bool |
| 1621 | @XL_bclr ...... bo:5 bi:5 --- bh:2 .......... lk:1 &bclr |
| 1622 | |
| 1623 | BCLR 010011 ..... ..... ---.. 0000010000 . @XL_bclr |
| 1624 | BCCTR 010011 ..... ..... ---.. 1000010000 . @XL_bclr |
| 1625 | BCTAR 010011 ..... ..... ---.. 1000110000 . @XL_bclr |
| 1626 | |
| 1627 | ## Misc POWER instructions |
| 1628 | |
| 1629 | ATTN 000000 00000 00000 00000 0100000000 0 |
| 1630 | |
| 1631 | # Fused compare-branch instructions for PPE only |
| 1632 | %fcb_bdx 1:s10 !function=times_4 |
| 1633 | &FCB px:bool ra rb:uint64_t bdx lk:bool |
| 1634 | @FCB ...... .. px:1 .. ra:5 rb:5 .......... lk:1 &FCB bdx=%fcb_bdx |
| 1635 | &FCB_bix px:bool bix ra rb:uint64_t bdx lk:bool |
| 1636 | @FCB_bix ...... .. px:1 bix:2 ra:5 rb:5 .......... lk:1 &FCB_bix bdx=%fcb_bdx |
| 1637 | |
| 1638 | CMPWBC 000001 00 . .. ..... ..... .......... . @FCB_bix |
| 1639 | CMPLWBC 000001 01 . .. ..... ..... .......... . @FCB_bix |
| 1640 | CMPWIBC 000001 10 . .. ..... ..... .......... . @FCB_bix |
| 1641 | BNBWI 000001 11 . 00 ..... ..... .......... . @FCB |
| 1642 | BNBW 000001 11 . 01 ..... ..... .......... . @FCB |
| 1643 | CLRBWIBC 000001 11 . 10 ..... ..... .......... . @FCB |
| 1644 | CLRBWBC 000001 11 . 11 ..... ..... .......... . @FCB |
| 1645 | |
| 1646 | # Data Cache Block Query for PPE only |
| 1647 | DCBQ 011111 ..... ..... ..... 0110010110 - @X |
| 1648 | |
| 1649 | # Rotate Doubleword Instructions for PPE only |
| 1650 | RLDICL 011110 ..... ..... ..... ...... 000 . . @MD |
| 1651 | RLDICR 011110 ..... ..... ..... ...... 001 . . @MD |
| 1652 | RLDIMI 011110 ..... ..... ..... ...... 011 . . @MD |