2 # HPPA instruction decode definitions.
4 # Copyright (c) 2018 Richard Henderson <rth@twiddle.net>
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.
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.
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/>.
24 %assemble_sr3 13:1 14:2
25 %assemble_sr3x 13:1 14:2 !function=expand_sr3x
27 %assemble_11a 4:12 0:1 !function=expand_11a
28 %assemble_12 0:s1 2:1 3:10 !function=expand_shl2
29 %assemble_12a 3:13 0:1 !function=expand_12a
30 %assemble_16 0:16 !function=expand_16
31 %assemble_17 0:s1 16:5 2:1 3:10 !function=expand_shl2
32 %assemble_22 0:s1 16:10 2:1 3:10 !function=expand_shl2
33 %assemble_sp 14:2 !function=sp0_if_wide
35 %assemble_21 0:s1 1:11 14:2 16:5 12:2 !function=expand_shl11
39 %sm_imm 16:10 !function=expand_sm_imm
50 %len5 0:5 !function=assemble_6
51 %len6_8 8:1 0:5 !function=assemble_6
52 %len6_12 12:1 0:5 !function=assemble_6
54 %ma_to_m 5:1 13:1 !function=ma_to_m
55 %ma2_to_m 2:2 !function=ma_to_m
56 %pos_to_m 0:1 !function=pos_to_m
57 %neg_to_m 0:1 !function=neg_to_m
58 %a_to_m 2:1 !function=neg_to_m
59 %cmpbid_c 13:2 !function=cmpbid_c
60 %d_5 5:1 !function=pa20_d
61 %d_11 11:1 !function=pa20_d
62 %d_13 13:1 !function=pa20_d
65 # Argument set definitions
70 # All insns that need to form a virtual address should use this set.
71 &ldst t b x disp sp m scale size
76 &rrr_cf_d t r1 r2 cf d
78 &rrr_cf_d_sh t r1 r2 cf d sh
83 &rrb_c_f disp n c f r1 r2
84 &rrb_c_d_f disp n c d f r1 r2
85 &rib_c_f disp n c f r i
86 &rib_c_d_f disp n c d f r i
92 @rr_cf_d ...... r:5 ..... cf:4 ...... . t:5 &rr_cf_d d=%d_5
93 @rrr ...... r2:5 r1:5 .... ....... t:5 &rrr
94 @rrr_cf ...... r2:5 r1:5 cf:4 ....... t:5 &rrr_cf
95 @rrr_cf_d ...... r2:5 r1:5 cf:4 ...... . t:5 &rrr_cf_d d=%d_5
96 @rrr_sh ...... r2:5 r1:5 ........ sh:2 . t:5 &rrr_sh
97 @rrr_cf_d_sh ...... r2:5 r1:5 cf:4 .... sh:2 . t:5 &rrr_cf_d_sh d=%d_5
98 @rrr_cf_d_sh0 ...... r2:5 r1:5 cf:4 ...... . t:5 &rrr_cf_d_sh d=%d_5 sh=0
99 @rri_cf ...... r:5 t:5 cf:4 . ........... &rri_cf i=%lowsign_11
100 @rri_cf_d ...... r:5 t:5 cf:4 . ........... \
101 &rri_cf_d d=%d_11 i=%lowsign_11
103 @rrb_cf ...... r2:5 r1:5 c:3 ........... n:1 . \
104 &rrb_c_f disp=%assemble_12
105 @rrb_cdf ...... r2:5 r1:5 c:3 ........... n:1 . \
106 &rrb_c_d_f disp=%assemble_12
107 @rib_cf ...... r:5 ..... c:3 ........... n:1 . \
108 &rib_c_f disp=%assemble_12 i=%im5_16
109 @rib_cdf ...... r:5 ..... c:3 ........... n:1 . \
110 &rib_c_d_f disp=%assemble_12 i=%im5_16
116 break 000000 ----- ----- --- 00000000 -----
118 mtsp 000000 ----- r:5 ... 11000001 00000 sp=%assemble_sr3
119 mtctl 000000 t:5 r:5 --- 11000010 00000
120 mtsarcm 000000 01011 r:5 --- 11000110 00000
121 mtsm 000000 00000 r:5 000 11000011 00000
123 mfia 000000 ----- 00000 --- 10100101 t:5
124 mfsp 000000 ----- 00000 ... 00100101 t:5 sp=%assemble_sr3
125 mfctl 000000 r:5 00000- e:1 -01000101 t:5
127 sync 000000 ----- ----- 000 00100000 00000 # sync, syncdma
129 ldsid 000000 b:5 ----- sp:2 0 10000101 t:5
131 rsm 000000 .......... 000 01110011 t:5 i=%sm_imm
132 ssm 000000 .......... 000 01101011 t:5 i=%sm_imm
134 rfi 000000 ----- ----- --- 01100000 00000
135 rfi_r 000000 ----- ----- --- 01100101 00000
137 # These are artificial instructions used by QEMU firmware.
138 # They are allocated from the unassigned instruction space.
139 halt 1111 1111 1111 1101 1110 1010 1101 0000
140 reset 1111 1111 1111 1101 1110 1010 1101 0001
141 getshadowregs 1111 1111 1111 1101 1110 1010 1101 0010
147 @addrx ...... b:5 x:5 .. ........ m:1 ..... \
148 &ldst disp=0 scale=0 t=0 sp=0 size=0
150 nop 000001 ----- ----- -- 11001010 0 ----- # fdc, disp
151 nop_addrx 000001 ..... ..... -- 01001010 . ----- @addrx # fdc, index
152 nop_addrx 000001 ..... ..... -- 01001011 . ----- @addrx # fdce
153 fic 000001 ..... ..... --- 0001010 . ----- @addrx # fic 0x0a
154 fic 000001 ..... ..... -- 01001111 . 00000 @addrx # fic 0x4f
155 fic 000001 ..... ..... --- 0001011 . ----- @addrx # fice
156 nop_addrx 000001 ..... ..... -- 01001110 . 00000 @addrx # pdc
158 probe 000001 b:5 ri:5 sp:2 imm:1 100011 write:1 0 t:5
160 # pa1.x tlb insert instructions
161 ixtlbx 000001 b:5 r:5 sp:2 0100000 addr:1 0 00000 data=1
162 ixtlbx 000001 b:5 r:5 ... 000000 addr:1 0 00000 \
163 sp=%assemble_sr3x data=0
165 # pcxl and pcxl2 Fast TLB Insert instructions
166 ixtlbxf 000001 00000 r:5 00 0 data:1 01000 addr:1 0 00000
168 # pa2.0 tlb insert idtlbt and iitlbt instructions
169 ixtlbt 000001 r2:5 r1:5 000 data:1 100000 0 00000 # idtlbt
172 pxtlb 000001 b:5 x:5 sp:2 01001000 m:1 ----- \
173 &ldst disp=0 scale=0 size=0 t=0
174 pxtlb 000001 b:5 x:5 ... 0001000 m:1 ----- \
175 &ldst disp=0 scale=0 size=0 t=0 sp=%assemble_sr3x
178 pxtlb_l 000001 b:5 x:5 sp:2 01011000 m:1 ----- \
179 &ldst disp=0 scale=0 size=0 t=0
180 pxtlb_l 000001 b:5 x:5 ... 0011000 m:1 ----- \
181 &ldst disp=0 scale=0 size=0 t=0 sp=%assemble_sr3x
184 pxtlbe 000001 b:5 x:5 sp:2 01001001 m:1 ----- \
185 &ldst disp=0 scale=0 size=0 t=0
186 pxtlbe 000001 b:5 x:5 ... 0001001 m:1 ----- \
187 &ldst disp=0 scale=0 size=0 t=0 sp=%assemble_sr3x
189 lpa 000001 b:5 x:5 sp:2 01001101 m:1 t:5 \
190 &ldst disp=0 scale=0 size=0
192 lci 000001 ----- ----- -- 01001100 0 t:5
198 andcm 000010 ..... ..... .... 000000 . ..... @rrr_cf_d
199 and 000010 ..... ..... .... 001000 . ..... @rrr_cf_d
200 or 000010 ..... ..... .... 001001 . ..... @rrr_cf_d
201 xor 000010 ..... ..... .... 001010 . ..... @rrr_cf_d
202 uxor 000010 ..... ..... .... 001110 . ..... @rrr_cf_d
203 ds 000010 ..... ..... .... 010001 0 ..... @rrr_cf
204 cmpclr 000010 ..... ..... .... 100010 . ..... @rrr_cf_d
205 uaddcm 000010 ..... ..... .... 100110 . ..... @rrr_cf_d
206 uaddcm_tc 000010 ..... ..... .... 100111 . ..... @rrr_cf_d
207 dcor 000010 ..... 00000 .... 101110 . ..... @rr_cf_d
208 dcor_i 000010 ..... 00000 .... 101111 . ..... @rr_cf_d
210 add 000010 ..... ..... .... 0110.. . ..... @rrr_cf_d_sh
211 add_l 000010 ..... ..... .... 1010.. . ..... @rrr_cf_d_sh
212 add_tsv 000010 ..... ..... .... 1110.. . ..... @rrr_cf_d_sh
214 add_c 000010 ..... ..... .... 011100 . ..... @rrr_cf_d_sh0
215 hshladd 000010 ..... ..... 0000 0111.. 0 ..... @rrr_sh
217 add_c_tsv 000010 ..... ..... .... 111100 . ..... @rrr_cf_d_sh0
219 sub 000010 ..... ..... .... 010000 . ..... @rrr_cf_d
220 sub_tsv 000010 ..... ..... .... 110000 . ..... @rrr_cf_d
221 sub_tc 000010 ..... ..... .... 010011 . ..... @rrr_cf_d
222 sub_tsv_tc 000010 ..... ..... .... 110011 . ..... @rrr_cf_d
224 sub_b 000010 ..... ..... .... 010100 . ..... @rrr_cf_d
225 hshradd 000010 ..... ..... 0000 0101.. 0 ..... @rrr_sh
227 sub_b_tsv 000010 ..... ..... .... 110100 . ..... @rrr_cf_d
229 ldil 001000 t:5 ..................... i=%assemble_21
230 addil 001010 r:5 ..................... i=%assemble_21
231 ldo 001101 b:5 t:5 ................ i=%assemble_16
233 addi 101101 ..... ..... .... 0 ........... @rri_cf
234 addi_tsv 101101 ..... ..... .... 1 ........... @rri_cf
235 addi_tc 101100 ..... ..... .... 0 ........... @rri_cf
236 addi_tc_tsv 101100 ..... ..... .... 1 ........... @rri_cf
238 subi 100101 ..... ..... .... 0 ........... @rri_cf
239 subi_tsv 100101 ..... ..... .... 1 ........... @rri_cf
241 cmpiclr 100100 ..... ..... .... . ........... @rri_cf_d
243 hadd 000010 ..... ..... 00000011 11 0 ..... @rrr
244 hadd_ss 000010 ..... ..... 00000011 01 0 ..... @rrr
245 hadd_us 000010 ..... ..... 00000011 00 0 ..... @rrr
247 havg 000010 ..... ..... 00000010 11 0 ..... @rrr
249 hshl 111110 00000 r:5 100010 i:4 0 t:5 &rri
250 hshr_s 111110 r:5 00000 110011 i:4 0 t:5 &rri
251 hshr_u 111110 r:5 00000 110010 i:4 0 t:5 &rri
253 hsub 000010 ..... ..... 00000001 11 0 ..... @rrr
254 hsub_ss 000010 ..... ..... 00000001 01 0 ..... @rrr
255 hsub_us 000010 ..... ..... 00000001 00 0 ..... @rrr
257 mixh_l 111110 ..... ..... 1 00 00100000 ..... @rrr
258 mixh_r 111110 ..... ..... 1 10 00100000 ..... @rrr
259 mixw_l 111110 ..... ..... 1 00 00000000 ..... @rrr
260 mixw_r 111110 ..... ..... 1 10 00000000 ..... @rrr
262 permh 111110 r1:5 r2:5 0 c0:2 0 c1:2 c2:2 c3:2 0 t:5
268 @ldstx ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5 &ldst disp=0
269 @ldim5 ...... b:5 ..... sp:2 ......... t:5 \
270 &ldst disp=%im5_16 x=0 scale=0 m=%ma_to_m
271 @stim5 ...... b:5 t:5 sp:2 ......... ..... \
272 &ldst disp=%im5_0 x=0 scale=0 m=%ma_to_m
274 ld 000011 ..... ..... .. . 1 -- 00 size:2 ...... @ldim5
275 ld 000011 ..... ..... .. . 0 -- 00 size:2 ...... @ldstx
276 st 000011 ..... ..... .. . 1 -- 10 size:2 ...... @stim5
277 ldc 000011 ..... ..... .. . 1 -- 0111 ...... @ldim5 size=2
278 ldc 000011 ..... ..... .. . 0 -- 0111 ...... @ldstx size=2
279 ldc 000011 ..... ..... .. . 1 -- 0101 ...... @ldim5 size=3
280 ldc 000011 ..... ..... .. . 0 -- 0101 ...... @ldstx size=3
281 lda 000011 ..... ..... .. . 1 -- 0110 ...... @ldim5 size=2
282 lda 000011 ..... ..... .. . 0 -- 0110 ...... @ldstx size=2
283 lda 000011 ..... ..... .. . 1 -- 0100 ...... @ldim5 size=3
284 lda 000011 ..... ..... .. . 0 -- 0100 ...... @ldstx size=3
285 sta 000011 ..... ..... .. . 1 -- 1110 ...... @stim5 size=2
286 sta 000011 ..... ..... .. . 1 -- 1111 ...... @stim5 size=3
287 stby 000011 b:5 r:5 sp:2 a:1 1 -- 1100 m:1 ..... disp=%im5_0
288 stdby 000011 b:5 r:5 sp:2 a:1 1 -- 1101 m:1 ..... disp=%im5_0
290 @fldstwx ...... b:5 x:5 sp:2 scale:1 ....... m:1 ..... \
291 &ldst t=%rt64 disp=0 size=2
292 @fldstwi ...... b:5 ..... sp:2 . ....... . ..... \
293 &ldst t=%rt64 disp=%im5_16 m=%ma_to_m x=0 scale=0 size=2
295 fldw 001001 ..... ..... .. . 0 -- 000 . . ..... @fldstwx
296 fldw 001001 ..... ..... .. . 1 -- 000 . . ..... @fldstwi
297 fstw 001001 ..... ..... .. . 0 -- 100 . . ..... @fldstwx
298 fstw 001001 ..... ..... .. . 1 -- 100 . . ..... @fldstwi
300 @fldstdx ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5 \
302 @fldstdi ...... b:5 ..... sp:2 . ....... . t:5 \
303 &ldst disp=%im5_16 m=%ma_to_m x=0 scale=0 size=3
305 fldd 001011 ..... ..... .. . 0 -- 000 0 . ..... @fldstdx
306 fldd 001011 ..... ..... .. . 1 -- 000 0 . ..... @fldstdi
307 fstd 001011 ..... ..... .. . 0 -- 100 0 . ..... @fldstdx
308 fstd 001011 ..... ..... .. . 1 -- 100 0 . ..... @fldstdi
314 @ldstim11 ...... b:5 t:5 ................ \
315 &ldst sp=%assemble_sp disp=%assemble_11a \
316 m=%ma2_to_m x=0 scale=0 size=3
317 @ldstim14 ...... b:5 t:5 ................ \
318 &ldst sp=%assemble_sp disp=%assemble_16 \
320 @ldstim14m ...... b:5 t:5 ................ \
321 &ldst sp=%assemble_sp disp=%assemble_16 \
322 x=0 scale=0 m=%neg_to_m
323 @ldstim12m ...... b:5 t:5 ................ \
324 &ldst sp=%assemble_sp disp=%assemble_12a \
325 x=0 scale=0 m=%pos_to_m
327 # LDB, LDH, LDW, LDWM
328 ld 010000 ..... ..... .. .............. @ldstim14 size=0
329 ld 010001 ..... ..... .. .............. @ldstim14 size=1
330 ld 010010 ..... ..... .. .............. @ldstim14 size=2
331 ld 010011 ..... ..... .. .............. @ldstim14m size=2
332 ld 010111 ..... ..... .. ...........10. @ldstim12m size=2
334 # STB, STH, STW, STWM
335 st 011000 ..... ..... .. .............. @ldstim14 size=0
336 st 011001 ..... ..... .. .............. @ldstim14 size=1
337 st 011010 ..... ..... .. .............. @ldstim14 size=2
338 st 011011 ..... ..... .. .............. @ldstim14m size=2
339 st 011111 ..... ..... .. ...........10. @ldstim12m size=2
341 fldw 010110 b:5 ..... ................ \
342 &ldst disp=%assemble_12a sp=%assemble_sp \
343 t=%rm64 m=%a_to_m x=0 scale=0 size=2
344 fldw 010111 b:5 ..... .............0.. \
345 &ldst disp=%assemble_12a sp=%assemble_sp \
346 t=%rm64 m=0 x=0 scale=0 size=2
348 fstw 011110 b:5 ..... ................ \
349 &ldst disp=%assemble_12a sp=%assemble_sp \
350 t=%rm64 m=%a_to_m x=0 scale=0 size=2
351 fstw 011111 b:5 ..... .............0.. \
352 &ldst disp=%assemble_12a sp=%assemble_sp \
353 t=%rm64 m=0 x=0 scale=0 size=2
355 ld 010100 ..... ..... .. ............0. @ldstim11
356 fldd 010100 ..... ..... .. ............1. @ldstim11
358 st 011100 ..... ..... .. ............0. @ldstim11
359 fstd 011100 ..... ..... .. ............1. @ldstim11
362 # Floating-point Multiply Add
365 &mpyadd rm1 rm2 ta ra tm
366 @mpyadd ...... rm1:5 rm2:5 ta:5 ra:5 . tm:5 &mpyadd
368 fmpyadd_f 000110 ..... ..... ..... ..... 0 ..... @mpyadd
369 fmpyadd_d 000110 ..... ..... ..... ..... 1 ..... @mpyadd
370 fmpysub_f 100110 ..... ..... ..... ..... 0 ..... @mpyadd
371 fmpysub_d 100110 ..... ..... ..... ..... 1 ..... @mpyadd
374 # Conditional Branches
377 bb_sar 110000 00000 r:5 c:1 1 . ........... n:1 . \
378 disp=%assemble_12 d=%d_13
379 bb_imm 110001 p:5 r:5 c:1 1 . ........... n:1 . \
380 disp=%assemble_12 d=%d_13
382 movb 110010 ..... ..... ... ........... . . @rrb_cf f=0
383 movbi 110011 ..... ..... ... ........... . . @rib_cf f=0
385 cmpb 100000 ..... ..... ... ........... . . @rrb_cdf d=0 f=0
386 cmpb 100010 ..... ..... ... ........... . . @rrb_cdf d=0 f=1
387 cmpb 100111 ..... ..... ... ........... . . @rrb_cdf d=1 f=0
388 cmpb 101111 ..... ..... ... ........... . . @rrb_cdf d=1 f=1
389 cmpbi 100001 ..... ..... ... ........... . . @rib_cdf d=0 f=0
390 cmpbi 100011 ..... ..... ... ........... . . @rib_cdf d=0 f=1
391 cmpbi 111011 r:5 ..... f:1 .. ........... n:1 . \
392 &rib_c_d_f d=1 disp=%assemble_12 c=%cmpbid_c i=%im5_16
394 addb 101000 ..... ..... ... ........... . . @rrb_cf f=0
395 addb 101010 ..... ..... ... ........... . . @rrb_cf f=1
396 addbi 101001 ..... ..... ... ........... . . @rib_cf f=0
397 addbi 101011 ..... ..... ... ........... . . @rib_cf f=1
400 # Shift, Extract, Deposit
403 shrp_sar 110100 r2:5 r1:5 c:3 00 0 d:1 0000 t:5
404 shrp_imm 110100 r2:5 r1:5 c:3 01 0 cpos:5 t:5 d=0
405 shrp_imm 110100 r2:5 r1:5 c:3 0. 1 ..... t:5 \
408 extr_sar 110100 r:5 t:5 c:3 10 se:1 00 000 ..... d=0 len=%len5
409 extr_sar 110100 r:5 t:5 c:3 10 se:1 1. 000 ..... d=1 len=%len6_8
410 extr_imm 110100 r:5 t:5 c:3 11 se:1 pos:5 ..... d=0 len=%len5
411 extr_imm 110110 r:5 t:5 c:3 .. se:1 ..... ..... \
412 d=1 len=%len6_12 pos=%cpos6_11
414 dep_sar 110101 t:5 r:5 c:3 00 nz:1 00 000 ..... d=0 len=%len5
415 dep_sar 110101 t:5 r:5 c:3 00 nz:1 1. 000 ..... d=1 len=%len6_8
416 dep_imm 110101 t:5 r:5 c:3 01 nz:1 cpos:5 ..... d=0 len=%len5
417 dep_imm 111100 t:5 r:5 c:3 .. nz:1 ..... ..... \
418 d=1 len=%len6_12 cpos=%cpos6_11
419 depi_sar 110101 t:5 ..... c:3 10 nz:1 d:1 . 000 ..... \
420 i=%im5_16 len=%len6_8
421 depi_imm 110101 t:5 ..... c:3 11 nz:1 cpos:5 ..... \
422 d=0 i=%im5_16 len=%len5
423 depi_imm 111101 t:5 ..... c:3 .. nz:1 ..... ..... \
424 d=1 i=%im5_16 len=%len6_12 cpos=%cpos6_11
431 @be ...... b:5 ..... ... ........... n:1 . \
432 &BE disp=%assemble_17 sp=%assemble_sr3
434 be 111000 ..... ..... ... ........... . . @be l=0
435 be 111001 ..... ..... ... ........... . . @be l=31
442 @bl ...... l:5 ..... ... ........... n:1 . &BL disp=%assemble_17
445 bl 111010 ..... ..... 000 ........... . . @bl
446 bl 111010 ..... ..... 100 ........... . . @bl
447 # B,L (long displacement)
448 bl 111010 ..... ..... 101 ........... n:1 . &BL l=2 \
450 b_gate 111010 ..... ..... 001 ........... . . @bl
451 blr 111010 l:5 x:5 010 00000000000 n:1 0
452 nopbts 111010 00000 00000 010 0---------1 0 1 # clrbts/popbts
453 nopbts 111010 00000 ----- 010 00000000000 0 1 # pushbts/pushnom
454 bv 111010 b:5 x:5 110 00000000000 n:1 0
455 bve 111010 b:5 00000 110 10000000000 n:1 - l=0
456 bve 111010 b:5 00000 111 10000000000 n:1 - l=2
459 # FP Fused Multiple-Add
462 fmpyfadd_f 101110 ..... ..... ... . 0 ... . . neg:1 ..... \
463 rm1=%ra64 rm2=%rb64 ra3=%rc64 t=%rt64
464 fmpyfadd_d 101110 rm1:5 rm2:5 ... 0 1 ..0 0 0 neg:1 t:5 ra3=%rc32
474 @f0c_0 ...... r:5 00000 ..... 00 000 0 t:5 &fclass01
475 @f0c_1 ...... r:5 000.. ..... 01 000 0 t:5 &fclass01
476 @f0c_2 ...... r1:5 r2:5 y:3 .. 10 000 . c:5 &fclass2
477 @f0c_3 ...... r1:5 r2:5 ..... 11 000 0 t:5 &fclass3
479 @f0e_f_0 ...... ..... 00000 ... 0 0 000 .. 0 ..... \
480 &fclass01 r=%ra64 t=%rt64
481 @f0e_d_0 ...... r:5 00000 ... 0 1 000 00 0 t:5 &fclass01
483 @f0e_ff_1 ...... ..... 000 ... 0000 010 .. 0 ..... \
484 &fclass01 r=%ra64 t=%rt64
485 @f0e_fd_1 ...... ..... 000 ... 0100 010 .0 0 t:5 &fclass01 r=%ra64
486 @f0e_df_1 ...... r:5 000 ... 0001 010 0. 0 ..... &fclass01 t=%rt64
487 @f0e_dd_1 ...... r:5 000 ... 0101 010 00 0 t:5 &fclass01
489 @f0e_f_2 ...... ..... ..... y:3 .0 100 .00 c:5 \
490 &fclass2 r1=%ra64 r2=%rb64
491 @f0e_d_2 ...... r1:5 r2:5 y:3 01 100 000 c:5 &fclass2
493 @f0e_f_3 ...... ..... ..... ... .0 110 ..0 ..... \
494 &fclass3 r1=%ra64 r2=%rb64 t=%rt64
495 @f0e_d_3 ...... r1:5 r2:5 ... 01 110 000 t:5 &fclass3
497 # Floating point class 0
499 fid_f 001100 00000 00000 000 00 000000 00000
501 fcpy_f 001100 ..... ..... 010 00 ...... ..... @f0c_0
502 fabs_f 001100 ..... ..... 011 00 ...... ..... @f0c_0
503 fsqrt_f 001100 ..... ..... 100 00 ...... ..... @f0c_0
504 frnd_f 001100 ..... ..... 101 00 ...... ..... @f0c_0
505 fneg_f 001100 ..... ..... 110 00 ...... ..... @f0c_0
506 fnegabs_f 001100 ..... ..... 111 00 ...... ..... @f0c_0
508 fcpy_d 001100 ..... ..... 010 01 ...... ..... @f0c_0
509 fabs_d 001100 ..... ..... 011 01 ...... ..... @f0c_0
510 fsqrt_d 001100 ..... ..... 100 01 ...... ..... @f0c_0
511 frnd_d 001100 ..... ..... 101 01 ...... ..... @f0c_0
512 fneg_d 001100 ..... ..... 110 01 ...... ..... @f0c_0
513 fnegabs_d 001100 ..... ..... 111 01 ...... ..... @f0c_0
515 fcpy_f 001110 ..... ..... 010 ........ ..... @f0e_f_0
516 fabs_f 001110 ..... ..... 011 ........ ..... @f0e_f_0
517 fsqrt_f 001110 ..... ..... 100 ........ ..... @f0e_f_0
518 frnd_f 001110 ..... ..... 101 ........ ..... @f0e_f_0
519 fneg_f 001110 ..... ..... 110 ........ ..... @f0e_f_0
520 fnegabs_f 001110 ..... ..... 111 ........ ..... @f0e_f_0
522 fcpy_d 001110 ..... ..... 010 ........ ..... @f0e_d_0
523 fabs_d 001110 ..... ..... 011 ........ ..... @f0e_d_0
524 fsqrt_d 001110 ..... ..... 100 ........ ..... @f0e_d_0
525 frnd_d 001110 ..... ..... 101 ........ ..... @f0e_d_0
526 fneg_d 001110 ..... ..... 110 ........ ..... @f0e_d_0
527 fnegabs_d 001110 ..... ..... 111 ........ ..... @f0e_d_0
529 # Floating point class 1
532 fcnv_d_f 001100 ..... ... 000 00 01 ...... ..... @f0c_1
533 fcnv_f_d 001100 ..... ... 000 01 00 ...... ..... @f0c_1
535 fcnv_d_f 001110 ..... ... 000 .......... ..... @f0e_df_1
536 fcnv_f_d 001110 ..... ... 000 .......... ..... @f0e_fd_1
539 fcnv_w_f 001100 ..... ... 001 00 00 ...... ..... @f0c_1
540 fcnv_q_f 001100 ..... ... 001 00 01 ...... ..... @f0c_1
541 fcnv_w_d 001100 ..... ... 001 01 00 ...... ..... @f0c_1
542 fcnv_q_d 001100 ..... ... 001 01 01 ...... ..... @f0c_1
544 fcnv_w_f 001110 ..... ... 001 .......... ..... @f0e_ff_1
545 fcnv_q_f 001110 ..... ... 001 .......... ..... @f0e_df_1
546 fcnv_w_d 001110 ..... ... 001 .......... ..... @f0e_fd_1
547 fcnv_q_d 001110 ..... ... 001 .......... ..... @f0e_dd_1
550 fcnv_f_w 001100 ..... ... 010 00 00 ...... ..... @f0c_1
551 fcnv_d_w 001100 ..... ... 010 00 01 ...... ..... @f0c_1
552 fcnv_f_q 001100 ..... ... 010 01 00 ...... ..... @f0c_1
553 fcnv_d_q 001100 ..... ... 010 01 01 ...... ..... @f0c_1
555 fcnv_f_w 001110 ..... ... 010 .......... ..... @f0e_ff_1
556 fcnv_d_w 001110 ..... ... 010 .......... ..... @f0e_df_1
557 fcnv_f_q 001110 ..... ... 010 .......... ..... @f0e_fd_1
558 fcnv_d_q 001110 ..... ... 010 .......... ..... @f0e_dd_1
561 fcnv_t_f_w 001100 ..... ... 011 00 00 ...... ..... @f0c_1
562 fcnv_t_d_w 001100 ..... ... 011 00 01 ...... ..... @f0c_1
563 fcnv_t_f_q 001100 ..... ... 011 01 00 ...... ..... @f0c_1
564 fcnv_t_d_q 001100 ..... ... 011 01 01 ...... ..... @f0c_1
566 fcnv_t_f_w 001110 ..... ... 011 .......... ..... @f0e_ff_1
567 fcnv_t_d_w 001110 ..... ... 011 .......... ..... @f0e_df_1
568 fcnv_t_f_q 001110 ..... ... 011 .......... ..... @f0e_fd_1
569 fcnv_t_d_q 001110 ..... ... 011 .......... ..... @f0e_dd_1
572 fcnv_uw_f 001100 ..... ... 101 00 00 ...... ..... @f0c_1
573 fcnv_uq_f 001100 ..... ... 101 00 01 ...... ..... @f0c_1
574 fcnv_uw_d 001100 ..... ... 101 01 00 ...... ..... @f0c_1
575 fcnv_uq_d 001100 ..... ... 101 01 01 ...... ..... @f0c_1
577 fcnv_uw_f 001110 ..... ... 101 .......... ..... @f0e_ff_1
578 fcnv_uq_f 001110 ..... ... 101 .......... ..... @f0e_df_1
579 fcnv_uw_d 001110 ..... ... 101 .......... ..... @f0e_fd_1
580 fcnv_uq_d 001110 ..... ... 101 .......... ..... @f0e_dd_1
583 fcnv_f_uw 001100 ..... ... 110 00 00 ...... ..... @f0c_1
584 fcnv_d_uw 001100 ..... ... 110 00 01 ...... ..... @f0c_1
585 fcnv_f_uq 001100 ..... ... 110 01 00 ...... ..... @f0c_1
586 fcnv_d_uq 001100 ..... ... 110 01 01 ...... ..... @f0c_1
588 fcnv_f_uw 001110 ..... ... 110 .......... ..... @f0e_ff_1
589 fcnv_d_uw 001110 ..... ... 110 .......... ..... @f0e_df_1
590 fcnv_f_uq 001110 ..... ... 110 .......... ..... @f0e_fd_1
591 fcnv_d_uq 001110 ..... ... 110 .......... ..... @f0e_dd_1
594 fcnv_t_f_uw 001100 ..... ... 111 00 00 ...... ..... @f0c_1
595 fcnv_t_d_uw 001100 ..... ... 111 00 01 ...... ..... @f0c_1
596 fcnv_t_f_uq 001100 ..... ... 111 01 00 ...... ..... @f0c_1
597 fcnv_t_d_uq 001100 ..... ... 111 01 01 ...... ..... @f0c_1
599 fcnv_t_f_uw 001110 ..... ... 111 .......... ..... @f0e_ff_1
600 fcnv_t_d_uw 001110 ..... ... 111 .......... ..... @f0e_df_1
601 fcnv_t_f_uq 001110 ..... ... 111 .......... ..... @f0e_fd_1
602 fcnv_t_d_uq 001110 ..... ... 111 .......... ..... @f0e_dd_1
604 # Floating point class 2
606 ftest 001100 00000 00000 y:3 00 10000 1 c:5
608 fcmp_f 001100 ..... ..... ... 00 ..... 0 ..... @f0c_2
609 fcmp_d 001100 ..... ..... ... 01 ..... 0 ..... @f0c_2
611 fcmp_f 001110 ..... ..... ... ..... ... ..... @f0e_f_2
612 fcmp_d 001110 ..... ..... ... ..... ... ..... @f0e_d_2
614 # Floating point class 3
616 fadd_f 001100 ..... ..... 000 00 ...... ..... @f0c_3
617 fsub_f 001100 ..... ..... 001 00 ...... ..... @f0c_3
618 fmpy_f 001100 ..... ..... 010 00 ...... ..... @f0c_3
619 fdiv_f 001100 ..... ..... 011 00 ...... ..... @f0c_3
621 fadd_d 001100 ..... ..... 000 01 ...... ..... @f0c_3
622 fsub_d 001100 ..... ..... 001 01 ...... ..... @f0c_3
623 fmpy_d 001100 ..... ..... 010 01 ...... ..... @f0c_3
624 fdiv_d 001100 ..... ..... 011 01 ...... ..... @f0c_3
626 fadd_f 001110 ..... ..... 000 ..... ... ..... @f0e_f_3
627 fsub_f 001110 ..... ..... 001 ..... ... ..... @f0e_f_3
628 fmpy_f 001110 ..... ..... 010 ..... ... ..... @f0e_f_3
629 fdiv_f 001110 ..... ..... 011 ..... ... ..... @f0e_f_3
631 fadd_d 001110 ..... ..... 000 ..... ... ..... @f0e_d_3
632 fsub_d 001110 ..... ..... 001 ..... ... ..... @f0e_d_3
633 fmpy_d 001110 ..... ..... 010 ..... ... ..... @f0e_d_3
634 fdiv_d 001110 ..... ..... 011 ..... ... ..... @f0e_d_3
636 xmpyu 001110 ..... ..... 010 .0111 .00 t:5 r1=%ra64 r2=%rb64
641 diag_btlb 000101 00 0000 0000 0000 0001 0000 0000
642 diag_cout 000101 00 0000 0000 0000 0001 0000 0001
644 # For 32-bit PA-7300LC (PCX-L2)
645 diag_getshadowregs_pa1 000101 00 0000 0000 0001 1010 0000 0000
646 diag_putshadowregs_pa1 000101 00 0000 0000 0001 1010 0100 0000
648 # For 64-bit PA8700 (PCX-W2)
649 diag_getshadowregs_pa2 000101 00 0111 1000 0001 1000 0100 0000
650 diag_putshadowregs_pa2 000101 00 0111 0000 0001 1000 0100 0000
652 diag_unimp 000101 i:26