IDA C++ SDK 9.4
Loading...
Searching...
No Matches
allins.hpp
Go to the documentation of this file.
1/*
2 * Interactive disassembler (IDA).
3 * Copyright (c) 1990-2026 Hex-Rays
4 * ALL RIGHTS RESERVED.
5 *
6 */
7enum
8{
9NN_null = 0, // Unknown Operation
10NN_aaa, // ASCII Adjust after Addition
11NN_aad, // ASCII Adjust AX before Division
12NN_aam, // ASCII Adjust AX after Multiply
13NN_aas, // ASCII Adjust AL after Subtraction
14NN_adc, // Add with Carry
15NN_add, // Add
16NN_and, // Logical AND
17NN_arpl, // Adjust RPL Field of Selector
18NN_bound, // Check Array Index Against Bounds
19NN_bsf, // Bit Scan Forward
20NN_bsr, // Bit Scan Reverse
21NN_bt, // Bit Test
22NN_btc, // Bit Test and Complement
23NN_btr, // Bit Test and Reset
24NN_bts, // Bit Test and Set
25NN_call, // Call Procedure
26NN_callfi, // Indirect Call Far Procedure
27NN_callni, // Indirect Call Near Procedure
28NN_cbw, // AL -> AX (with sign)
29NN_cwde, // AX -> EAX (with sign)
30NN_cdqe, // EAX -> RAX (with sign)
31NN_clc, // Clear Carry Flag
32NN_cld, // Clear Direction Flag
33NN_cli, // Clear Interrupt Flag
34NN_clts, // Clear Task-Switched Flag in CR0
35NN_cmc, // Complement Carry Flag
36NN_cmp, // Compare Two Operands
37NN_cmps, // Compare Strings
38NN_cwd, // AX -> DX:AX (with sign)
39NN_cdq, // EAX -> EDX:EAX (with sign)
40NN_cqo, // RAX -> RDX:RAX (with sign)
41NN_daa, // Decimal Adjust AL after Addition
42NN_das, // Decimal Adjust AL after Subtraction
43NN_dec, // Decrement by 1
44NN_div, // Unsigned Divide
45NN_enterw, // Make Stack Frame for Procedure Parameters
46NN_enter, // Make Stack Frame for Procedure Parameters
47NN_enterd, // Make Stack Frame for Procedure Parameters
48NN_enterq, // Make Stack Frame for Procedure Parameters
49NN_hlt, // Halt
50NN_idiv, // Signed Divide
51NN_imul, // Signed Multiply
52NN_in, // Input from Port
53NN_inc, // Increment by 1
54NN_ins, // Input Byte(s) from Port to String
55NN_int, // Call to Interrupt Procedure
56NN_into, // Call to Interrupt Procedure if Overflow Flag = 1
57NN_int3, // Trap to Debugger
58NN_iretw, // Interrupt Return
59NN_iret, // Interrupt Return
60NN_iretd, // Interrupt Return (use32)
61NN_iretq, // Interrupt Return (use64)
62NN_ja, // Jump if Above (CF=0 & ZF=0)
63NN_jae, // Jump if Above or Equal (CF=0)
64NN_jb, // Jump if Below (CF=1)
65NN_jbe, // Jump if Below or Equal (CF=1 | ZF=1)
66NN_jc, // Jump if Carry (CF=1)
67NN_jcxz, // Jump if CX is 0
68NN_jecxz, // Jump if ECX is 0
69NN_jrcxz, // Jump if RCX is 0
70NN_je, // Jump if Equal (ZF=1)
71NN_jg, // Jump if Greater (ZF=0 & SF=OF)
72NN_jge, // Jump if Greater or Equal (SF=OF)
73NN_jl, // Jump if Less (SF!=OF)
74NN_jle, // Jump if Less or Equal (ZF=1 | SF!=OF)
75NN_jna, // Jump if Not Above (CF=1 | ZF=1)
76NN_jnae, // Jump if Not Above or Equal (CF=1)
77NN_jnb, // Jump if Not Below (CF=0)
78NN_jnbe, // Jump if Not Below or Equal (CF=0 & ZF=0)
79NN_jnc, // Jump if Not Carry (CF=0)
80NN_jne, // Jump if Not Equal (ZF=0)
81NN_jng, // Jump if Not Greater (ZF=1 | SF!=OF)
82NN_jnge, // Jump if Not Greater or Equal (ZF=1)
83NN_jnl, // Jump if Not Less (SF=OF)
84NN_jnle, // Jump if Not Less or Equal (ZF=0 & SF=OF)
85NN_jno, // Jump if Not Overflow (OF=0)
86NN_jnp, // Jump if Not Parity (PF=0)
87NN_jns, // Jump if Not Sign (SF=0)
88NN_jnz, // Jump if Not Zero (ZF=0)
89NN_jo, // Jump if Overflow (OF=1)
90NN_jp, // Jump if Parity (PF=1)
91NN_jpe, // Jump if Parity Even (PF=1)
92NN_jpo, // Jump if Parity Odd (PF=0)
93NN_js, // Jump if Sign (SF=1)
94NN_jz, // Jump if Zero (ZF=1)
95NN_jmp, // Jump
96NN_jmpfi, // Indirect Far Jump
97NN_jmpni, // Indirect Near Jump
98NN_jmpshort, // Jump Short (not used)
99NN_lahf, // Load Flags into AH Register
100NN_lar, // Load Access Right Byte
101NN_lea, // Load Effective Address
102NN_leavew, // High Level Procedure Exit
103NN_leave, // High Level Procedure Exit
104NN_leaved, // High Level Procedure Exit
105NN_leaveq, // High Level Procedure Exit
106NN_lgdt, // Load Global Descriptor Table Register
107NN_lidt, // Load Interrupt Descriptor Table Register
108NN_lgs, // Load Full Pointer to GS:xx
109NN_lss, // Load Full Pointer to SS:xx
110NN_lds, // Load Full Pointer to DS:xx
111NN_les, // Load Full Pointer to ES:xx
112NN_lfs, // Load Full Pointer to FS:xx
113NN_lldt, // Load Local Descriptor Table Register
114NN_lmsw, // Load Machine Status Word
115NN_lock, // Assert LOCK# Signal Prefix
116NN_lods, // Load String
117NN_loopw, // Loop while ECX != 0
118NN_loop, // Loop while CX != 0
119NN_loopd, // Loop while ECX != 0
120NN_loopq, // Loop while RCX != 0
121NN_loopwe, // Loop while CX != 0 and ZF=1
122NN_loope, // Loop while rCX != 0 and ZF=1
123NN_loopde, // Loop while ECX != 0 and ZF=1
124NN_loopqe, // Loop while RCX != 0 and ZF=1
125NN_loopwne, // Loop while CX != 0 and ZF=0
126NN_loopne, // Loop while rCX != 0 and ZF=0
127NN_loopdne, // Loop while ECX != 0 and ZF=0
128NN_loopqne, // Loop while RCX != 0 and ZF=0
129NN_lsl, // Load Segment Limit
130NN_ltr, // Load Task Register
131NN_mov, // Move Data
132NN_movsp, // Move to/from Special Registers
133NN_movs, // Move Byte(s) from String to String
134NN_movsx, // Move with Sign-Extend
135NN_movzx, // Move with Zero-Extend
136NN_mul, // Unsigned Multiplication of AL or AX
137NN_neg, // Two's Complement Negation
138NN_nop, // No Operation
139NN_not, // One's Complement Negation
140NN_or, // Logical Inclusive OR
141NN_out, // Output to Port
142NN_outs, // Output Byte(s) to Port
143NN_pop, // Pop a word from the Stack
144NN_popaw, // Pop all General Registers
145NN_popa, // Pop all General Registers
146NN_popad, // Pop all General Registers (use32)
147NN_popaq, // Pop all General Registers (use64)
148NN_popfw, // Pop Stack into Flags Register
149NN_popf, // Pop Stack into Flags Register
150NN_popfd, // Pop Stack into Eflags Register
151NN_popfq, // Pop Stack into Rflags Register
152NN_push, // Push Operand onto the Stack
153NN_pushaw, // Push all General Registers
154NN_pusha, // Push all General Registers
155NN_pushad, // Push all General Registers (use32)
156NN_pushaq, // Push all General Registers (use64)
157NN_pushfw, // Push Flags Register onto the Stack
158NN_pushf, // Push Flags Register onto the Stack
159NN_pushfd, // Push Flags Register onto the Stack (use32)
160NN_pushfq, // Push Flags Register onto the Stack (use64)
161NN_rcl, // Rotate Through Carry Left
162NN_rcr, // Rotate Through Carry Right
163NN_rol, // Rotate Left
164NN_ror, // Rotate Right
165NN_rep, // Repeat String Operation
166NN_repe, // Repeat String Operation while ZF=1
167NN_repne, // Repeat String Operation while ZF=0
168NN_retn, // Return Near from Procedure
169NN_retf, // Return Far from Procedure
170NN_sahf, // Store AH into Flags Register
171NN_sal, // Shift Arithmetic Left
172NN_sar, // Shift Arithmetic Right
173NN_shl, // Shift Logical Left
174NN_shr, // Shift Logical Right
175NN_sbb, // Integer Subtraction with Borrow
176NN_scas, // Compare String
177NN_seta, // Set Byte if Above (CF=0 & ZF=0)
178NN_setae, // Set Byte if Above or Equal (CF=0)
179NN_setb, // Set Byte if Below (CF=1)
180NN_setbe, // Set Byte if Below or Equal (CF=1 | ZF=1)
181NN_setc, // Set Byte if Carry (CF=1)
182NN_sete, // Set Byte if Equal (ZF=1)
183NN_setg, // Set Byte if Greater (ZF=0 & SF=OF)
184NN_setge, // Set Byte if Greater or Equal (SF=OF)
185NN_setl, // Set Byte if Less (SF!=OF)
186NN_setle, // Set Byte if Less or Equal (ZF=1 | SF!=OF)
187NN_setna, // Set Byte if Not Above (CF=1 | ZF=1)
188NN_setnae, // Set Byte if Not Above or Equal (CF=1)
189NN_setnb, // Set Byte if Not Below (CF=0)
190NN_setnbe, // Set Byte if Not Below or Equal (CF=0 & ZF=0)
191NN_setnc, // Set Byte if Not Carry (CF=0)
192NN_setne, // Set Byte if Not Equal (ZF=0)
193NN_setng, // Set Byte if Not Greater (ZF=1 | SF!=OF)
194NN_setnge, // Set Byte if Not Greater or Equal (ZF=1)
195NN_setnl, // Set Byte if Not Less (SF=OF)
196NN_setnle, // Set Byte if Not Less or Equal (ZF=0 & SF=OF)
197NN_setno, // Set Byte if Not Overflow (OF=0)
198NN_setnp, // Set Byte if Not Parity (PF=0)
199NN_setns, // Set Byte if Not Sign (SF=0)
200NN_setnz, // Set Byte if Not Zero (ZF=0)
201NN_seto, // Set Byte if Overflow (OF=1)
202NN_setp, // Set Byte if Parity (PF=1)
203NN_setpe, // Set Byte if Parity Even (PF=1)
204NN_setpo, // Set Byte if Parity Odd (PF=0)
205NN_sets, // Set Byte if Sign (SF=1)
206NN_setz, // Set Byte if Zero (ZF=1)
207NN_sgdt, // Store Global Descriptor Table Register
208NN_sidt, // Store Interrupt Descriptor Table Register
209NN_shld, // Double Precision Shift Left
210NN_shrd, // Double Precision Shift Right
211NN_sldt, // Store Local Descriptor Table Register
212NN_smsw, // Store Machine Status Word
213NN_stc, // Set Carry Flag
214NN_std, // Set Direction Flag
215NN_sti, // Set Interrupt Flag
216NN_stos, // Store String
217NN_str, // Store Task Register
218NN_sub, // Integer Subtraction
219NN_test, // Logical Compare
220NN_verr, // Verify a Segment for Reading
221NN_verw, // Verify a Segment for Writing
222NN_wait, // Wait until BUSY# Pin is Inactive (HIGH)
223NN_xchg, // Exchange Register/Memory with Register
224NN_xlat, // Table Lookup Translation
225NN_xor, // Logical Exclusive OR
226//
227// 486 instructions
228//
229NN_cmpxchg, // Compare and Exchange
230NN_bswap, // Swap bits in EAX
231NN_xadd, // t<-dest; dest<-src+dest; src<-t
232NN_invd, // Invalidate Data Cache
233NN_wbinvd, // Invalidate Data Cache (write changes)
234NN_invlpg, // Invalidate TLB entry
235//
236// Pentium instructions
237//
238NN_rdmsr, // Read Machine Status Register
239NN_wrmsr, // Write Machine Status Register
240NN_cpuid, // Get CPU ID
241NN_cmpxchg8b, // Compare and Exchange Eight Bytes
242NN_rdtsc, // Read Time Stamp Counter
243NN_rsm, // Resume from System Management Mode
244//
245// Pentium Pro instructions
246//
247NN_cmova, // Move if Above (CF=0 & ZF=0)
248NN_cmovb, // Move if Below (CF=1)
249NN_cmovbe, // Move if Below or Equal (CF=1 | ZF=1)
250NN_cmovg, // Move if Greater (ZF=0 & SF=OF)
251NN_cmovge, // Move if Greater or Equal (SF=OF)
252NN_cmovl, // Move if Less (SF!=OF)
253NN_cmovle, // Move if Less or Equal (ZF=1 | SF!=OF)
254NN_cmovnb, // Move if Not Below (CF=0)
255NN_cmovno, // Move if Not Overflow (OF=0)
256NN_cmovnp, // Move if Not Parity (PF=0)
257NN_cmovns, // Move if Not Sign (SF=0)
258NN_cmovnz, // Move if Not Zero (ZF=0)
259NN_cmovo, // Move if Overflow (OF=1)
260NN_cmovp, // Move if Parity (PF=1)
261NN_cmovs, // Move if Sign (SF=1)
262NN_cmovz, // Move if Zero (ZF=1)
263NN_fcmovb, // Floating Move if Below
264NN_fcmove, // Floating Move if Equal
265NN_fcmovbe, // Floating Move if Below or Equal
266NN_fcmovu, // Floating Move if Unordered
267NN_fcmovnb, // Floating Move if Not Below
268NN_fcmovne, // Floating Move if Not Equal
269NN_fcmovnbe, // Floating Move if Not Below or Equal
270NN_fcmovnu, // Floating Move if Not Unordered
271NN_fcomi, // FP Compare, result in EFLAGS
272NN_fucomi, // FP Unordered Compare, result in EFLAGS
273NN_fcomip, // FP Compare, result in EFLAGS, pop stack
274NN_fucomip, // FP Unordered Compare, result in EFLAGS, pop stack
275NN_rdpmc, // Read Performance Monitor Counter
276//
277// FPP instructuions
278//
279NN_fld, // Load Real
280NN_fst, // Store Real
281NN_fstp, // Store Real and Pop
282NN_fxch, // Exchange Registers
283NN_fild, // Load Integer
284NN_fist, // Store Integer
285NN_fistp, // Store Integer and Pop
286NN_fbld, // Load BCD
287NN_fbstp, // Store BCD and Pop
288NN_fadd, // Add Real
289NN_faddp, // Add Real and Pop
290NN_fiadd, // Add Integer
291NN_fsub, // Subtract Real
292NN_fsubp, // Subtract Real and Pop
293NN_fisub, // Subtract Integer
294NN_fsubr, // Subtract Real Reversed
295NN_fsubrp, // Subtract Real Reversed and Pop
296NN_fisubr, // Subtract Integer Reversed
297NN_fmul, // Multiply Real
298NN_fmulp, // Multiply Real and Pop
299NN_fimul, // Multiply Integer
300NN_fdiv, // Divide Real
301NN_fdivp, // Divide Real and Pop
302NN_fidiv, // Divide Integer
303NN_fdivr, // Divide Real Reversed
304NN_fdivrp, // Divide Real Reversed and Pop
305NN_fidivr, // Divide Integer Reversed
306NN_fsqrt, // Square Root
307NN_fscale, // Scale: st(0) <- st(0) * 2^st(1)
308NN_fprem, // Partial Remainder
309NN_frndint, // Round to Integer
310NN_fxtract, // Extract exponent and significand
311NN_fabs, // Absolute value
312NN_fchs, // Change Sign
313NN_fcom, // Compare Real
314NN_fcomp, // Compare Real and Pop
315NN_fcompp, // Compare Real and Pop Twice
316NN_ficom, // Compare Integer
317NN_ficomp, // Compare Integer and Pop
318NN_ftst, // Test
319NN_fxam, // Examine
320NN_fptan, // Partial tangent
321NN_fpatan, // Partial arctangent
322NN_f2xm1, // 2^x - 1
323NN_fyl2x, // Y * lg2(X)
324NN_fyl2xp1, // Y * lg2(X+1)
325NN_fldz, // Load +0.0
326NN_fld1, // Load +1.0
327NN_fldpi, // Load PI=3.14...
328NN_fldl2t, // Load lg2(10)
329NN_fldl2e, // Load lg2(e)
330NN_fldlg2, // Load lg10(2)
331NN_fldln2, // Load ln(2)
332NN_finit, // Initialize Processor
333NN_fninit, // Initialize Processor (no wait)
334NN_fsetpm, // Set Protected Mode
335NN_fldcw, // Load Control Word
336NN_fstcw, // Store Control Word
337NN_fnstcw, // Store Control Word (no wait)
338NN_fstsw, // Store Status Word
339NN_fnstsw, // Store Status Word (no wait)
340NN_fclex, // Clear Exceptions
341NN_fnclex, // Clear Exceptions (no wait)
342NN_fstenv, // Store Environment
343NN_fnstenv, // Store Environment (no wait)
344NN_fldenv, // Load Environment
345NN_fsave, // Save State
346NN_fnsave, // Save State (no wait)
347NN_frstor, // Restore State
348NN_fincstp, // Increment Stack Pointer
349NN_fdecstp, // Decrement Stack Pointer
350NN_ffree, // Free Register
351NN_fnop, // No Operation
352NN_feni, // (8087 only)
353NN_fneni, // (no wait) (8087 only)
354NN_fdisi, // (8087 only)
355NN_fndisi, // (no wait) (8087 only)
356//
357// 80387 instructions
358//
359NN_fprem1, // Partial Remainder ( < half )
360NN_fsincos, // t<-cos(st); st<-sin(st); push t
361NN_fsin, // Sine
362NN_fcos, // Cosine
363NN_fucom, // Compare Unordered Real
364NN_fucomp, // Compare Unordered Real and Pop
365NN_fucompp, // Compare Unordered Real and Pop Twice
366//
367// Instructions added 28.02.96
368//
369NN_setalc, // Set AL to Carry Flag
370NN_svdc, // Save Register and Descriptor
371NN_rsdc, // Restore Register and Descriptor
372NN_svldt, // Save LDTR and Descriptor
373NN_rsldt, // Restore LDTR and Descriptor
374NN_svts, // Save TR and Descriptor
375NN_rsts, // Restore TR and Descriptor
376NN_icebp, // ICE Break Point
377NN_loadall, // Load the entire CPU state from ES:EDI
378//
379// MMX instructions
380//
381NN_emms, // Empty MMX state
382NN_movd, // Move 32 bits
383NN_movq, // Move 64 bits
384NN_packsswb, // Pack with Signed Saturation (Word->Byte)
385NN_packssdw, // Pack with Signed Saturation (Dword->Word)
386NN_packuswb, // Pack with Unsigned Saturation (Word->Byte)
387NN_paddb, // Packed Add Byte
388NN_paddw, // Packed Add Word
389NN_paddd, // Packed Add Dword
390NN_paddsb, // Packed Add with Saturation (Byte)
391NN_paddsw, // Packed Add with Saturation (Word)
392NN_paddusb, // Packed Add Unsigned with Saturation (Byte)
393NN_paddusw, // Packed Add Unsigned with Saturation (Word)
394NN_pand, // Bitwise Logical And
395NN_pandn, // Bitwise Logical And Not
396NN_pcmpeqb, // Packed Compare for Equal (Byte)
397NN_pcmpeqw, // Packed Compare for Equal (Word)
398NN_pcmpeqd, // Packed Compare for Equal (Dword)
399NN_pcmpgtb, // Packed Compare for Greater Than (Byte)
400NN_pcmpgtw, // Packed Compare for Greater Than (Word)
401NN_pcmpgtd, // Packed Compare for Greater Than (Dword)
402NN_pmaddwd, // Packed Multiply and Add
403NN_pmulhw, // Packed Multiply High
404NN_pmullw, // Packed Multiply Low
405NN_por, // Bitwise Logical Or
406NN_psllw, // Packed Shift Left Logical (Word)
407NN_pslld, // Packed Shift Left Logical (Dword)
408NN_psllq, // Packed Shift Left Logical (Qword)
409NN_psraw, // Packed Shift Right Arithmetic (Word)
410NN_psrad, // Packed Shift Right Arithmetic (Dword)
411NN_psrlw, // Packed Shift Right Logical (Word)
412NN_psrld, // Packed Shift Right Logical (Dword)
413NN_psrlq, // Packed Shift Right Logical (Qword)
414NN_psubb, // Packed Subtract Byte
415NN_psubw, // Packed Subtract Word
416NN_psubd, // Packed Subtract Dword
417NN_psubsb, // Packed Subtract with Saturation (Byte)
418NN_psubsw, // Packed Subtract with Saturation (Word)
419NN_psubusb, // Packed Subtract Unsigned with Saturation (Byte)
420NN_psubusw, // Packed Subtract Unsigned with Saturation (Word)
421NN_punpckhbw, // Unpack High Packed Data (Byte->Word)
422NN_punpckhwd, // Unpack High Packed Data (Word->Dword)
423NN_punpckhdq, // Unpack High Packed Data (Dword->Qword)
424NN_punpcklbw, // Unpack Low Packed Data (Byte->Word)
425NN_punpcklwd, // Unpack Low Packed Data (Word->Dword)
426NN_punpckldq, // Unpack Low Packed Data (Dword->Qword)
427NN_pxor, // Bitwise Logical Exclusive Or
428//
429// Undocumented Deschutes processor instructions
430//
431NN_fxsave, // Fast save FP context
432NN_fxrstor, // Fast restore FP context
433// Pentium II instructions
434NN_sysenter, // Fast Transition to System Call Entry Point
435NN_sysexit, // Fast Transition from System Call Entry Point
436// 3DNow! instructions
437NN_pavgusb, // Packed 8-bit Unsigned Integer Averaging
438NN_pfadd, // Packed Floating-Point Addition
439NN_pfsub, // Packed Floating-Point Subtraction
440NN_pfsubr, // Packed Floating-Point Reverse Subtraction
441NN_pfacc, // Packed Floating-Point Accumulate
442NN_pfcmpge, // Packed Floating-Point Comparison, Greater or Equal
443NN_pfcmpgt, // Packed Floating-Point Comparison, Greater
444NN_pfcmpeq, // Packed Floating-Point Comparison, Equal
445NN_pfmin, // Packed Floating-Point Minimum
446NN_pfmax, // Packed Floating-Point Maximum
447NN_pi2fd, // Packed 32-bit Integer to Floating-Point
448NN_pf2id, // Packed Floating-Point to 32-bit Integer
449NN_pfrcp, // Packed Floating-Point Reciprocal Approximation
450NN_pfrsqrt, // Packed Floating-Point Reciprocal Square Root Approximation
451NN_pfmul, // Packed Floating-Point Multiplication
452NN_pfrcpit1, // Packed Floating-Point Reciprocal First Iteration Step
453NN_pfrsqit1, // Packed Floating-Point Reciprocal Square Root First Iteration Step
454NN_pfrcpit2, // Packed Floating-Point Reciprocal Second Iteration Step
455NN_pmulhrw, // Packed Floating-Point 16-bit Integer Multiply with rounding
456NN_femms, // Faster entry/exit of the MMX or floating-point state
457NN_prefetch, // Prefetch at least a 32-byte line into L1 data cache
458NN_prefetchw, // Prefetch processor cache line into L1 data cache (mark as modified)
459// Pentium III instructions
460NN_addps, // Packed Single-FP Add
461NN_addss, // Scalar Single-FP Add
462NN_andnps, // Bitwise Logical And Not for Single-FP
463NN_andps, // Bitwise Logical And for Single-FP
464NN_cmpps, // Packed Single-FP Compare
465NN_cmpss, // Scalar Single-FP Compare
466NN_comiss, // Scalar Ordered Single-FP Compare and Set EFLAGS
467NN_cvtpi2ps, // Packed signed INT32 to Packed Single-FP conversion
468NN_cvtps2pi, // Packed Single-FP to Packed INT32 conversion
469NN_cvtsi2ss, // Scalar signed INT32 to Single-FP conversion
470NN_cvtss2si, // Scalar Single-FP to signed INT32 conversion
471NN_cvttps2pi, // Packed Single-FP to Packed INT32 conversion (truncate)
472NN_cvttss2si, // Scalar Single-FP to signed INT32 conversion (truncate)
473NN_divps, // Packed Single-FP Divide
474NN_divss, // Scalar Single-FP Divide
475NN_ldmxcsr, // Load Streaming SIMD Extensions Technology Control/Status Register
476NN_maxps, // Packed Single-FP Maximum
477NN_maxss, // Scalar Single-FP Maximum
478NN_minps, // Packed Single-FP Minimum
479NN_minss, // Scalar Single-FP Minimum
480NN_movaps, // Move Aligned Four Packed Single-FP
481NN_movhlps, // Move High to Low Packed Single-FP
482NN_movhps, // Move High Packed Single-FP
483NN_movlhps, // Move Low to High Packed Single-FP
484NN_movlps, // Move Low Packed Single-FP
485NN_movmskps, // Move Mask to Register
486NN_movss, // Move Scalar Single-FP
487NN_movups, // Move Unaligned Four Packed Single-FP
488NN_mulps, // Packed Single-FP Multiply
489NN_mulss, // Scalar Single-FP Multiply
490NN_orps, // Bitwise Logical OR for Single-FP Data
491NN_rcpps, // Packed Single-FP Reciprocal
492NN_rcpss, // Scalar Single-FP Reciprocal
493NN_rsqrtps, // Packed Single-FP Square Root Reciprocal
494NN_rsqrtss, // Scalar Single-FP Square Root Reciprocal
495NN_shufps, // Shuffle Single-FP
496NN_sqrtps, // Packed Single-FP Square Root
497NN_sqrtss, // Scalar Single-FP Square Root
498NN_stmxcsr, // Store Streaming SIMD Extensions Technology Control/Status Register
499NN_subps, // Packed Single-FP Subtract
500NN_subss, // Scalar Single-FP Subtract
501NN_ucomiss, // Scalar Unordered Single-FP Compare and Set EFLAGS
502NN_unpckhps, // Unpack High Packed Single-FP Data
503NN_unpcklps, // Unpack Low Packed Single-FP Data
504NN_xorps, // Bitwise Logical XOR for Single-FP Data
505NN_pavgb, // Packed Average (Byte)
506NN_pavgw, // Packed Average (Word)
507NN_pextrw, // Extract Word
508NN_pinsrw, // Insert Word
509NN_pmaxsw, // Packed Signed Integer Word Maximum
510NN_pmaxub, // Packed Unsigned Integer Byte Maximum
511NN_pminsw, // Packed Signed Integer Word Minimum
512NN_pminub, // Packed Unsigned Integer Byte Minimum
513NN_pmovmskb, // Move Byte Mask to Integer
514NN_pmulhuw, // Packed Multiply High Unsigned
515NN_psadbw, // Packed Sum of Absolute Differences
516NN_pshufw, // Packed Shuffle Word
517NN_maskmovq, // Byte Mask write
518NN_movntps, // Move Aligned Four Packed Single-FP Non Temporal
519NN_movntq, // Move 64 Bits Non Temporal
520NN_prefetcht0, // Prefetch to all cache levels
521NN_prefetcht1, // Prefetch to all cache levels
522NN_prefetcht2, // Prefetch to L2 cache
523NN_prefetchnta, // Prefetch to L1 cache
524NN_sfence, // Store Fence
525// Pentium III Pseudo instructions
526NN_cmpeqps, // Packed Single-FP Compare EQ
527NN_cmpltps, // Packed Single-FP Compare LT
528NN_cmpleps, // Packed Single-FP Compare LE
529NN_cmpunordps, // Packed Single-FP Compare UNORD
530NN_cmpneqps, // Packed Single-FP Compare NOT EQ
531NN_cmpnltps, // Packed Single-FP Compare NOT LT
532NN_cmpnleps, // Packed Single-FP Compare NOT LE
533NN_cmpordps, // Packed Single-FP Compare ORDERED
534NN_cmpeqss, // Scalar Single-FP Compare EQ
535NN_cmpltss, // Scalar Single-FP Compare LT
536NN_cmpless, // Scalar Single-FP Compare LE
537NN_cmpunordss, // Scalar Single-FP Compare UNORD
538NN_cmpneqss, // Scalar Single-FP Compare NOT EQ
539NN_cmpnltss, // Scalar Single-FP Compare NOT LT
540NN_cmpnless, // Scalar Single-FP Compare NOT LE
541NN_cmpordss, // Scalar Single-FP Compare ORDERED
542// AMD K7 instructions
543NN_pf2iw, // Packed Floating-Point to Integer with Sign Extend
544NN_pfnacc, // Packed Floating-Point Negative Accumulate
545NN_pfpnacc, // Packed Floating-Point Mixed Positive-Negative Accumulate
546NN_pi2fw, // Packed 16-bit Integer to Floating-Point
547NN_pswapd, // Packed Swap Double Word
548// Undocumented FP instructions (thanks to norbert.juffa@amd.com)
549NN_fstp1, // Alias of Store Real and Pop
550NN_fcom2, // Alias of Compare Real
551NN_fcomp3, // Alias of Compare Real and Pop
552NN_fxch4, // Alias of Exchange Registers
553NN_fcomp5, // Alias of Compare Real and Pop
554NN_ffreep, // Free Register and Pop
555NN_fxch7, // Alias of Exchange Registers
556NN_fstp8, // Alias of Store Real and Pop
557NN_fstp9, // Alias of Store Real and Pop
558// Pentium 4 instructions
559NN_addpd, // Add Packed Double-Precision Floating-Point Values
560NN_addsd, // Add Scalar Double-Precision Floating-Point Values
561NN_andnpd, // Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values
562NN_andpd, // Bitwise Logical AND of Packed Double-Precision Floating-Point Values
563NN_clflush, // Flush Cache Line
564NN_cmppd, // Compare Packed Double-Precision Floating-Point Values
565NN_cmpsd, // Compare Scalar Double-Precision Floating-Point Values
566NN_comisd, // Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
567NN_cvtdq2pd, // Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values
568NN_cvtdq2ps, // Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
569NN_cvtpd2dq, // Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
570NN_cvtpd2pi, // Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
571NN_cvtpd2ps, // Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision Floating-Point Values
572NN_cvtpi2pd, // Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
573NN_cvtps2dq, // Convert Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
574NN_cvtps2pd, // Convert Packed Single-Precision Floating-Point Values to Packed Double-Precision Floating-Point Values
575NN_cvtsd2si, // Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer
576NN_cvtsd2ss, // Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value
577NN_cvtsi2sd, // Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value
578NN_cvtss2sd, // Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value
579NN_cvttpd2dq, // Convert With Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
580NN_cvttpd2pi, // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
581NN_cvttps2dq, // Convert With Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
582NN_cvttsd2si, // Convert with Truncation Scalar Double-Precision Floating-Point Value to Doubleword Integer
583NN_divpd, // Divide Packed Double-Precision Floating-Point Values
584NN_divsd, // Divide Scalar Double-Precision Floating-Point Values
585NN_lfence, // Load Fence
586NN_maskmovdqu, // Store Selected Bytes of Double Quadword
587NN_maxpd, // Return Maximum Packed Double-Precision Floating-Point Values
588NN_maxsd, // Return Maximum Scalar Double-Precision Floating-Point Value
589NN_mfence, // Memory Fence
590NN_minpd, // Return Minimum Packed Double-Precision Floating-Point Values
591NN_minsd, // Return Minimum Scalar Double-Precision Floating-Point Value
592NN_movapd, // Move Aligned Packed Double-Precision Floating-Point Values
593NN_movdq2q, // Move Quadword from XMM to MMX Register
594NN_movdqa, // Move Aligned Double Quadword
595NN_movdqu, // Move Unaligned Double Quadword
596NN_movhpd, // Move High Packed Double-Precision Floating-Point Values
597NN_movlpd, // Move Low Packed Double-Precision Floating-Point Values
598NN_movmskpd, // Extract Packed Double-Precision Floating-Point Sign Mask
599NN_movntdq, // Store Double Quadword Using Non-Temporal Hint
600NN_movnti, // Store Doubleword Using Non-Temporal Hint
601NN_movntpd, // Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint
602NN_movq2dq, // Move Quadword from MMX to XMM Register
603NN_movsd, // Move Scalar Double-Precision Floating-Point Values
604NN_movupd, // Move Unaligned Packed Double-Precision Floating-Point Values
605NN_mulpd, // Multiply Packed Double-Precision Floating-Point Values
606NN_mulsd, // Multiply Scalar Double-Precision Floating-Point Values
607NN_orpd, // Bitwise Logical OR of Double-Precision Floating-Point Values
608NN_paddq, // Add Packed Quadword Integers
609NN_pause, // Spin Loop Hint
610NN_pmuludq, // Multiply Packed Unsigned Doubleword Integers
611NN_pshufd, // Shuffle Packed Doublewords
612NN_pshufhw, // Shuffle Packed High Words
613NN_pshuflw, // Shuffle Packed Low Words
614NN_pslldq, // Shift Double Quadword Left Logical
615NN_psrldq, // Shift Double Quadword Right Logical
616NN_psubq, // Subtract Packed Quadword Integers
617NN_punpckhqdq, // Unpack High Data
618NN_punpcklqdq, // Unpack Low Data
619NN_shufpd, // Shuffle Packed Double-Precision Floating-Point Values
620NN_sqrtpd, // Compute Square Roots of Packed Double-Precision Floating-Point Values
621NN_sqrtsd, // Compute Square Rootof Scalar Double-Precision Floating-Point Value
622NN_subpd, // Subtract Packed Double-Precision Floating-Point Values
623NN_subsd, // Subtract Scalar Double-Precision Floating-Point Values
624NN_ucomisd, // Unordered Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
625NN_unpckhpd, // Unpack and Interleave High Packed Double-Precision Floating-Point Values
626NN_unpcklpd, // Unpack and Interleave Low Packed Double-Precision Floating-Point Values
627NN_xorpd, // Bitwise Logical OR of Double-Precision Floating-Point Values
628// AMD syscall/sysret instructions
629NN_syscall, // Low latency system call
630NN_sysret, // Return from system call
631// AMD64 instructions
632NN_swapgs, // Exchange GS base with KernelGSBase MSR
633// New Pentium instructions (SSE3)
634NN_movddup, // Move One Double-FP and Duplicate
635NN_movshdup, // Move Packed Single-FP High and Duplicate
636NN_movsldup, // Move Packed Single-FP Low and Duplicate
637// Missing AMD64 instructions
638NN_movsxd, // Move with Sign-Extend Doubleword
639NN_cmpxchg16b, // Compare and Exchange 16 Bytes
640// SSE3 instructions
641NN_addsubpd, // Add /Sub packed DP FP numbers
642NN_addsubps, // Add /Sub packed SP FP numbers
643NN_haddpd, // Add horizontally packed DP FP numbers
644NN_haddps, // Add horizontally packed SP FP numbers
645NN_hsubpd, // Sub horizontally packed DP FP numbers
646NN_hsubps, // Sub horizontally packed SP FP numbers
647NN_monitor, // Set up a linear address range to be monitored by hardware
648NN_mwait, // Wait until write-back store performed within the range specified by the MONITOR instruction
649NN_fisttp, // Store ST in intXX (chop) and pop
650NN_lddqu, // Load unaligned integer 128-bit
651// SSSE3 instructions
652NN_psignb, // Packed SIGN Byte
653NN_psignw, // Packed SIGN Word
654NN_psignd, // Packed SIGN Doubleword
655NN_pshufb, // Packed Shuffle Bytes
656NN_pmulhrsw, // Packed Multiply High with Round and Scale
657NN_pmaddubsw, // Multiply and Add Packed Signed and Unsigned Bytes
658NN_phsubsw, // Packed Horizontal Subtract and Saturate
659NN_phaddsw, // Packed Horizontal Add and Saturate
660NN_phaddw, // Packed Horizontal Add Word
661NN_phaddd, // Packed Horizontal Add Doubleword
662NN_phsubw, // Packed Horizontal Subtract Word
663NN_phsubd, // Packed Horizontal Subtract Doubleword
664NN_palignr, // Packed Align Right
665NN_pabsb, // Packed Absolute Value Byte
666NN_pabsw, // Packed Absolute Value Word
667NN_pabsd, // Packed Absolute Value Doubleword
668// VMX instructions
669NN_vmcall, // Call to VM Monitor
670NN_vmclear, // Clear Virtual Machine Control Structure
671NN_vmlaunch, // Launch Virtual Machine
672NN_vmresume, // Resume Virtual Machine
673NN_vmptrld, // Load Pointer to Virtual Machine Control Structure
674NN_vmptrst, // Store Pointer to Virtual Machine Control Structure
675NN_vmread, // Read Field from Virtual Machine Control Structure
676NN_vmwrite, // Write Field from Virtual Machine Control Structure
677NN_vmxoff, // Leave VMX Operation
678NN_vmxon, // Enter VMX Operation
679// Undefined Instruction
680NN_ud2, // Undefined Instruction
681// Added with x86-64
682NN_rdtscp, // Read Time-Stamp Counter and Processor ID
683// Geode LX 3DNow! extensions
684NN_pfrcpv, // Reciprocal Approximation for a Pair of 32-bit Floats
685NN_pfrsqrtv, // Reciprocal Square Root Approximation for a Pair of 32-bit Floats
686// SSE2 pseudoinstructions
687NN_cmpeqpd, // Packed Double-FP Compare EQ
688NN_cmpltpd, // Packed Double-FP Compare LT
689NN_cmplepd, // Packed Double-FP Compare LE
690NN_cmpunordpd, // Packed Double-FP Compare UNORD
691NN_cmpneqpd, // Packed Double-FP Compare NOT EQ
692NN_cmpnltpd, // Packed Double-FP Compare NOT LT
693NN_cmpnlepd, // Packed Double-FP Compare NOT LE
694NN_cmpordpd, // Packed Double-FP Compare ORDERED
695NN_cmpeqsd, // Scalar Double-FP Compare EQ
696NN_cmpltsd, // Scalar Double-FP Compare LT
697NN_cmplesd, // Scalar Double-FP Compare LE
698NN_cmpunordsd, // Scalar Double-FP Compare UNORD
699NN_cmpneqsd, // Scalar Double-FP Compare NOT EQ
700NN_cmpnltsd, // Scalar Double-FP Compare NOT LT
701NN_cmpnlesd, // Scalar Double-FP Compare NOT LE
702NN_cmpordsd, // Scalar Double-FP Compare ORDERED
703// SSSE4.1 instructions
704NN_blendpd, // Blend Packed Double Precision Floating-Point Values
705NN_blendps, // Blend Packed Single Precision Floating-Point Values
706NN_blendvpd, // Variable Blend Packed Double Precision Floating-Point Values
707NN_blendvps, // Variable Blend Packed Single Precision Floating-Point Values
708NN_dppd, // Dot Product of Packed Double Precision Floating-Point Values
709NN_dpps, // Dot Product of Packed Single Precision Floating-Point Values
710NN_extractps, // Extract Packed Single Precision Floating-Point Value
711NN_insertps, // Insert Packed Single Precision Floating-Point Value
712NN_movntdqa, // Load Double Quadword Non-Temporal Aligned Hint
713NN_mpsadbw, // Compute Multiple Packed Sums of Absolute Difference
714NN_packusdw, // Pack with Unsigned Saturation
715NN_pblendvb, // Variable Blend Packed Bytes
716NN_pblendw, // Blend Packed Words
717NN_pcmpeqq, // Compare Packed Qword Data for Equal
718NN_pextrb, // Extract Byte
719NN_pextrd, // Extract Dword
720NN_pextrq, // Extract Qword
721NN_phminposuw, // Packed Horizontal Word Minimum
722NN_pinsrb, // Insert Byte
723NN_pinsrd, // Insert Dword
724NN_pinsrq, // Insert Qword
725NN_pmaxsb, // Maximum of Packed Signed Byte Integers
726NN_pmaxsd, // Maximum of Packed Signed Dword Integers
727NN_pmaxud, // Maximum of Packed Unsigned Dword Integers
728NN_pmaxuw, // Maximum of Packed Word Integers
729NN_pminsb, // Minimum of Packed Signed Byte Integers
730NN_pminsd, // Minimum of Packed Signed Dword Integers
731NN_pminud, // Minimum of Packed Unsigned Dword Integers
732NN_pminuw, // Minimum of Packed Word Integers
733NN_pmovsxbw, // Packed Move with Sign Extend
734NN_pmovsxbd, // Packed Move with Sign Extend
735NN_pmovsxbq, // Packed Move with Sign Extend
736NN_pmovsxwd, // Packed Move with Sign Extend
737NN_pmovsxwq, // Packed Move with Sign Extend
738NN_pmovsxdq, // Packed Move with Sign Extend
739NN_pmovzxbw, // Packed Move with Zero Extend
740NN_pmovzxbd, // Packed Move with Zero Extend
741NN_pmovzxbq, // Packed Move with Zero Extend
742NN_pmovzxwd, // Packed Move with Zero Extend
743NN_pmovzxwq, // Packed Move with Zero Extend
744NN_pmovzxdq, // Packed Move with Zero Extend
745NN_pmuldq, // Multiply Packed Signed Dword Integers
746NN_pmulld, // Multiply Packed Signed Dword Integers and Store Low Result
747NN_ptest, // Logical Compare
748NN_roundpd, // Round Packed Double Precision Floating-Point Values
749NN_roundps, // Round Packed Single Precision Floating-Point Values
750NN_roundsd, // Round Scalar Double Precision Floating-Point Values
751NN_roundss, // Round Scalar Single Precision Floating-Point Values
752// SSSE4.2 instructions
753NN_crc32, // Accumulate CRC32 Value
754NN_pcmpestri, // Packed Compare Explicit Length Strings, Return Index
755NN_pcmpestrm, // Packed Compare Explicit Length Strings, Return Mask
756NN_pcmpistri, // Packed Compare Implicit Length Strings, Return Index
757NN_pcmpistrm, // Packed Compare Implicit Length Strings, Return Mask
758NN_pcmpgtq, // Compare Packed Data for Greater Than
759NN_popcnt, // Return the Count of Number of Bits Set to 1
760// AMD SSE4a instructions
761NN_extrq, // Extract Field From Register
762NN_insertq, // Insert Field
763NN_movntsd, // Move Non-Temporal Scalar Double-Precision Floating-Point
764NN_movntss, // Move Non-Temporal Scalar Single-Precision Floating-Point
765NN_lzcnt, // Leading Zero Count
766// xsave/xrstor instructions
767NN_xgetbv, // Get Value of Extended Control Register
768NN_xrstor, // Restore Processor Extended States
769NN_xsave, // Save Processor Extended States
770NN_xsetbv, // Set Value of Extended Control Register
771// Intel Safer Mode Extensions (SMX)
772NN_getsec, // Safer Mode Extensions (SMX) Instruction
773// AMD-V Virtualization ISA Extension
774NN_clgi, // Clear Global Interrupt Flag
775NN_invlpga, // Invalidate TLB Entry in a Specified ASID
776NN_skinit, // Secure Init and Jump with Attestation
777NN_stgi, // Set Global Interrupt Flag
778NN_vmexit, // Stop Executing Guest, Begin Executing Host
779NN_vmload, // Load State from VMCB
780NN_vmmcall, // Call VMM
781NN_vmrun, // Run Virtual Machine
782NN_vmsave, // Save State to VMCB
783// VMX+ instructions
784NN_invept, // Invalidate Translations Derived from EPT
785NN_invvpid, // Invalidate Translations Based on VPID
786// Intel Atom instructions
787NN_movbe, // Move Data After Swapping Bytes
788// Intel AES instructions
789NN_aesenc, // Perform One Round of an AES Encryption Flow
790NN_aesenclast, // Perform the Last Round of an AES Encryption Flow
791NN_aesdec, // Perform One Round of an AES Decryption Flow
792NN_aesdeclast, // Perform the Last Round of an AES Decryption Flow
793NN_aesimc, // Perform the AES InvMixColumn Transformation
794NN_aeskeygenassist, // AES Round Key Generation Assist
795// Carryless multiplication
796NN_pclmulqdq, // Carry-Less Multiplication Quadword
797// Returns modifies by operand size prefixes
798NN_retnw, // Return Near from Procedure (use16)
799NN_retnd, // Return Near from Procedure (use32)
800NN_retnq, // Return Near from Procedure (use64)
801NN_retfw, // Return Far from Procedure (use16)
802NN_retfd, // Return Far from Procedure (use32)
803NN_retfq, // Return Far from Procedure (use64)
804// RDRAND support
805NN_rdrand, // Read Random Number
806// new GPR instructions
807NN_adcx, // Unsigned Integer Addition of Two Operands with Carry Flag
808NN_adox, // Unsigned Integer Addition of Two Operands with Overflow Flag
809NN_andn, // Logical AND NOT
810NN_bextr, // Bit Field Extract
811NN_blsi, // Extract Lowest Set Isolated Bit
812NN_blsmsk, // Get Mask Up to Lowest Set Bit
813NN_blsr, // Reset Lowest Set Bit
814NN_bzhi, // Zero High Bits Starting with Specified Bit Position
815NN_clac, // Clear AC Flag in EFLAGS Register
816NN_mulx, // Unsigned Multiply Without Affecting Flags
817NN_pdep, // Parallel Bits Deposit
818NN_pext, // Parallel Bits Extract
819NN_rorx, // Rotate Right Logical Without Affecting Flags
820NN_sarx, // Shift Arithmetically Right Without Affecting Flags
821NN_shlx, // Shift Logically Left Without Affecting Flags
822NN_shrx, // Shift Logically Right Without Affecting Flags
823NN_stac, // Set AC Flag in EFLAGS Register
824NN_tzcnt, // Count the Number of Trailing Zero Bits
825NN_xsaveopt, // Save Processor Extended States Optimized
826NN_invpcid, // Invalidate Processor Context ID
827NN_rdseed, // Read Random Seed
828NN_rdfsbase, // Read FS Segment Base
829NN_rdgsbase, // Read GS Segment Base
830NN_wrfsbase, // Write FS Segment Base
831NN_wrgsbase, // Write GS Segment Base
832// new AVX instructions
833NN_vaddpd, // Add Packed Double-Precision Floating-Point Values
834NN_vaddps, // Packed Single-FP Add
835NN_vaddsd, // Add Scalar Double-Precision Floating-Point Values
836NN_vaddss, // Scalar Single-FP Add
837NN_vaddsubpd, // Add /Sub packed DP FP numbers
838NN_vaddsubps, // Add /Sub packed SP FP numbers
839NN_vaesdec, // Perform One Round of an AES Decryption Flow
840NN_vaesdeclast, // Perform the Last Round of an AES Decryption Flow
841NN_vaesenc, // Perform One Round of an AES Encryption Flow
842NN_vaesenclast, // Perform the Last Round of an AES Encryption Flow
843NN_vaesimc, // Perform the AES InvMixColumn Transformation
844NN_vaeskeygenassist, // AES Round Key Generation Assist
845NN_vandnpd, // Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values
846NN_vandnps, // Bitwise Logical And Not for Single-FP
847NN_vandpd, // Bitwise Logical AND of Packed Double-Precision Floating-Point Values
848NN_vandps, // Bitwise Logical And for Single-FP
849NN_vblendpd, // Blend Packed Double Precision Floating-Point Values
850NN_vblendps, // Blend Packed Single Precision Floating-Point Values
851NN_vblendvpd, // Variable Blend Packed Double Precision Floating-Point Values
852NN_vblendvps, // Variable Blend Packed Single Precision Floating-Point Values
853NN_vbroadcastf128, // Broadcast 128 Bits of Floating-Point Data
854NN_vbroadcasti128, // Broadcast 128 Bits of Integer Data
855NN_vbroadcastsd, // Broadcast Double-Precision Floating-Point Element
856NN_vbroadcastss, // Broadcast Single-Precision Floating-Point Element
857NN_vcmppd, // Compare Packed Double-Precision Floating-Point Values
858NN_vcmpps, // Packed Single-FP Compare
859NN_vcmpsd, // Compare Scalar Double-Precision Floating-Point Values
860NN_vcmpss, // Scalar Single-FP Compare
861NN_vcomisd, // Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
862NN_vcomiss, // Scalar Ordered Single-FP Compare and Set EFLAGS
863NN_vcvtdq2pd, // Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values
864NN_vcvtdq2ps, // Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
865NN_vcvtpd2dq, // Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
866NN_vcvtpd2ps, // Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision Floating-Point Values
867NN_vcvtph2ps, // Convert 16-bit FP Values to Single-Precision FP Values
868NN_vcvtps2dq, // Convert Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
869NN_vcvtps2pd, // Convert Packed Single-Precision Floating-Point Values to Packed Double-Precision Floating-Point Values
870NN_vcvtps2ph, // Convert Single-Precision FP value to 16-bit FP value
871NN_vcvtsd2si, // Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer
872NN_vcvtsd2ss, // Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value
873NN_vcvtsi2sd, // Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value
874NN_vcvtsi2ss, // Scalar signed INT32 to Single-FP conversion
875NN_vcvtss2sd, // Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value
876NN_vcvtss2si, // Scalar Single-FP to signed INT32 conversion
877NN_vcvttpd2dq, // Convert With Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
878NN_vcvttps2dq, // Convert With Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
879NN_vcvttsd2si, // Convert with Truncation Scalar Double-Precision Floating-Point Value to Doubleword Integer
880NN_vcvttss2si, // Scalar Single-FP to signed INT32 conversion (truncate)
881NN_vdivpd, // Divide Packed Double-Precision Floating-Point Values
882NN_vdivps, // Packed Single-FP Divide
883NN_vdivsd, // Divide Scalar Double-Precision Floating-Point Values
884NN_vdivss, // Scalar Single-FP Divide
885NN_vdppd, // Dot Product of Packed Double Precision Floating-Point Values
886NN_vdpps, // Dot Product of Packed Single Precision Floating-Point Values
887NN_vextractf128, // Extract Packed Floating-Point Values
888NN_vextracti128, // Extract Packed Integer Values
889NN_vextractps, // Extract Packed Floating-Point Values
890NN_vfmadd132pd, // Fused Multiply-Add of Packed Double-Precision Floating-Point Values
891NN_vfmadd132ps, // Fused Multiply-Add of Packed Single-Precision Floating-Point Values
892NN_vfmadd132sd, // Fused Multiply-Add of Scalar Double-Precision Floating-Point Values
893NN_vfmadd132ss, // Fused Multiply-Add of Scalar Single-Precision Floating-Point Values
894NN_vfmadd213pd, // Fused Multiply-Add of Packed Double-Precision Floating-Point Values
895NN_vfmadd213ps, // Fused Multiply-Add of Packed Single-Precision Floating-Point Values
896NN_vfmadd213sd, // Fused Multiply-Add of Scalar Double-Precision Floating-Point Values
897NN_vfmadd213ss, // Fused Multiply-Add of Scalar Single-Precision Floating-Point Values
898NN_vfmadd231pd, // Fused Multiply-Add of Packed Double-Precision Floating-Point Values
899NN_vfmadd231ps, // Fused Multiply-Add of Packed Single-Precision Floating-Point Values
900NN_vfmadd231sd, // Fused Multiply-Add of Scalar Double-Precision Floating-Point Values
901NN_vfmadd231ss, // Fused Multiply-Add of Scalar Single-Precision Floating-Point Values
902NN_vfmaddsub132pd, // Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values
903NN_vfmaddsub132ps, // Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values
904NN_vfmaddsub213pd, // Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values
905NN_vfmaddsub213ps, // Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values
906NN_vfmaddsub231pd, // Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values
907NN_vfmaddsub231ps, // Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values
908NN_vfmsub132pd, // Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values
909NN_vfmsub132ps, // Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values
910NN_vfmsub132sd, // Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values
911NN_vfmsub132ss, // Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values
912NN_vfmsub213pd, // Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values
913NN_vfmsub213ps, // Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values
914NN_vfmsub213sd, // Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values
915NN_vfmsub213ss, // Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values
916NN_vfmsub231pd, // Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values
917NN_vfmsub231ps, // Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values
918NN_vfmsub231sd, // Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values
919NN_vfmsub231ss, // Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values
920NN_vfmsubadd132pd, // Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values
921NN_vfmsubadd132ps, // Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values
922NN_vfmsubadd213pd, // Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values
923NN_vfmsubadd213ps, // Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values
924NN_vfmsubadd231pd, // Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values
925NN_vfmsubadd231ps, // Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values
926NN_vfnmadd132pd, // Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values
927NN_vfnmadd132ps, // Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values
928NN_vfnmadd132sd, // Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values
929NN_vfnmadd132ss, // Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values
930NN_vfnmadd213pd, // Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values
931NN_vfnmadd213ps, // Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values
932NN_vfnmadd213sd, // Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values
933NN_vfnmadd213ss, // Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values
934NN_vfnmadd231pd, // Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values
935NN_vfnmadd231ps, // Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values
936NN_vfnmadd231sd, // Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values
937NN_vfnmadd231ss, // Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values
938NN_vfnmsub132pd, // Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values
939NN_vfnmsub132ps, // Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values
940NN_vfnmsub132sd, // Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values
941NN_vfnmsub132ss, // Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values
942NN_vfnmsub213pd, // Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values
943NN_vfnmsub213ps, // Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values
944NN_vfnmsub213sd, // Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values
945NN_vfnmsub213ss, // Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values
946NN_vfnmsub231pd, // Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values
947NN_vfnmsub231ps, // Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values
948NN_vfnmsub231sd, // Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values
949NN_vfnmsub231ss, // Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values
950NN_vgatherdps, // Gather Packed SP FP Values Using Signed Dword Indices
951NN_vgatherdpd, // Gather Packed DP FP Values Using Signed Dword Indices
952NN_vgatherqps, // Gather Packed SP FP Values Using Signed Qword Indices
953NN_vgatherqpd, // Gather Packed DP FP Values Using Signed Qword Indices
954NN_vhaddpd, // Add horizontally packed DP FP numbers
955NN_vhaddps, // Add horizontally packed SP FP numbers
956NN_vhsubpd, // Sub horizontally packed DP FP numbers
957NN_vhsubps, // Sub horizontally packed SP FP numbers
958NN_vinsertf128, // Insert Packed Floating-Point Values
959NN_vinserti128, // Insert Packed Integer Values
960NN_vinsertps, // Insert Packed Single Precision Floating-Point Value
961NN_vlddqu, // Load Unaligned Packed Integer Values
962NN_vldmxcsr, // Load Streaming SIMD Extensions Technology Control/Status Register
963NN_vmaskmovdqu, // Store Selected Bytes of Double Quadword with NT Hint
964NN_vmaskmovpd, // Conditionally Load Packed Double-Precision Floating-Point Values
965NN_vmaskmovps, // Conditionally Load Packed Single-Precision Floating-Point Values
966NN_vmaxpd, // Return Maximum Packed Double-Precision Floating-Point Values
967NN_vmaxps, // Packed Single-FP Maximum
968NN_vmaxsd, // Return Maximum Scalar Double-Precision Floating-Point Value
969NN_vmaxss, // Scalar Single-FP Maximum
970NN_vminpd, // Return Minimum Packed Double-Precision Floating-Point Values
971NN_vminps, // Packed Single-FP Minimum
972NN_vminsd, // Return Minimum Scalar Double-Precision Floating-Point Value
973NN_vminss, // Scalar Single-FP Minimum
974NN_vmovapd, // Move Aligned Packed Double-Precision Floating-Point Values
975NN_vmovaps, // Move Aligned Four Packed Single-FP
976NN_vmovd, // Move 32 bits
977NN_vmovddup, // Move One Double-FP and Duplicate
978NN_vmovdqa, // Move Aligned Double Quadword
979NN_vmovdqu, // Move Unaligned Double Quadword
980NN_vmovhlps, // Move High to Low Packed Single-FP
981NN_vmovhpd, // Move High Packed Double-Precision Floating-Point Values
982NN_vmovhps, // Move High Packed Single-FP
983NN_vmovlhps, // Move Low to High Packed Single-FP
984NN_vmovlpd, // Move Low Packed Double-Precision Floating-Point Values
985NN_vmovlps, // Move Low Packed Single-FP
986NN_vmovmskpd, // Extract Packed Double-Precision Floating-Point Sign Mask
987NN_vmovmskps, // Move Mask to Register
988NN_vmovntdq, // Store Double Quadword Using Non-Temporal Hint
989NN_vmovntdqa, // Load Double Quadword Non-Temporal Aligned Hint
990NN_vmovntpd, // Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint
991NN_vmovntps, // Move Aligned Four Packed Single-FP Non Temporal
992NN_vmovq, // Move 64 bits
993NN_vmovsd, // Move Scalar Double-Precision Floating-Point Values
994NN_vmovshdup, // Move Packed Single-FP High and Duplicate
995NN_vmovsldup, // Move Packed Single-FP Low and Duplicate
996NN_vmovss, // Move Scalar Single-FP
997NN_vmovupd, // Move Unaligned Packed Double-Precision Floating-Point Values
998NN_vmovups, // Move Unaligned Four Packed Single-FP
999NN_vmpsadbw, // Compute Multiple Packed Sums of Absolute Difference
1000NN_vmulpd, // Multiply Packed Double-Precision Floating-Point Values
1001NN_vmulps, // Packed Single-FP Multiply
1002NN_vmulsd, // Multiply Scalar Double-Precision Floating-Point Values
1003NN_vmulss, // Scalar Single-FP Multiply
1004NN_vorpd, // Bitwise Logical OR of Double-Precision Floating-Point Values
1005NN_vorps, // Bitwise Logical OR for Single-FP Data
1006NN_vpabsb, // Packed Absolute Value Byte
1007NN_vpabsd, // Packed Absolute Value Doubleword
1008NN_vpabsw, // Packed Absolute Value Word
1009NN_vpackssdw, // Pack with Signed Saturation (Dword->Word)
1010NN_vpacksswb, // Pack with Signed Saturation (Word->Byte)
1011NN_vpackusdw, // Pack with Unsigned Saturation
1012NN_vpackuswb, // Pack with Unsigned Saturation (Word->Byte)
1013NN_vpaddb, // Packed Add Byte
1014NN_vpaddd, // Packed Add Dword
1015NN_vpaddq, // Add Packed Quadword Integers
1016NN_vpaddsb, // Packed Add with Saturation (Byte)
1017NN_vpaddsw, // Packed Add with Saturation (Word)
1018NN_vpaddusb, // Packed Add Unsigned with Saturation (Byte)
1019NN_vpaddusw, // Packed Add Unsigned with Saturation (Word)
1020NN_vpaddw, // Packed Add Word
1021NN_vpalignr, // Packed Align Right
1022NN_vpand, // Bitwise Logical And
1023NN_vpandn, // Bitwise Logical And Not
1024NN_vpavgb, // Packed Average (Byte)
1025NN_vpavgw, // Packed Average (Word)
1026NN_vpblendd, // Blend Packed Dwords
1027NN_vpblendvb, // Variable Blend Packed Bytes
1028NN_vpblendw, // Blend Packed Words
1029NN_vpbroadcastb, // Broadcast a Byte Integer
1030NN_vpbroadcastd, // Broadcast a Dword Integer
1031NN_vpbroadcastq, // Broadcast a Qword Integer
1032NN_vpbroadcastw, // Broadcast a Word Integer
1033NN_vpclmulqdq, // Carry-Less Multiplication Quadword
1034NN_vpcmpeqb, // Packed Compare for Equal (Byte)
1035NN_vpcmpeqd, // Packed Compare for Equal (Dword)
1036NN_vpcmpeqq, // Compare Packed Qword Data for Equal
1037NN_vpcmpeqw, // Packed Compare for Equal (Word)
1038NN_vpcmpestri, // Packed Compare Explicit Length Strings, Return Index
1039NN_vpcmpestrm, // Packed Compare Explicit Length Strings, Return Mask
1040NN_vpcmpgtb, // Packed Compare for Greater Than (Byte)
1041NN_vpcmpgtd, // Packed Compare for Greater Than (Dword)
1042NN_vpcmpgtq, // Compare Packed Data for Greater Than
1043NN_vpcmpgtw, // Packed Compare for Greater Than (Word)
1044NN_vpcmpistri, // Packed Compare Implicit Length Strings, Return Index
1045NN_vpcmpistrm, // Packed Compare Implicit Length Strings, Return Mask
1046NN_vperm2f128, // Permute Floating-Point Values
1047NN_vperm2i128, // Permute Integer Values
1048NN_vpermd, // Full Doublewords Element Permutation
1049NN_vpermilpd, // Permute Double-Precision Floating-Point Values
1050NN_vpermilps, // Permute Single-Precision Floating-Point Values
1051NN_vpermpd, // Permute Double-Precision Floating-Point Elements
1052NN_vpermps, // Permute Single-Precision Floating-Point Elements
1053NN_vpermq, // Qwords Element Permutation
1054NN_vpextrb, // Extract Byte
1055NN_vpextrd, // Extract Dword
1056NN_vpextrq, // Extract Qword
1057NN_vpextrw, // Extract Word
1058NN_vpgatherdd, // Gather Packed Dword Values Using Signed Dword Indices
1059NN_vpgatherdq, // Gather Packed Qword Values Using Signed Dword Indices
1060NN_vpgatherqd, // Gather Packed Dword Values Using Signed Qword Indices
1061NN_vpgatherqq, // Gather Packed Qword Values Using Signed Qword Indices
1062NN_vphaddd, // Packed Horizontal Add Doubleword
1063NN_vphaddsw, // Packed Horizontal Add and Saturate
1064NN_vphaddw, // Packed Horizontal Add Word
1065NN_vphminposuw, // Packed Horizontal Word Minimum
1066NN_vphsubd, // Packed Horizontal Subtract Doubleword
1067NN_vphsubsw, // Packed Horizontal Subtract and Saturate
1068NN_vphsubw, // Packed Horizontal Subtract Word
1069NN_vpinsrb, // Insert Byte
1070NN_vpinsrd, // Insert Dword
1071NN_vpinsrq, // Insert Qword
1072NN_vpinsrw, // Insert Word
1073NN_vpmaddubsw, // Multiply and Add Packed Signed and Unsigned Bytes
1074NN_vpmaddwd, // Packed Multiply and Add
1075NN_vpmaskmovd, // Conditionally Store Dword Values Using Mask
1076NN_vpmaskmovq, // Conditionally Store Qword Values Using Mask
1077NN_vpmaxsb, // Maximum of Packed Signed Byte Integers
1078NN_vpmaxsd, // Maximum of Packed Signed Dword Integers
1079NN_vpmaxsw, // Packed Signed Integer Word Maximum
1080NN_vpmaxub, // Packed Unsigned Integer Byte Maximum
1081NN_vpmaxud, // Maximum of Packed Unsigned Dword Integers
1082NN_vpmaxuw, // Maximum of Packed Word Integers
1083NN_vpminsb, // Minimum of Packed Signed Byte Integers
1084NN_vpminsd, // Minimum of Packed Signed Dword Integers
1085NN_vpminsw, // Packed Signed Integer Word Minimum
1086NN_vpminub, // Packed Unsigned Integer Byte Minimum
1087NN_vpminud, // Minimum of Packed Unsigned Dword Integers
1088NN_vpminuw, // Minimum of Packed Word Integers
1089NN_vpmovmskb, // Move Byte Mask to Integer
1090NN_vpmovsxbd, // Packed Move with Sign Extend
1091NN_vpmovsxbq, // Packed Move with Sign Extend
1092NN_vpmovsxbw, // Packed Move with Sign Extend
1093NN_vpmovsxdq, // Packed Move with Sign Extend
1094NN_vpmovsxwd, // Packed Move with Sign Extend
1095NN_vpmovsxwq, // Packed Move with Sign Extend
1096NN_vpmovzxbd, // Packed Move with Zero Extend
1097NN_vpmovzxbq, // Packed Move with Zero Extend
1098NN_vpmovzxbw, // Packed Move with Zero Extend
1099NN_vpmovzxdq, // Packed Move with Zero Extend
1100NN_vpmovzxwd, // Packed Move with Zero Extend
1101NN_vpmovzxwq, // Packed Move with Zero Extend
1102NN_vpmuldq, // Multiply Packed Signed Dword Integers
1103NN_vpmulhrsw, // Packed Multiply High with Round and Scale
1104NN_vpmulhuw, // Packed Multiply High Unsigned
1105NN_vpmulhw, // Packed Multiply High
1106NN_vpmulld, // Multiply Packed Signed Dword Integers and Store Low Result
1107NN_vpmullw, // Packed Multiply Low
1108NN_vpmuludq, // Multiply Packed Unsigned Doubleword Integers
1109NN_vpor, // Bitwise Logical Or
1110NN_vpsadbw, // Packed Sum of Absolute Differences
1111NN_vpshufb, // Packed Shuffle Bytes
1112NN_vpshufd, // Shuffle Packed Doublewords
1113NN_vpshufhw, // Shuffle Packed High Words
1114NN_vpshuflw, // Shuffle Packed Low Words
1115NN_vpsignb, // Packed SIGN Byte
1116NN_vpsignd, // Packed SIGN Doubleword
1117NN_vpsignw, // Packed SIGN Word
1118NN_vpslld, // Packed Shift Left Logical (Dword)
1119NN_vpslldq, // Shift Double Quadword Left Logical
1120NN_vpsllq, // Packed Shift Left Logical (Qword)
1121NN_vpsllvd, // Variable Bit Shift Left Logical (Dword)
1122NN_vpsllvq, // Variable Bit Shift Left Logical (Qword)
1123NN_vpsllw, // Packed Shift Left Logical (Word)
1124NN_vpsrad, // Packed Shift Right Arithmetic (Dword)
1125NN_vpsravd, // Variable Bit Shift Right Arithmetic
1126NN_vpsraw, // Packed Shift Right Arithmetic (Word)
1127NN_vpsrld, // Packed Shift Right Logical (Dword)
1128NN_vpsrldq, // Shift Double Quadword Right Logical (Qword)
1129NN_vpsrlq, // Packed Shift Right Logical (Qword)
1130NN_vpsrlvd, // Variable Bit Shift Right Logical (Dword)
1131NN_vpsrlvq, // Variable Bit Shift Right Logical (Qword)
1132NN_vpsrlw, // Packed Shift Right Logical (Word)
1133NN_vpsubb, // Packed Subtract Byte
1134NN_vpsubd, // Packed Subtract Dword
1135NN_vpsubq, // Subtract Packed Quadword Integers
1136NN_vpsubsb, // Packed Subtract with Saturation (Byte)
1137NN_vpsubsw, // Packed Subtract with Saturation (Word)
1138NN_vpsubusb, // Packed Subtract Unsigned with Saturation (Byte)
1139NN_vpsubusw, // Packed Subtract Unsigned with Saturation (Word)
1140NN_vpsubw, // Packed Subtract Word
1141NN_vptest, // Logical Compare
1142NN_vpunpckhbw, // Unpack High Packed Data (Byte->Word)
1143NN_vpunpckhdq, // Unpack High Packed Data (Dword->Qword)
1144NN_vpunpckhqdq, // Unpack High Packed Data (Qword->Xmmword)
1145NN_vpunpckhwd, // Unpack High Packed Data (Word->Dword)
1146NN_vpunpcklbw, // Unpack Low Packed Data (Byte->Word)
1147NN_vpunpckldq, // Unpack Low Packed Data (Dword->Qword)
1148NN_vpunpcklqdq, // Unpack Low Packed Data (Qword->Xmmword)
1149NN_vpunpcklwd, // Unpack Low Packed Data (Word->Dword)
1150NN_vpxor, // Bitwise Logical Exclusive Or
1151NN_vrcpps, // Packed Single-FP Reciprocal
1152NN_vrcpss, // Scalar Single-FP Reciprocal
1153NN_vroundpd, // Round Packed Double Precision Floating-Point Values
1154NN_vroundps, // Round Packed Single Precision Floating-Point Values
1155NN_vroundsd, // Round Scalar Double Precision Floating-Point Values
1156NN_vroundss, // Round Scalar Single Precision Floating-Point Values
1157NN_vrsqrtps, // Packed Single-FP Square Root Reciprocal
1158NN_vrsqrtss, // Scalar Single-FP Square Root Reciprocal
1159NN_vshufpd, // Shuffle Packed Double-Precision Floating-Point Values
1160NN_vshufps, // Shuffle Single-FP
1161NN_vsqrtpd, // Compute Square Roots of Packed Double-Precision Floating-Point Values
1162NN_vsqrtps, // Packed Single-FP Square Root
1163NN_vsqrtsd, // Compute Square Rootof Scalar Double-Precision Floating-Point Value
1164NN_vsqrtss, // Scalar Single-FP Square Root
1165NN_vstmxcsr, // Store Streaming SIMD Extensions Technology Control/Status Register
1166NN_vsubpd, // Subtract Packed Double-Precision Floating-Point Values
1167NN_vsubps, // Packed Single-FP Subtract
1168NN_vsubsd, // Subtract Scalar Double-Precision Floating-Point Values
1169NN_vsubss, // Scalar Single-FP Subtract
1170NN_vtestpd, // Packed Double-Precision Floating-Point Bit Test
1171NN_vtestps, // Packed Single-Precision Floating-Point Bit Test
1172NN_vucomisd, // Unordered Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
1173NN_vucomiss, // Scalar Unordered Single-FP Compare and Set EFLAGS
1174NN_vunpckhpd, // Unpack and Interleave High Packed Double-Precision Floating-Point Values
1175NN_vunpckhps, // Unpack High Packed Single-FP Data
1176NN_vunpcklpd, // Unpack and Interleave Low Packed Double-Precision Floating-Point Values
1177NN_vunpcklps, // Unpack Low Packed Single-FP Data
1178NN_vxorpd, // Bitwise Logical OR of Double-Precision Floating-Point Values
1179NN_vxorps, // Bitwise Logical XOR for Single-FP Data
1180NN_vzeroall, // Zero All YMM Registers
1181NN_vzeroupper, // Zero Upper Bits of YMM Registers
1182// Transactional Synchronization Extensions
1183NN_xabort, // Transaction Abort
1184NN_xbegin, // Transaction Begin
1185NN_xend, // Transaction End
1186NN_xtest, // Test If In Transactional Execution
1187// Virtual PC synthetic instructions
1188NN_vmgetinfo, // Virtual PC - Get VM Information
1189NN_vmsetinfo, // Virtual PC - Set VM Information
1190NN_vmdxdsbl, // Virtual PC - Disable Direct Execution
1191NN_vmdxenbl, // Virtual PC - Enable Direct Execution
1192NN_vmcpuid, // Virtual PC - Virtualized CPU Information
1193NN_vmhlt, // Virtual PC - Halt
1194NN_vmsplaf, // Virtual PC - Spin Lock Acquisition Failed
1195NN_vmpushfd, // Virtual PC - Push virtualized flags register
1196NN_vmpopfd, // Virtual PC - Pop virtualized flags register
1197NN_vmcli, // Virtual PC - Clear Interrupt Flag
1198NN_vmsti, // Virtual PC - Set Interrupt Flag
1199NN_vmiretd, // Virtual PC - Return From Interrupt
1200NN_vmsgdt, // Virtual PC - Store Global Descriptor Table
1201NN_vmsidt, // Virtual PC - Store Interrupt Descriptor Table
1202NN_vmsldt, // Virtual PC - Store Local Descriptor Table
1203NN_vmstr, // Virtual PC - Store Task Register
1204NN_vmsdte, // Virtual PC - Store to Descriptor Table Entry
1205NN_vpcext, // Virtual PC - ISA extension
1206// AMD FMA4
1207NN_vfmaddsubps, // Multiply with Alternating Add/Subtract of Packed Single-Precision Floating-Point
1208NN_vfmaddsubpd, // Multiply with Alternating Add/Subtract of Packed Double-Precision Floating-Point
1209NN_vfmsubaddps, // Multiply with Alternating Subtract/Add of Packed Single-Precision Floating-Point
1210NN_vfmsubaddpd, // Multiply with Alternating Subtract/Add of Packed Double-Precision Floating-Point
1211NN_vfmaddps, // Multiply and Add Packed Single-Precision Floating-Point
1212NN_vfmaddpd, // Multiply and Add Packed Double-Precision Floating-Point
1213NN_vfmaddss, // Multiply and Add Scalar Single-Precision Floating-Point
1214NN_vfmaddsd, // Multiply and Add Scalar Double-Precision Floating-Point
1215NN_vfmsubps, // Multiply and Subtract Packed Single-Precision Floating-Point
1216NN_vfmsubpd, // Multiply and Subtract Packed Double-Precision Floating-Point
1217NN_vfmsubss, // Multiply and Subtract Scalar Single-Precision Floating-Point
1218NN_vfmsubsd, // Multiply and Subtract Scalar Double-Precision Floating-Point
1219NN_vfnmaddps, // Negative Multiply and Add Packed Single-Precision Floating-Point
1220NN_vfnmaddpd, // Negative Multiply and Add Packed Double-Precision Floating-Point
1221NN_vfnmaddss, // Negative Multiply and Add Scalar Single-Precision Floating-Point
1222NN_vfnmaddsd, // Negative Multiply and Add Double Single-Precision Floating-Point
1223NN_vfnmsubps, // Negative Multiply and Subtract Packed Single-Precision Floating-Point
1224NN_vfnmsubpd, // Negative Multiply and Subtract Packed Double-Precision Floating-Point
1225NN_vfnmsubss, // Negative Multiply and Subtract Scalar Single-Precision Floating-Point
1226NN_vfnmsubsd, // Negative Multiply and Subtract Double Single-Precision Floating-Point
1227// Intel Memory Protection Extensions (MPX)
1228NN_bndmk, // Make Bounds
1229NN_bndcl, // Check Lower Bound
1230NN_bndcu, // Check Upper Bound
1231NN_bndcn, // Check Upper Bound
1232NN_bndmov, // Move Bounds
1233NN_bndldx, // Load Extended Bounds Using Address Translation
1234NN_bndstx, // Store Extended Bounds Using Address Translation
1235// New xstate instructions
1236NN_xrstors, // Restore Processor Extended States Supervisor
1237NN_xsavec, // Save Processor Extended States with Compaction
1238NN_xsaves, // Save Processor Extended States Supervisor
1239// PREFETCHWT1 support
1240NN_prefetchwt1, // Prefetch Vector Data Into Caches with Intent to Write and T1 Hint
1241// Memory instructions
1242NN_clflushopt, // Flush a Cache Line Optimized
1243NN_clwb, // Cache Line Write Back
1244NN_pcommit, // Persistent Commit (deprecated by Intel)
1245// Protection Key Rights for User Pages
1246NN_rdpkru, // Read Protection Key Rights for User Pages
1247NN_wrpkru, // Write Data to User Page Key Register
1248// AVX comparison pseudo-ops
1249NN_vcmpeqpd, // Compare Packed Double-Precision Floating-Point Values - Equal (ordered, non-signaling)
1250NN_vcmpltpd, // Compare Packed Double-Precision Floating-Point Values - Less-than (ordered, signaling)
1251NN_vcmplepd, // Compare Packed Double-Precision Floating-Point Values - Less-than-or-equal (ordered, signaling)
1252NN_vcmpunordpd, // Compare Packed Double-Precision Floating-Point Values - Unordered (non-signaling)
1253NN_vcmpneqpd, // Compare Packed Double-Precision Floating-Point Values - Not-equal (unordered, non-signaling)
1254NN_vcmpnltpd, // Compare Packed Double-Precision Floating-Point Values - Not-less-than (unordered, signaling)
1255NN_vcmpnlepd, // Compare Packed Double-Precision Floating-Point Values - Not-less-than-or-equal (unordered, signaling)
1256NN_vcmpordpd, // Compare Packed Double-Precision Floating-Point Values - Ordered (non-signaling)
1257NN_vcmpeq_uqpd, // Compare Packed Double-Precision Floating-Point Values - Equal (unordered, non-signaling)
1258NN_vcmpngepd, // Compare Packed Double-Precision Floating-Point Values - Not-greater-than-or-equal (unordered, signaling)
1259NN_vcmpngtpd, // Compare Packed Double-Precision Floating-Point Values - Not-greater-than (unordered, signaling)
1260NN_vcmpfalsepd, // Compare Packed Double-Precision Floating-Point Values - False (ordered, non-signaling)
1261NN_vcmpneq_oqpd, // Compare Packed Double-Precision Floating-Point Values - Not-equal (ordered, non-signaling)
1262NN_vcmpgepd, // Compare Packed Double-Precision Floating-Point Values - Greater-than-or-equal (ordered, signaling)
1263NN_vcmpgtpd, // Compare Packed Double-Precision Floating-Point Values - Greater-than (ordered, signaling)
1264NN_vcmptruepd, // Compare Packed Double-Precision Floating-Point Values - True (unordered, non-signaling)
1265NN_vcmpeq_ospd, // Compare Packed Double-Precision Floating-Point Values - Equal (ordered, signaling)
1266NN_vcmplt_oqpd, // Compare Packed Double-Precision Floating-Point Values - Less-than (ordered, non-signaling)
1267NN_vcmple_oqpd, // Compare Packed Double-Precision Floating-Point Values - Less-than-or-equal (ordered, non-signaling)
1268NN_vcmpunord_spd, // Compare Packed Double-Precision Floating-Point Values - Unordered (signaling)
1269NN_vcmpneq_uspd, // Compare Packed Double-Precision Floating-Point Values - Not-equal (unordered, signaling)
1270NN_vcmpnlt_uqpd, // Compare Packed Double-Precision Floating-Point Values - Not-less-than (unordered, non-signaling)
1271NN_vcmpnle_uqpd, // Compare Packed Double-Precision Floating-Point Values - Not-less-than-or-equal (unordered, non-signaling)
1272NN_vcmpord_spd, // Compare Packed Double-Precision Floating-Point Values - Ordered (signaling)
1273NN_vcmpeq_uspd, // Compare Packed Double-Precision Floating-Point Values - Equal (unordered, signaling)
1274NN_vcmpnge_uqpd, // Compare Packed Double-Precision Floating-Point Values - Not-greater-than-or-equal (unordered, non-signaling)
1275NN_vcmpngt_uqpd, // Compare Packed Double-Precision Floating-Point Values - Not-greater-than (unordered, non-signaling)
1276NN_vcmpfalse_ospd, // Compare Packed Double-Precision Floating-Point Values - False (ordered, signaling)
1277NN_vcmpneq_ospd, // Compare Packed Double-Precision Floating-Point Values - Not-equal (ordered, signaling)
1278NN_vcmpge_oqpd, // Compare Packed Double-Precision Floating-Point Values - Greater-than-or-equal (ordered, non-signaling)
1279NN_vcmpgt_oqpd, // Compare Packed Double-Precision Floating-Point Values - Greater-than (ordered, non-signaling)
1280NN_vcmptrue_uspd, // Compare Packed Double-Precision Floating-Point Values - True (unordered, signaling)
1281NN_vcmpeqps, // Packed Single-FP Compare - Equal (ordered, non-signaling)
1282NN_vcmpltps, // Packed Single-FP Compare - Less-than (ordered, signaling)
1283NN_vcmpleps, // Packed Single-FP Compare - Less-than-or-equal (ordered, signaling)
1284NN_vcmpunordps, // Packed Single-FP Compare - Unordered (non-signaling)
1285NN_vcmpneqps, // Packed Single-FP Compare - Not-equal (unordered, non-signaling)
1286NN_vcmpnltps, // Packed Single-FP Compare - Not-less-than (unordered, signaling)
1287NN_vcmpnleps, // Packed Single-FP Compare - Not-less-than-or-equal (unordered, signaling)
1288NN_vcmpordps, // Packed Single-FP Compare - Ordered (non-signaling)
1289NN_vcmpeq_uqps, // Packed Single-FP Compare - Equal (unordered, non-signaling)
1290NN_vcmpngeps, // Packed Single-FP Compare - Not-greater-than-or-equal (unordered, signaling)
1291NN_vcmpngtps, // Packed Single-FP Compare - Not-greater-than (unordered, signaling)
1292NN_vcmpfalseps, // Packed Single-FP Compare - False (ordered, non-signaling)
1293NN_vcmpneq_oqps, // Packed Single-FP Compare - Not-equal (ordered, non-signaling)
1294NN_vcmpgeps, // Packed Single-FP Compare - Greater-than-or-equal (ordered, signaling)
1295NN_vcmpgtps, // Packed Single-FP Compare - Greater-than (ordered, signaling)
1296NN_vcmptrueps, // Packed Single-FP Compare - True (unordered, non-signaling)
1297NN_vcmpeq_osps, // Packed Single-FP Compare - Equal (ordered, signaling)
1298NN_vcmplt_oqps, // Packed Single-FP Compare - Less-than (ordered, non-signaling)
1299NN_vcmple_oqps, // Packed Single-FP Compare - Less-than-or-equal (ordered, non-signaling)
1300NN_vcmpunord_sps, // Packed Single-FP Compare - Unordered (signaling)
1301NN_vcmpneq_usps, // Packed Single-FP Compare - Not-equal (unordered, signaling)
1302NN_vcmpnlt_uqps, // Packed Single-FP Compare - Not-less-than (unordered, non-signaling)
1303NN_vcmpnle_uqps, // Packed Single-FP Compare - Not-less-than-or-equal (unordered, non-signaling)
1304NN_vcmpord_sps, // Packed Single-FP Compare - Ordered (signaling)
1305NN_vcmpeq_usps, // Packed Single-FP Compare - Equal (unordered, signaling)
1306NN_vcmpnge_uqps, // Packed Single-FP Compare - Not-greater-than-or-equal (unordered, non-signaling)
1307NN_vcmpngt_uqps, // Packed Single-FP Compare - Not-greater-than (unordered, non-signaling)
1308NN_vcmpfalse_osps, // Packed Single-FP Compare - False (ordered, signaling)
1309NN_vcmpneq_osps, // Packed Single-FP Compare - Not-equal (ordered, signaling)
1310NN_vcmpge_oqps, // Packed Single-FP Compare - Greater-than-or-equal (ordered, non-signaling)
1311NN_vcmpgt_oqps, // Packed Single-FP Compare - Greater-than (ordered, non-signaling)
1312NN_vcmptrue_usps, // Packed Single-FP Compare - True (unordered, signaling)
1313NN_vcmpeqsd, // Compare Scalar Double-Precision Floating-Point Values - Equal (ordered, non-signaling)
1314NN_vcmpltsd, // Compare Scalar Double-Precision Floating-Point Values - Less-than (ordered, signaling)
1315NN_vcmplesd, // Compare Scalar Double-Precision Floating-Point Values - Less-than-or-equal (ordered, signaling)
1316NN_vcmpunordsd, // Compare Scalar Double-Precision Floating-Point Values - Unordered (non-signaling)
1317NN_vcmpneqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-equal (unordered, non-signaling)
1318NN_vcmpnltsd, // Compare Scalar Double-Precision Floating-Point Values - Not-less-than (unordered, signaling)
1319NN_vcmpnlesd, // Compare Scalar Double-Precision Floating-Point Values - Not-less-than-or-equal (unordered, signaling)
1320NN_vcmpordsd, // Compare Scalar Double-Precision Floating-Point Values - Ordered (non-signaling)
1321NN_vcmpeq_uqsd, // Compare Scalar Double-Precision Floating-Point Values - Equal (unordered, non-signaling)
1322NN_vcmpngesd, // Compare Scalar Double-Precision Floating-Point Values - Not-greater-than-or-equal (unordered, signaling)
1323NN_vcmpngtsd, // Compare Scalar Double-Precision Floating-Point Values - Not-greater-than (unordered, signaling)
1324NN_vcmpfalsesd, // Compare Scalar Double-Precision Floating-Point Values - False (ordered, non-signaling)
1325NN_vcmpneq_oqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-equal (ordered, non-signaling)
1326NN_vcmpgesd, // Compare Scalar Double-Precision Floating-Point Values - Greater-than-or-equal (ordered, signaling)
1327NN_vcmpgtsd, // Compare Scalar Double-Precision Floating-Point Values - Greater-than (ordered, signaling)
1328NN_vcmptruesd, // Compare Scalar Double-Precision Floating-Point Values - True (unordered, non-signaling)
1329NN_vcmpeq_ossd, // Compare Scalar Double-Precision Floating-Point Values - Equal (ordered, signaling)
1330NN_vcmplt_oqsd, // Compare Scalar Double-Precision Floating-Point Values - Less-than (ordered, non-signaling)
1331NN_vcmple_oqsd, // Compare Scalar Double-Precision Floating-Point Values - Less-than-or-equal (ordered, non-signaling)
1332NN_vcmpunord_ssd, // Compare Scalar Double-Precision Floating-Point Values - Unordered (signaling)
1333NN_vcmpneq_ussd, // Compare Scalar Double-Precision Floating-Point Values - Not-equal (unordered, signaling)
1334NN_vcmpnlt_uqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-less-than (unordered, non-signaling)
1335NN_vcmpnle_uqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-less-than-or-equal (unordered, non-signaling)
1336NN_vcmpord_ssd, // Compare Scalar Double-Precision Floating-Point Values - Ordered (signaling)
1337NN_vcmpeq_ussd, // Compare Scalar Double-Precision Floating-Point Values - Equal (unordered, signaling)
1338NN_vcmpnge_uqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-greater-than-or-equal (unordered, non-signaling)
1339NN_vcmpngt_uqsd, // Compare Scalar Double-Precision Floating-Point Values - Not-greater-than (unordered, non-signaling)
1340NN_vcmpfalse_ossd, // Compare Scalar Double-Precision Floating-Point Values - False (ordered, signaling)
1341NN_vcmpneq_ossd, // Compare Scalar Double-Precision Floating-Point Values - Not-equal (ordered, signaling)
1342NN_vcmpge_oqsd, // Compare Scalar Double-Precision Floating-Point Values - Greater-than-or-equal (ordered, non-signaling)
1343NN_vcmpgt_oqsd, // Compare Scalar Double-Precision Floating-Point Values - Greater-than (ordered, non-signaling)
1344NN_vcmptrue_ussd, // Compare Scalar Double-Precision Floating-Point Values - True (unordered, signaling)
1345NN_vcmpeqss, // Scalar Single-FP Compare - Equal (ordered, non-signaling)
1346NN_vcmpltss, // Scalar Single-FP Compare - Less-than (ordered, signaling)
1347NN_vcmpless, // Scalar Single-FP Compare - Less-than-or-equal (ordered, signaling)
1348NN_vcmpunordss, // Scalar Single-FP Compare - Unordered (non-signaling)
1349NN_vcmpneqss, // Scalar Single-FP Compare - Not-equal (unordered, non-signaling)
1350NN_vcmpnltss, // Scalar Single-FP Compare - Not-less-than (unordered, signaling)
1351NN_vcmpnless, // Scalar Single-FP Compare - Not-less-than-or-equal (unordered, signaling)
1352NN_vcmpordss, // Scalar Single-FP Compare - Ordered (non-signaling)
1353NN_vcmpeq_uqss, // Scalar Single-FP Compare - Equal (unordered, non-signaling)
1354NN_vcmpngess, // Scalar Single-FP Compare - Not-greater-than-or-equal (unordered, signaling)
1355NN_vcmpngtss, // Scalar Single-FP Compare - Not-greater-than (unordered, signaling)
1356NN_vcmpfalsess, // Scalar Single-FP Compare - False (ordered, non-signaling)
1357NN_vcmpneq_oqss, // Scalar Single-FP Compare - Not-equal (ordered, non-signaling)
1358NN_vcmpgess, // Scalar Single-FP Compare - Greater-than-or-equal (ordered, signaling)
1359NN_vcmpgtss, // Scalar Single-FP Compare - Greater-than (ordered, signaling)
1360NN_vcmptruess, // Scalar Single-FP Compare - True (unordered, non-signaling)
1361NN_vcmpeq_osss, // Scalar Single-FP Compare - Equal (ordered, signaling)
1362NN_vcmplt_oqss, // Scalar Single-FP Compare - Less-than (ordered, non-signaling)
1363NN_vcmple_oqss, // Scalar Single-FP Compare - Less-than-or-equal (ordered, non-signaling)
1364NN_vcmpunord_sss, // Scalar Single-FP Compare - Unordered (signaling)
1365NN_vcmpneq_usss, // Scalar Single-FP Compare - Not-equal (unordered, signaling)
1366NN_vcmpnlt_uqss, // Scalar Single-FP Compare - Not-less-than (unordered, non-signaling)
1367NN_vcmpnle_uqss, // Scalar Single-FP Compare - Not-less-than-or-equal (unordered, non-signaling)
1368NN_vcmpord_sss, // Scalar Single-FP Compare - Ordered (signaling)
1369NN_vcmpeq_usss, // Scalar Single-FP Compare - Equal (unordered, signaling)
1370NN_vcmpnge_uqss, // Scalar Single-FP Compare - Not-greater-than-or-equal (unordered, non-signaling)
1371NN_vcmpngt_uqss, // Scalar Single-FP Compare - Not-greater-than (unordered, non-signaling)
1372NN_vcmpfalse_osss, // Scalar Single-FP Compare - False (ordered, signaling)
1373NN_vcmpneq_osss, // Scalar Single-FP Compare - Not-equal (ordered, signaling)
1374NN_vcmpge_oqss, // Scalar Single-FP Compare - Greater-than-or-equal (ordered, non-signaling)
1375NN_vcmpgt_oqss, // Scalar Single-FP Compare - Greater-than (ordered, non-signaling)
1376NN_vcmptrue_usss, // Scalar Single-FP Compare - True (unordered, signaling)
1377// AVX-512 instructions
1378NN_valignd, // Align Doubleword Vectors
1379NN_valignq, // Align Quadword Vectors
1380NN_vblendmpd, // Blend Float64 Vectors Using an OpMask Control
1381NN_vblendmps, // Blend Float32 Vectors Using an OpMask Control
1382NN_vpblendmb, // Blend Byte Vectors Using an Opmask Control
1383NN_vpblendmw, // Blend Word Vectors Using an Opmask Control
1384NN_vpblendmd, // Blend Int32 Vectors Using an OpMask Control
1385NN_vpblendmq, // Blend Int64 Vectors Using an OpMask Control
1386NN_vbroadcastf32x2, // Load with Broadcast Floating-Point Data
1387NN_vbroadcastf32x4, // Load with Broadcast Floating-Point Data
1388NN_vbroadcastf64x2, // Load with Broadcast Floating-Point Data
1389NN_vbroadcastf32x8, // Load with Broadcast Floating-Point Data
1390NN_vbroadcastf64x4, // Load with Broadcast Floating-Point Data
1391NN_vbroadcasti32x2, // Load Integer and Broadcast
1392NN_vbroadcasti32x4, // Load Integer and Broadcast
1393NN_vbroadcasti64x2, // Load Integer and Broadcast
1394NN_vbroadcasti32x8, // Load Integer and Broadcast
1395NN_vbroadcasti64x4, // Load Integer and Broadcast
1396NN_vcompresspd, // Store Sparse Packed Double-Precision Floating-Point Values into Dense Memory
1397NN_vcompressps, // Store Sparse Packed Single-Precision Floating-Point Values into Dense Memory
1398NN_vcvtpd2qq, // Convert Packed Double-Precision Floating-Point Values to Packed Quadword Integers
1399NN_vcvtpd2udq, // Convert Packed Double-Precision Floating-Point Values to Packed Unsigned Doubleword Integers
1400NN_vcvtpd2uqq, // Convert Packed Double-Precision Floating-Point Values to Packed Unsigned Quadword Integers
1401NN_vcvtps2udq, // Convert Packed Single-Precision Floating-Point Values to Packed Unsigned Doubleword Integer Values
1402NN_vcvtps2qq, // Convert Packed Single Precision Floating-Point Values to Packed Singed Quadword Integer Values
1403NN_vcvtps2uqq, // Convert Packed Single Precision Floating-Point Values to Packed Unsigned Quadword Integer Values
1404NN_vcvtqq2pd, // Convert Packed Quadword Integers to Packed Double-Precision Floating-Point Values
1405NN_vcvtqq2ps, // Convert Packed Quadword Integers to Packed Single-Precision Floating-Point Values
1406NN_vcvtsd2usi, // Convert Scalar Double-Precision Floating-Point Value to Unsigned Doubleword Integer
1407NN_vcvtss2usi, // Convert Scalar Single-Precision Floating-Point Value to Unsigned Doubleword Integer
1408NN_vcvttpd2qq, // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Quadword Integers
1409NN_vcvttpd2udq, // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Unsigned Doubleword Integers
1410NN_vcvttpd2uqq, // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Unsigned Quadword Integers
1411NN_vcvttps2udq, // Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Unsigned Doubleword Integer Values
1412NN_vcvttps2qq, // Convert with Truncation Packed Single Precision Floating-Point Values to Packed Singed Quadword Integer Values
1413NN_vcvttps2uqq, // Convert with Truncation Packed Single Precision Floating-Point Values to Packed Unsigned Quadword Integer Values
1414NN_vcvttsd2usi, // Convert with Truncation Scalar Double-Precision Floating-Point Value to Unsigned Integer
1415NN_vcvttss2usi, // Convert with Truncation Scalar Single-Precision Floating-Point Value to Unsigned Integer
1416NN_vcvtudq2pd, // Convert Packed Unsigned Doubleword Integers to Packed Double-Precision Floating-Point Values
1417NN_vcvtudq2ps, // Convert Packed Unsigned Doubleword Integers to Packed Single-Precision Floating-Point Values
1418NN_vcvtuqq2pd, // Convert Packed Unsigned Quadword Integers to Packed Double-Precision Floating-Point Values
1419NN_vcvtuqq2ps, // Convert Packed Unsigned Quadword Integers to Packed Single-Precision Floating-Point Values
1420NN_vcvtusi2sd, // Convert Unsigned Integer to Scalar Double-Precision Floating-Point Value
1421NN_vcvtusi2ss, // Convert Unsigned Integer to Scalar Single-Precision Floating-Point Value
1422NN_vdbpsadbw, // Double Block Packed Sum-Absolute-Differences (SAD) on Unsigned Bytes
1423NN_vexpandpd, // Load Sparse Packed Double-Precision Floating-Point Values from Dense Memory
1424NN_vexpandps, // Load Sparse Packed Single-Precision Floating-Point Values from Dense Memory
1425NN_vextractf32x4, // Extract Packed Floating-Point Values
1426NN_vextractf64x2, // Extract Packed Floating-Point Values
1427NN_vextractf32x8, // Extract Packed Floating-Point Values
1428NN_vextractf64x4, // Extract Packed Floating-Point Values
1429NN_vextracti32x4, // Extract packed Integer Values
1430NN_vextracti64x2, // Extract packed Integer Values
1431NN_vextracti32x8, // Extract packed Integer Values
1432NN_vextracti64x4, // Extract packed Integer Values
1433NN_vfixupimmpd, // Fix Up Special Packed Float64 Values
1434NN_vfixupimmps, // Fix Up Special Packed Float32 Values
1435NN_vfixupimmsd, // Fix Up Special Scalar Float64 Value
1436NN_vfixupimmss, // Fix Up Special Scalar Float32 Value
1437NN_vfpclasspd, // Tests Types Of a Packed Float64 Values
1438NN_vfpclassps, // Tests Types Of a Packed Float32 Values
1439NN_vfpclasssd, // Tests Types Of a Scalar Float64 Values
1440NN_vfpclassss, // Tests Types Of a Scalar Float32 Values
1441NN_vgetexppd, // Convert Exponents of Packed DP FP Values to DP FP Values
1442NN_vgetexpps, // Convert Exponents of Packed SP FP Values to SP FP Values
1443NN_vgetexpsd, // Convert Exponents of Scalar DP FP Values to DP FP Value
1444NN_vgetexpss, // Convert Exponents of Scalar SP FP Values to SP FP Value
1445NN_vgetmantpd, // Extract Float64 Vector of Normalized Mantissas from Float64 Vector
1446NN_vgetmantps, // Extract Float32 Vector of Normalized Mantissas from Float32 Vector
1447NN_vgetmantsd, // Extract Float64 of Normalized Mantissas from Float64 Scalar
1448NN_vgetmantss, // Extract Float32 Vector of Normalized Mantissa from Float32 Vector
1449NN_vinsertf32x4, // Insert Packed Floating-Point Values
1450NN_vinsertf64x2, // Insert Packed Floating-Point Values
1451NN_vinsertf32x8, // Insert Packed Floating-Point Values
1452NN_vinsertf64x4, // Insert Packed Floating-Point Values
1453NN_vinserti32x4, // Insert Packed Integer Values
1454NN_vinserti64x2, // Insert Packed Integer Values
1455NN_vinserti32x8, // Insert Packed Integer Values
1456NN_vinserti64x4, // Insert Packed Integer Values
1457NN_vmovdqa32, // Move Aligned Packed Integer Values
1458NN_vmovdqa64, // Move Aligned Packed Integer Values
1459NN_vmovdqu8, // Move Unaligned Packed Integer Values
1460NN_vmovdqu16, // Move Unaligned Packed Integer Values
1461NN_vmovdqu32, // Move Unaligned Packed Integer Values
1462NN_vmovdqu64, // Move Unaligned Packed Integer Values
1463NN_vpabsq, // Packed Absolute Value
1464NN_vpandd, // Logical AND
1465NN_vpandq, // Logical AND
1466NN_vpandnd, // Logical AND NOT
1467NN_vpandnq, // Logical AND NOT
1468NN_vpbroadcastmb2q, // Broadcast Mask to Vector Register
1469NN_vpbroadcastmw2d, // Broadcast Mask to Vector Register
1470NN_vpcmpb, // Compare Packed Byte Values Into Mask
1471NN_vpcmpub, // Compare Packed Byte Values Into Mask
1472NN_vpcmpd, // Compare Packed Integer Values into Mask
1473NN_vpcmpud, // Compare Packed Integer Values into Mask
1474NN_vpcmpq, // Compare Packed Integer Values into Mask
1475NN_vpcmpuq, // Compare Packed Integer Values into Mask
1476NN_vpcmpw, // Compare Packed Word Values Into Mask
1477NN_vpcmpuw, // Compare Packed Word Values Into Mask
1478NN_vpcompressd, // Store Sparse Packed Doubleword Integer Values into Dense Memory/Register
1479NN_vpcompressq, // Store Sparse Packed Quadword Integer Values into Dense Memory/Register
1480NN_vpconflictd, // Detect Conflicts Within a Vector of Packed Dword Values into Dense Memory/Register
1481NN_vpconflictq, // Detect Conflicts Within a Vector of Packed Qword Values into Dense Memory/Register
1482NN_vpermb, // Permute Packed Bytes Elements
1483NN_vpermw, // Permute Packed Words Elements
1484NN_vpermi2b, // Full Permute of Bytes From Two Tables Overwriting the Index
1485NN_vpermi2w, // Full Permute From Two Tables Overwriting the Index
1486NN_vpermi2d, // Full Permute From Two Tables Overwriting the Index
1487NN_vpermi2q, // Full Permute From Two Tables Overwriting the Index
1488NN_vpermi2ps, // Full Permute From Two Tables Overwriting the Index
1489NN_vpermi2pd, // Full Permute From Two Tables Overwriting the Index
1490NN_vpermt2b, // Full Permute of Bytes From Two Tables Overwriting a Table
1491NN_vpermt2w, // Full Permute from Two Tables Overwriting one Table
1492NN_vpermt2d, // Full Permute from Two Tables Overwriting one Table
1493NN_vpermt2q, // Full Permute from Two Tables Overwriting one Table
1494NN_vpermt2ps, // Full Permute from Two Tables Overwriting one Table
1495NN_vpermt2pd, // Full Permute from Two Tables Overwriting one Table
1496NN_vpexpandd, // Load Sparse Packed Doubleword Integer Values from Dense Memory/Register
1497NN_vpexpandq, // Load Sparse Packed Quadword Integer Values from Dense Memory/Register
1498NN_vplzcntd, // Count the Number of Leading Zero Bits for Packed Dword Values
1499NN_vplzcntq, // Count the Number of Leading Zero Bits for Packed Qword Values
1500NN_vpmadd52luq, // Packed Multiply of Unsigned 52-bit Integers and Add the Low 52-bit Products to Qword Accumulators
1501NN_vpmadd52huq, // Packed Multiply of Unsigned 52-bit Unsigned Integers and Add High 52-bit Products to 64-bit Accumulators
1502NN_vpmaxsq, // Maximum of Packed Signed Integers
1503NN_vpmaxuq, // Maximum of Packed Unsigned Integers
1504NN_vpminsq, // Minimum of Packed Signed Integers
1505NN_vpminuq, // Minimum of Packed Unsigned Integers
1506NN_vpmovm2b, // Convert a Mask Register to a Vector Register
1507NN_vpmovm2w, // Convert a Mask Register to a Vector Register
1508NN_vpmovm2d, // Convert a Mask Register to a Vector Register
1509NN_vpmovm2q, // Convert a Mask Register to a Vector Register
1510NN_vpmovb2m, // Convert a Vector Register to a Mask
1511NN_vpmovw2m, // Convert a Vector Register to a Mask
1512NN_vpmovd2m, // Convert a Vector Register to a Mask
1513NN_vpmovq2m, // Convert a Vector Register to a Mask
1514NN_vpmovqb, // Down Convert QWord to Byte
1515NN_vpmovsqb, // Down Convert QWord to Byte
1516NN_vpmovusqb, // Down Convert QWord to Byte
1517NN_vpmovqw, // Down Convert QWord to Word
1518NN_vpmovsqw, // Down Convert QWord to Word
1519NN_vpmovusqw, // Down Convert QWord to Word
1520NN_vpmovqd, // Down Convert QWord to DWord
1521NN_vpmovsqd, // Down Convert QWord to DWord
1522NN_vpmovusqd, // Down Convert QWord to DWord
1523NN_vpmovdb, // Down Convert DWord to Byte
1524NN_vpmovsdb, // Down Convert DWord to Byte
1525NN_vpmovusdb, // Down Convert DWord to Byte
1526NN_vpmovdw, // Down Convert DWord to Word
1527NN_vpmovsdw, // Down Convert DWord to Word
1528NN_vpmovusdw, // Down Convert DWord to Word
1529NN_vpmovwb, // Down Convert Word to Byte
1530NN_vpmovswb, // Down Convert Word to Byte
1531NN_vpmovuswb, // Down Convert Word to Byte
1532NN_vpmullq, // Multiply Packed Integers and Store Low Result
1533NN_vpmultishiftqb, // Select Packed Unaligned Bytes from Quadword Sources
1534NN_vpord, // Bitwise Logical Or
1535NN_vporq, // Bitwise Logical Or
1536NN_vprold, // Bit Rotate Left
1537NN_vprolvd, // Bit Rotate Left
1538NN_vprolq, // Bit Rotate Left
1539NN_vprolvq, // Bit Rotate Left
1540NN_vprord, // Bit Rotate Right
1541NN_vprorvd, // Bit Rotate Right
1542NN_vprorq, // Bit Rotate Right
1543NN_vprorvq, // Bit Rotate Right
1544NN_vpscatterdd, // Scatter Packed Dword with Signed Dword
1545NN_vpscatterdq, // Scatter Packed Qword with Signed Qword Indices
1546NN_vpscatterqd, // Scatter Packed Dword with Signed Dword
1547NN_vpscatterqq, // Scatter Packed Qword with Signed Qword Indices
1548NN_vpsraq, // Bit Shift Arithmetic Right
1549NN_vpsllvw, // Variable Bit Shift Left Logical
1550NN_vpsrlvw, // Variable Bit Shift Right Logical
1551NN_vptestnmb, // Logical NAND and Set
1552NN_vptestnmw, // Logical NAND and Set
1553NN_vptestnmd, // Logical NAND and Set
1554NN_vptestnmq, // Logical NAND and Set
1555NN_vshuff32x4, // Shuffle Packed Values at 128-bit Granularity
1556NN_vshuff64x2, // Shuffle Packed Values at 128-bit Granularity
1557NN_vshufi32x4, // Shuffle Packed Values at 128-bit Granularity
1558NN_vshufi64x2, // Shuffle Packed Values at 128-bit Granularity
1559NN_vpternlogd, // Bitwise Ternary Logic
1560NN_vpternlogq, // Bitwise Ternary Logic
1561NN_vptestmb, // Logical AND and Set Mask
1562NN_vptestmw, // Logical AND and Set Mask
1563NN_vptestmd, // Logical AND and Set Mask
1564NN_vptestmq, // Logical AND and Set Mask
1565NN_vpsravw, // Variable Bit Shift Right Arithmetic
1566NN_vpsravq, // Variable Bit Shift Right Arithmetic
1567NN_vpxord, // Exclusive Or
1568NN_vpxorq, // Exclusive Or
1569NN_vrangepd, // Range Restriction Calculation For Packed Pairs of Float64 Values
1570NN_vrangeps, // Range Restriction Calculation For Packed Pairs of Float32 Values
1571NN_vrangesd, // Range Restriction Calculation From a pair of Scalar Float64 Values
1572NN_vrangess, // Range Restriction Calculation From a Pair of Scalar Float32 Values
1573NN_vrcp14pd, // Compute Approximate Reciprocals of Packed Float64 Values
1574NN_vrcp14sd, // Compute Approximate Reciprocal of Scalar Float64 Value
1575NN_vrcp14ps, // Compute Approximate Reciprocals of Packed Float32 Values
1576NN_vrcp14ss, // Compute Approximate Reciprocal of Scalar Float32 Value
1577NN_vreducepd, // Perform Reduction Transformation on Packed Float64 Values
1578NN_vreducesd, // Perform a Reduction Transformation on a Scalar Float64 Value
1579NN_vreduceps, // Perform Reduction Transformation on Packed Float32 Values
1580NN_vreducess, // Perform a Reduction Transformation on a Scalar Float32 Value
1581NN_vrndscalepd, // Round Packed Float64 Values To Include A Given Number Of Fraction Bits
1582NN_vrndscalesd, // Round Scalar Float64 Value To Include A Given Number Of Fraction Bits
1583NN_vrndscaleps, // Round Packed Float32 Values To Include A Given Number Of Fraction Bits
1584NN_vrndscaless, // Round Scalar Float32 Value To Include A Given Number Of Fraction Bits
1585NN_vrsqrt14pd, // Compute Approximate Reciprocals of Square Roots of Packed Float64 Values
1586NN_vrsqrt14sd, // Compute Approximate Reciprocal of Square Root of Scalar Float64 Value
1587NN_vrsqrt14ps, // Compute Approximate Reciprocals of Square Roots of Packed Float32 Values
1588NN_vrsqrt14ss, // Compute Approximate Reciprocal of Square Root of Scalar Float32 Value
1589NN_vscalefpd, // Scale Packed Float64 Values With Float64 Values
1590NN_vscalefsd, // Scale Scalar Float64 Values With Float64 Values
1591NN_vscalefps, // Scale Packed Float32 Values With Float32 Values
1592NN_vscalefss, // Scale Scalar Float32 Value With Float32 Value
1593NN_vscatterdps, // Scatter Packed Single, Packed Double with Signed Dword and Qword Indices
1594NN_vscatterdpd, // Scatter Packed Single, Packed Double with Signed Dword and Qword Indices
1595NN_vscatterqps, // Scatter Packed Single, Packed Double with Signed Dword and Qword Indices
1596NN_vscatterqpd, // Scatter Packed Single, Packed Double with Signed Dword and Qword Indices
1597NN_vexp2pd, // Approximation to the Exponential 2^x of Packed Double-Precision Floating-Point Values with Less Than 2^-23 Relative Error
1598NN_vexp2ps, // Approximation to the Exponential 2^x of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error
1599NN_vrcp28pd, // Approximation to the Reciprocal of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error
1600NN_vrcp28sd, // Approximation to the Reciprocal of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error
1601NN_vrcp28ps, // Approximation to the Reciprocal of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error
1602NN_vrcp28ss, // Approximation to the Reciprocal of Scalar Single-Precision Floating-Point Value with Less Than 2^-28 Relative Error
1603NN_vrsqrt28pd, // Approximation to the Reciprocal Square Root of Packed Double-Precision Floating-Point Values with Less Than 2^-28 Relative Error
1604NN_vrsqrt28sd, // Approximation to the Reciprocal Square Root of Scalar Double-Precision Floating-Point Value with Less Than 2^-28 Relative Error
1605NN_vrsqrt28ps, // Approximation to the Reciprocal Square Root of Packed Single-Precision Floating-Point Values with Less Than 2^-28 Relative Error
1606NN_vrsqrt28ss, // Approximation to the Reciprocal Square Root of Scalar Single-Precision Floating-Point Value with Less Than 2^-28 Relative Error
1607NN_vgatherpf0dps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint
1608NN_vgatherpf0qps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint
1609NN_vgatherpf0dpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint
1610NN_vgatherpf0qpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint
1611NN_vgatherpf1dps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint
1612NN_vgatherpf1qps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint
1613NN_vgatherpf1dpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint
1614NN_vgatherpf1qpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint
1615NN_vscatterpf0dps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint with Intent to Write
1616NN_vscatterpf0qps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint with Intent to Write
1617NN_vscatterpf0dpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint with Intent to Write
1618NN_vscatterpf0qpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T0 Hint with Intent to Write
1619NN_vscatterpf1dps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint with Intent to Write
1620NN_vscatterpf1qps, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint with Intent to Write
1621NN_vscatterpf1dpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint with Intent to Write
1622NN_vscatterpf1qpd, // Sparse Prefetch Packed SP/DP Data Values with Signed Dword, Signed Qword Indices Using T1 Hint with Intent to Write
1623// AVX-512 comparison pseudo-ops
1624NN_vpcmpltd, // Compare Packed Integer Values into Mask
1625NN_vpcmpled, // Compare Packed Integer Values into Mask
1626NN_vpcmpneqd, // Compare Packed Integer Values into Mask
1627NN_vpcmpnltd, // Compare Packed Integer Values into Mask
1628NN_vpcmpnled, // Compare Packed Integer Values into Mask
1629NN_vpcmpequd, // Compare Packed Integer Values into Mask
1630NN_vpcmpltud, // Compare Packed Integer Values into Mask
1631NN_vpcmpleud, // Compare Packed Integer Values into Mask
1632NN_vpcmpnequd, // Compare Packed Integer Values into Mask
1633NN_vpcmpnltud, // Compare Packed Integer Values into Mask
1634NN_vpcmpnleud, // Compare Packed Integer Values into Mask
1635NN_vpcmpltq, // Compare Packed Integer Values into Mask
1636NN_vpcmpleq, // Compare Packed Integer Values into Mask
1637NN_vpcmpneqq, // Compare Packed Integer Values into Mask
1638NN_vpcmpnltq, // Compare Packed Integer Values into Mask
1639NN_vpcmpnleq, // Compare Packed Integer Values into Mask
1640NN_vpcmpequq, // Compare Packed Integer Values into Mask
1641NN_vpcmpltuq, // Compare Packed Integer Values into Mask
1642NN_vpcmpleuq, // Compare Packed Integer Values into Mask
1643NN_vpcmpnequq, // Compare Packed Integer Values into Mask
1644NN_vpcmpnltuq, // Compare Packed Integer Values into Mask
1645NN_vpcmpnleuq, // Compare Packed Integer Values into Mask
1646// Opmask instructions
1647NN_kaddw, // ADD Two Masks
1648NN_kaddb, // ADD Two Masks
1649NN_kaddq, // ADD Two Masks
1650NN_kaddd, // ADD Two Masks
1651NN_kandw, // Bitwise Logical AND Masks
1652NN_kandb, // Bitwise Logical AND Masks
1653NN_kandq, // Bitwise Logical AND Masks
1654NN_kandd, // Bitwise Logical AND Masks
1655NN_kandnw, // Bitwise Logical AND NOT Masks
1656NN_kandnb, // Bitwise Logical AND NOT Masks
1657NN_kandnq, // Bitwise Logical AND NOT Masks
1658NN_kandnd, // Bitwise Logical AND NOT Masks
1659NN_kmovw, // Move from and to Mask Registers
1660NN_kmovb, // Move from and to Mask Registers
1661NN_kmovq, // Move from and to Mask Registers
1662NN_kmovd, // Move from and to Mask Registers
1663NN_kunpckbw, // Unpack for Mask Registers
1664NN_kunpckwd, // Unpack for Mask Registers
1665NN_kunpckdq, // Unpack for Mask Registers
1666NN_knotw, // NOT Mask Register
1667NN_knotb, // NOT Mask Register
1668NN_knotq, // NOT Mask Register
1669NN_knotd, // NOT Mask Register
1670NN_korw, // Bitwise Logical OR Masks
1671NN_korb, // Bitwise Logical OR Masks
1672NN_korq, // Bitwise Logical OR Masks
1673NN_kord, // Bitwise Logical OR Masks
1674NN_kortestw, // OR Masks And Set Flags
1675NN_kortestb, // OR Masks And Set Flags
1676NN_kortestq, // OR Masks And Set Flags
1677NN_kortestd, // OR Masks And Set Flags
1678NN_kshiftlw, // Shift Left Mask Registers
1679NN_kshiftlb, // Shift Left Mask Registers
1680NN_kshiftlq, // Shift Left Mask Registers
1681NN_kshiftld, // Shift Left Mask Registers
1682NN_kshiftrw, // Shift Right Mask Registers
1683NN_kshiftrb, // Shift Right Mask Registers
1684NN_kshiftrq, // Shift Right Mask Registers
1685NN_kshiftrd, // Shift Right Mask Registers
1686NN_kxnorw, // Bitwise Logical XNOR Masks
1687NN_kxnorb, // Bitwise Logical XNOR Masks
1688NN_kxnorq, // Bitwise Logical XNOR Masks
1689NN_kxnord, // Bitwise Logical XNOR Masks
1690NN_ktestw, // Packed Bit Test Masks and Set Flags
1691NN_ktestb, // Packed Bit Test Masks and Set Flags
1692NN_ktestq, // Packed Bit Test Masks and Set Flags
1693NN_ktestd, // Packed Bit Test Masks and Set Flags
1694NN_kxorw, // Bitwise Logical XOR Masks
1695NN_kxorb, // Bitwise Logical XOR Masks
1696NN_kxorq, // Bitwise Logical XOR Masks
1697NN_kxord, // Bitwise Logical XOR Masks
1698// SHA Extensions
1699NN_sha1rnds4, // Perform Four Rounds of SHA1 Operation
1700NN_sha1nexte, // Calculate SHA1 State Variable E after Four Rounds
1701NN_sha1msg1, // Perform an Intermediate Calculation for the Next Four SHA1 Message Dwords
1702NN_sha1msg2, // Perform a Final Calculation for the Next Four SHA1 Message Dwords
1703NN_sha256rnds2, // Perform Two Rounds of SHA256 Operation
1704NN_sha256msg1, // Perform an Intermediate Calculation for the Next Four SHA256 Message Dwords
1705NN_sha256msg2, // Perform a Final Calculation for the Next Four SHA256 Message Dwords
1706// Intel Software Guard Extensions
1707NN_encls, // Execute an Enclave System Function of Specified Leaf Number
1708NN_enclu, // Execute an Enclave User Function of Specified Leaf Number
1709// AMD XOP
1710NN_vfrczpd, // Extract Fraction Packed Double-Precision Floating-Point
1711NN_vfrczps, // Extract Fraction Packed Single-Precision Floating-Point
1712NN_vfrczsd, // Extract Fraction Scalar Double-Precision Floating-Point
1713NN_vfrczss, // Extract Fraction Scalar Single-Precision Floating Point
1714NN_vpcmov, // Vector Conditional Moves
1715NN_vpcomb, // Compare Vector Signed Bytes
1716NN_vpcomd, // Compare Vector Signed Doublewords
1717NN_vpcomq, // Compare Vector Signed Quadwords
1718NN_vpcomub, // Compare Vector Unsigned Bytes
1719NN_vpcomud, // Compare Vector Unsigned Doublewords
1720NN_vpcomuq, // Compare Vector Unsigned Quadwords
1721NN_vpcomuw, // Compare Vector Unsigned Words
1722NN_vpcomw, // Compare Vector Signed Words
1723NN_vpermil2pd, // Permute Two-Source Double-Precision Floating-Point Values
1724NN_vpermil2ps, // Permute Two-Source Single-Precision Floating-Point Values
1725NN_vphaddbd, // Packed Horizontal Add Signed Byte to Signed Doubleword
1726NN_vphaddbq, // Packed Horizontal Add Signed Byte to Signed Quadword
1727NN_vphaddbw, // Packed Horizontal Add Signed Byte to Signed Word
1728NN_vphadddq, // Packed Horizontal Add Signed Doubleword to Signed Quadword
1729NN_vphaddubd, // Packed Horizontal Add Unsigned Byte to Doubleword
1730NN_vphaddubq, // Packed Horizontal Add Unsigned Byte to Quadword
1731NN_vphaddubw, // Packed Horizontal Add Unsigned Byte to Word
1732NN_vphaddudq, // Packed Horizontal Add Unsigned Doubleword to Quadword
1733NN_vphadduwd, // Packed Horizontal Add Unsigned Word to Doubleword
1734NN_vphadduwq, // Packed Horizontal Add Unsigned Word to Quadword
1735NN_vphaddwd, // Packed Horizontal Add Signed Word to Signed Doubleword
1736NN_vphaddwq, // Packed Horizontal Add Signed Word to Signed Quadword
1737NN_vphsubbw, // Packed Horizontal Subtract Signed Byte to Signed Word
1738NN_vphsubdq, // Packed Horizontal Subtract Signed Doubleword to Signed Quadword
1739NN_vphsubwd, // Packed Horizontal Subtract Signed Word to Signed Doubleword
1740NN_vpmacsdd, // Packed Multiply Accumulate Signed Doubleword to Signed Doubleword
1741NN_vpmacsdqh, // Packed Multiply Accumulate Signed High Doubleword to Signed Quadword
1742NN_vpmacsdql, // Packed Multiply Accumulate Signed Low Doubleword to Signed Quadword
1743NN_vpmacssdd, // Packed Multiply Accumulate Signed Doubleword to Signed Doubleword with Saturation
1744NN_vpmacssdqh, // Packed Multiply Accumulate Signed High Doubleword to Signed Quadword with Saturation
1745NN_vpmacssdql, // Packed Multiply Accumulate Signed Low Doubleword to Signed Quadword with Saturation
1746NN_vpmacsswd, // Packed Multiply Accumulate Signed Word to Signed Doubleword with Saturation
1747NN_vpmacssww, // Packed Multiply Accumulate Signed Word to Signed Word with Saturation
1748NN_vpmacswd, // Packed Multiply Accumulate Signed Word to Signed Doubleword
1749NN_vpmacsww, // Packed Multiply Accumulate Signed Word to Signed Word
1750NN_vpmadcsswd, // Packed Multiply, Add and Accumulate Signed Word to Signed Doubleword with Saturation
1751NN_vpmadcswd, // Packed Multiply Add and Accumulate Signed Word to Signed Doubleword
1752NN_vpperm, // Packed Permute Bytes
1753NN_vprotb, // Packed Rotate Bytes
1754NN_vprotd, // Packed Rotate Doublewords
1755NN_vprotq, // Packed Rotate Quadwords
1756NN_vprotw, // Packed Rotate Words
1757NN_vpshab, // Packed Shift Arithmetic Bytes
1758NN_vpshad, // Packed Shift Arithmetic Doublewords
1759NN_vpshaq, // Packed Shift Arithmetic Quadwords
1760NN_vpshaw, // Packed Shift Arithmetic Words
1761NN_vpshlb, // Packed Shift Logical Bytes
1762NN_vpshld, // Packed Shift Logical Doublewords
1763NN_vpshlq, // Packed Shift Logical Quadwords
1764NN_vpshlw, // Packed Shift Logical Words
1765// AMD XOP comparison pseudo-ops
1766NN_vpcomltb, // Compare Vector Signed Bytes
1767NN_vpcomleb, // Compare Vector Signed Bytes
1768NN_vpcomgtb, // Compare Vector Signed Bytes
1769NN_vpcomgeb, // Compare Vector Signed Bytes
1770NN_vpcomeqb, // Compare Vector Signed Bytes
1771NN_vpcomneqb, // Compare Vector Signed Bytes
1772NN_vpcomfalseb, // Compare Vector Signed Bytes
1773NN_vpcomtrueb, // Compare Vector Signed Bytes
1774NN_vpcomltw, // Compare Vector Signed Words
1775NN_vpcomlew, // Compare Vector Signed Words
1776NN_vpcomgtw, // Compare Vector Signed Words
1777NN_vpcomgew, // Compare Vector Signed Words
1778NN_vpcomeqw, // Compare Vector Signed Words
1779NN_vpcomneqw, // Compare Vector Signed Words
1780NN_vpcomfalsew, // Compare Vector Signed Words
1781NN_vpcomtruew, // Compare Vector Signed Words
1782NN_vpcomltd, // Compare Vector Signed Doublewords
1783NN_vpcomled, // Compare Vector Signed Doublewords
1784NN_vpcomgtd, // Compare Vector Signed Doublewords
1785NN_vpcomged, // Compare Vector Signed Doublewords
1786NN_vpcomeqd, // Compare Vector Signed Doublewords
1787NN_vpcomneqd, // Compare Vector Signed Doublewords
1788NN_vpcomfalsed, // Compare Vector Signed Doublewords
1789NN_vpcomtrued, // Compare Vector Signed Doublewords
1790NN_vpcomltq, // Compare Vector Signed Quadwords
1791NN_vpcomleq, // Compare Vector Signed Quadwords
1792NN_vpcomgtq, // Compare Vector Signed Quadwords
1793NN_vpcomgeq, // Compare Vector Signed Quadwords
1794NN_vpcomeqq, // Compare Vector Signed Quadwords
1795NN_vpcomneqq, // Compare Vector Signed Quadwords
1796NN_vpcomfalseq, // Compare Vector Signed Quadwords
1797NN_vpcomtrueq, // Compare Vector Signed Quadwords
1798NN_vpcomltub, // Compare Vector Unsigned Bytes
1799NN_vpcomleub, // Compare Vector Unsigned Bytes
1800NN_vpcomgtub, // Compare Vector Unsigned Bytes
1801NN_vpcomgeub, // Compare Vector Unsigned Bytes
1802NN_vpcomequb, // Compare Vector Unsigned Bytes
1803NN_vpcomnequb, // Compare Vector Unsigned Bytes
1804NN_vpcomfalseub, // Compare Vector Unsigned Bytes
1805NN_vpcomtrueub, // Compare Vector Unsigned Bytes
1806NN_vpcomltuw, // Compare Vector Unsigned Words
1807NN_vpcomleuw, // Compare Vector Unsigned Words
1808NN_vpcomgtuw, // Compare Vector Unsigned Words
1809NN_vpcomgeuw, // Compare Vector Unsigned Words
1810NN_vpcomequw, // Compare Vector Unsigned Words
1811NN_vpcomnequw, // Compare Vector Unsigned Words
1812NN_vpcomfalseuw, // Compare Vector Unsigned Words
1813NN_vpcomtrueuw, // Compare Vector Unsigned Words
1814NN_vpcomltud, // Compare Vector Unsigned Doublewords
1815NN_vpcomleud, // Compare Vector Unsigned Doublewords
1816NN_vpcomgtud, // Compare Vector Unsigned Doublewords
1817NN_vpcomgeud, // Compare Vector Unsigned Doublewords
1818NN_vpcomequd, // Compare Vector Unsigned Doublewords
1819NN_vpcomnequd, // Compare Vector Unsigned Doublewords
1820NN_vpcomfalseud, // Compare Vector Unsigned Doublewords
1821NN_vpcomtrueud, // Compare Vector Unsigned Doublewords
1822NN_vpcomltuq, // Compare Vector Unsigned Quadwords
1823NN_vpcomleuq, // Compare Vector Unsigned Quadwords
1824NN_vpcomgtuq, // Compare Vector Unsigned Quadwords
1825NN_vpcomgeuq, // Compare Vector Unsigned Quadwords
1826NN_vpcomequq, // Compare Vector Unsigned Quadwords
1827NN_vpcomnequq, // Compare Vector Unsigned Quadwords
1828NN_vpcomfalseuq, // Compare Vector Unsigned Quadwords
1829NN_vpcomtrueuq, // Compare Vector Unsigned Quadwords
1830// AMD Excavator
1831NN_monitorx, // Setup Monitor Address
1832NN_mwaitx, // Monitor Wait with Timeout
1833// AMD Zen
1834NN_clzero, // Zero out 64 byte cache
1835// Intel Processor Trace
1836NN_ptwrite, // Write Data to a Processor Trace Packet
1837// new Intel AVX-512 instructions (December 2016)
1838NN_v4fmaddps, // Packed Single-Precision Floating-Point Fused Multiply-Add (4-iterations)
1839NN_v4fnmaddps, // Packed Single-Precision Floating-Point Fused Multiply-Add (4-iterations)
1840NN_v4fmaddss, // Scalar Single-Precision Floating-Point Fused Multiply-Add (4-iterations)
1841NN_v4fnmaddss, // Scalar Single-Precision Floating-Point Fused Multiply-Add (4-iterations)
1842NN_vp4dpwssd, // Dot Product of Signed Words with Dword Accumulation (4-iterations)
1843NN_vp4dpwssds, // Dot Product of Signed Words with Dword Accumulation and Saturation (4-iterations)
1844NN_vpopcntd, // Return the Count of Number of Bits Set to 1 in DWORD
1845NN_vpopcntq, // Return the Count of Number of Bits Set to 1 in QWORD
1846// Read Processor ID
1847NN_rdpid, // Read Processor ID
1848// Invoke VM function
1849NN_vmfunc, // Invoke VM function
1850// Control-flow Enforcement
1851NN_incsspd, // Increment Shadow Stack Pointer (by 4)
1852NN_incsspq, // Increment Shadow Stack Pointer (by 8)
1853NN_rdsspd, // Read (low 32 bits of) Shadow Stack Pointer
1854NN_rdsspq, // Read Shadow Stack Pointer
1855NN_saveprevssp, // Save Previous Shadow Stack Pointer
1856NN_rstorssp, // Restore saved Shadow Stack Pointer
1857NN_wrssd, // Write (4 bytes) to shadow stack
1858NN_wrssq, // Write (8 bytes) to shadow stack
1859NN_wrussd, // Write (4 bytes) to User Shadow Stack
1860NN_wrussq, // Write (8 bytes) to User Shadow Stack
1861NN_setssbsy, // Mark Shadow Stack Busy
1862NN_clrssbsy, // Clear Shadow Stack Busy Flag
1863NN_endbr64, // Terminate an Indirect Branch in 64-bit Mode
1864NN_endbr32, // Terminate an Indirect Branch in 32-bit and Compatibility Mode
1865// Undefined Instruction
1866NN_ud0, // Undefined Instruction
1867NN_ud1, // Undefined Instruction
1868// Enqueue Stores
1869NN_enqcmd, // Enqueue Command
1870NN_enqcmds, // Enqueue Command Supervisor
1871// AMD Zen2
1872NN_mcommit, // Commit Stores to Memory
1873NN_rdpru, // Read Processor Register
1874// Intel Tremont instructions
1875NN_cldemote, // Cache Line Demote
1876NN_enclv, // Execute an Enclave VMM Function of Specified Leaf Number
1877// Direct Stores
1878NN_movdiri, // Move Doubleword as Direct Store
1879NN_movdir64b, // Move 64 Bytes as Direct Store
1880// Intel WAITPKG instructions
1881NN_tpause, // Timed PAUSE
1882NN_umonitor, // User Level Set Up Monitor Address
1883NN_umwait, // User Level Monitor Wait
1884// Intel Sapphire Rapids instructions
1885NN_serialize, // Serialize Instruction Execution
1886// Intel TSX
1887NN_xresldtrk, // Resume Tracking Load Addresses
1888NN_xsusldtrk, // Suspend Tracking Load Addresses
1889// Intel Affine Transformation instructions
1890NN_gf2p8mulb, // Galois Field Multiply Bytes
1891NN_gf2p8affineqb, // Computes Affine Transformation
1892NN_gf2p8affineinvqb, // Computes Inverse Affine Transformation
1893// VEX versions
1894NN_vgf2p8mulb, // Galois Field Multiply Bytes
1895NN_vgf2p8affineqb, // Computes Affine Transformation
1896NN_vgf2p8affineinvqb, // Computes Inverse Affine Transformation
1897// Intrinsics for Saving and Restoring the Extended Processor States (64-bits)
1898NN_fxsave64, // Fast save FP context (64-bits)
1899NN_fxrstor64, // Fast restore FP context (64-bits)
1900// AVX-VNNI
1901NN_vpdpbusd, // Multiply and Add Unsigned and Signed Bytes
1902NN_vpdpbusds, // Multiply and Add Unsigned and Signed Bytes With Saturation
1903NN_vpdpwssd, // Multiply and Add Signed Word Integers
1904NN_vpdpwssds, // Multiply and Add Signed Word Integers With Saturation
1905// AVX512-VBMI2
1906NN_vpcompressb, // Store Sparse Packed Byte Integer Values Into Dense Memory/Register
1907NN_vpcompressw, // Store Sparse Packed Word Integer Values Into Dense Memory/Register
1908NN_vpexpandb, // Expand Byte Values
1909NN_vpexpandw, // Expand Word Values
1910NN_vpshldw, // Concatenate and Shift Packed Data Left Logical
1911NN_vpshldd, // Concatenate and Shift Packed Data Left Logical
1912NN_vpshldq, // Concatenate and Shift Packed Data Left Logical
1913NN_vpshldvw, // Concatenate and Variable Shift Packed Data Left Logical
1914NN_vpshldvd, // Concatenate and Variable Shift Packed Data Left Logical
1915NN_vpshldvq, // Concatenate and Variable Shift Packed Data Left Logical
1916NN_vpshrdw, // Concatenate and Shift Packed Data Right Logical
1917NN_vpshrdd, // Concatenate and Shift Packed Data Right Logical
1918NN_vpshrdq, // Concatenate and Shift Packed Data Right Logical
1919NN_vpshrdvw, // Concatenate and Variable Shift Packed Data Right Logical
1920NN_vpshrdvd, // Concatenate and Variable Shift Packed Data Right Logical
1921NN_vpshrdvq, // Concatenate and Variable Shift Packed Data Right Logical
1922// AVX512-BITALG
1923NN_vpopcntb, // Return the Count of Number of Bits Set to 1 in BYTE
1924NN_vpopcntw, // Return the Count of Number of Bits Set to 1 in WORD
1925NN_vpshufbitqmb, // Shuffle Bits From Quadword Elements Using Byte Indexes Into Mask
1926// AVX512-VP2INTERSECT
1927NN_vp2intersectd, // Compute Intersection Between DWORDS to aPair of Mask Registers
1928NN_vp2intersectq, // Compute Intersection Between QUADWORDS to aPair of Mask Registers
1929// AVX512-BF16
1930NN_vcvtne2ps2bf16, // Convert Two Packed Single Data to One Packed BF16 Data
1931NN_vcvtneps2bf16, // Convert Packed Single Data to Packed BF16 Data
1932NN_vdpbf16ps, // Dot Product of BF16 Pairs Accumulated Into Packed Single Precision
1933// AVX512-FP16
1934NN_vaddph, // Add Packed FP16 Values
1935NN_vcmpph, // Compare Packed FP16 Values
1936NN_vcvtdq2ph, // Convert Packed Signed Doubleword Integers to Packed FP16 Values
1937NN_vcvtpd2ph, // Convert Packed Double Precision FP Values to Packed FP16 Values
1938NN_vcvtph2dq, // Convert Packed FP16 Values to Signed Doubleword Integers
1939NN_vcvtph2pd, // Convert Packed FP16 Values to FP64 Values
1940NN_vcvtph2psx, // Convert Packed FP16 Values to Single Precision Floating-Point Values
1941NN_vcvtph2qq, // Convert Packed FP16 Values to Signed Quadword Integer Values
1942NN_vcvtph2udq, // Convert Packed FP16 Values to Unsigned Doubleword Integers
1943NN_vcvtph2uqq, // Convert Packed FP16 Values to Unsigned Quadword Integers
1944NN_vcvtph2uw, // Convert Packed FP16 Values to Unsigned Word Integers
1945NN_vcvtph2w, // Convert Packed FP16 Values to Signed Word Integers
1946NN_vcvtps2phx, // Convert Packed Single Precision Floating-Point Values to Packed FP16 Values
1947NN_vcvtqq2ph, // Convert Packed Signed Quadword Integers to Packed FP16 Values
1948NN_vcvttph2dq, // Convert with Truncation Packed FP16 Values to Signed Doubleword Integers
1949NN_vcvttph2qq, // Convert with Truncation Packed FP16 Values to Signed Quadword Integers
1950NN_vcvttph2udq, // Convert with Truncation Packed FP16 Values to Unsigned Doubleword Integers
1951NN_vcvttph2uqq, // Convert with Truncation Packed FP16 Values to Unsigned Quadword Integers
1952NN_vcvttph2uw, // Convert Packed FP16 Values to Unsigned Word Integers
1953NN_vcvttph2w, // Convert Packed FP16 Values to Signed Word Integers
1954NN_vcvtudq2ph, // Convert Packed Unsigned Doubleword Integers to Packed FP16 Values
1955NN_vcvtuqq2ph, // Convert Packed Unsigned Quadword Integers to Packed FP16 Values
1956NN_vcvtuw2ph, // Convert Packed Unsigned Word Integers to FP16 Values
1957NN_vcvtw2ph, // Convert Packed Signed Word Integers to FP16 Values
1958NN_vdivph, // Divide Packed FP16 Values
1959NN_vfcmaddcph, // Complex Multiply and Accumulate FP16 Values
1960NN_vfcmulcph, // Complex Multiply FP16 Values
1961NN_vfmadd132ph, // Fused Multiply-Add of Packed FP16 Values
1962NN_vfmadd213ph, // Fused Multiply-Add of Packed FP16 Values
1963NN_vfmadd231ph, // Fused Multiply-Add of Packed FP16 Values
1964NN_vfmaddcph, // Complex Multiply and Accumulate FP16 Values
1965NN_vfmaddsub132ph, // Fused Multiply-Alternating Add/Subtract of Packed FP16 Values
1966NN_vfmaddsub213ph, // Fused Multiply-Alternating Add/Subtract of Packed FP16 Values
1967NN_vfmaddsub231ph, // Fused Multiply-Alternating Add/Subtract of Packed FP16 Values
1968NN_vfmsub132ph, // Fused Multiply-Subtract of Packed FP16 Values
1969NN_vfmsub213ph, // Fused Multiply-Subtract of Packed FP16 Values
1970NN_vfmsub231ph, // Fused Multiply-Subtract of Packed FP16 Values
1971NN_vfmsubadd132ph, // Fused Multiply-Alternating Subtract/Add of Packed FP16 Values
1972NN_vfmsubadd213ph, // Fused Multiply-Alternating Subtract/Add of Packed FP16 Values
1973NN_vfmsubadd231ph, // Fused Multiply-Alternating Subtract/Add of Packed FP16 Values
1974NN_vfmulcph, // Complex Multiply FP16 Values
1975NN_vfnmadd132ph, // Fused Multiply-Add of Packed FP16 Values
1976NN_vfnmadd213ph, // Fused Multiply-Add of Packed FP16 Values
1977NN_vfnmadd231ph, // Fused Multiply-Add of Packed FP16 Values
1978NN_vfnmsub132ph, // Fused Multiply-Subtract of Packed FP16 Values
1979NN_vfnmsub213ph, // Fused Multiply-Subtract of Packed FP16 Values
1980NN_vfnmsub231ph, // Fused Multiply-Subtract of Packed FP16 Values
1981NN_vfpclassph, // Test Types of Packed FP16 Values
1982NN_vgetexpph, // Fused Multiply-Subtract of Packed FP16 Values
1983NN_vgetmantph, // Extract FP16 Vector of Normalized Mantissas from FP16 Vector
1984NN_vmaxph, // Return Maximum of Packed FP16 Values
1985NN_vminph, // Return Minimum of Packed FP16 Values
1986NN_vmulph, // Multiply Packed FP16 Values
1987NN_vrcpph, // Compute Reciprocals of Packed FP16 Values
1988NN_vreduceph, // Perform Reduction Transformation on Packed FP16 Values
1989NN_vrndscaleph, // Round Packed FP16 Values to Include a Given Number of Fraction Bits
1990NN_vrsqrtph, // Compute Reciprocals of Square Roots of Packed FP16 Values
1991NN_vscalefph, // Scale Packed FP16 Values with FP16 Values
1992NN_vsqrtph, // Compute Square Root of Packed FP16 Values
1993NN_vsubph, // Subtract Packed FP16 Values
1994// AVX512-FP16-128N
1995NN_vmovw, // Move Word
1996// AVX512-FP16-SCALAR
1997NN_vaddsh, // Add Scalar FP16 Values
1998NN_vcmpsh, // Compare Scalar FP16 Values
1999NN_vcomish, // Compare Scalar Ordered FP16 Values and Set EFLAGS
2000NN_vcvtsd2sh, // Convert Low FP64 Value to an FP16 Value
2001NN_vcvtsh2sd, // Convert Low FP16 Value to an FP64 Value
2002NN_vcvtsh2si, // Convert Low FP16 Value to Signed Integer
2003NN_vcvtsh2ss, // Convert Low FP16 Value to FP32 Value
2004NN_vcvtsh2usi, // Convert Low FP16 Value to Unsigned Integer
2005NN_vcvtsi2sh, // Convert a Signed Doubleword/Quadword Integer to an FP16 Value
2006NN_vcvtss2sh, // Convert Low FP32 Value to an FP16 Value
2007NN_vcvttsh2si, // Convert with Truncation Low FP16 Value to a Signed Integer
2008NN_vcvttsh2usi, // Convert with Truncation Low FP16 Value to an Unsigned Integer
2009NN_vcvtusi2sh, // Convert Unsigned Doubleword Integer to an FP16 Value
2010NN_vdivsh, // Divide Scalar FP16 Values
2011NN_vfcmaddcsh, // Complex Multiply and Accumulate Scalar FP16 Values
2012NN_vfcmulcsh, // Complex Multiply Scalar FP16 Values
2013NN_vfmadd132sh, // Fused Multiply-Add of Scalar FP16 Values
2014NN_vfmadd213sh, // Fused Multiply-Add of Scalar FP16 Values
2015NN_vfmadd231sh, // Fused Multiply-Add of Scalar FP16 Values
2016NN_vfmaddcsh, // Complex Multiply and Accumulate Scalar FP16 Values
2017NN_vfmsub132sh, // Fused Multiply-Subtract of Scalar FP16 Values
2018NN_vfmsub213sh, // Fused Multiply-Subtract of Scalar FP16 Values
2019NN_vfmsub231sh, // Fused Multiply-Subtract of Scalar FP16 Values
2020NN_vfmulcsh, // Complex Multiply Scalar FP16 Values
2021NN_vfnmadd132sh, // Fused Multiply-Add of Scalar FP16 Values
2022NN_vfnmadd213sh, // Fused Multiply-Add of Scalar FP16 Values
2023NN_vfnmadd231sh, // Fused Multiply-Add of Scalar FP16 Values
2024NN_vfnmsub132sh, // Fused Multiply-Subtract of Scalar FP16 Values
2025NN_vfnmsub213sh, // Fused Multiply-Subtract of Scalar FP16 Values
2026NN_vfnmsub231sh, // Fused Multiply-Subtract of Scalar FP16 Values
2027NN_vfpclasssh, // Test Types of Packed FP16 Values
2028NN_vgetexpsh, // Convert Exponents of Packed FP16 Values to FP16 Values
2029NN_vgetmantsh, // Extract FP16 Vector of Normalized Mantissas from FP16 Vector
2030NN_vmaxsh, // Return Maximum of Scalar FP16 Values
2031NN_vminsh, // Return Minimum Scalar FP16 Value
2032NN_vmovsh, // Move Scalar FP16 Value
2033NN_vmulsh, // Multiply Scalar FP16 Values
2034NN_vrcpsh, // Compute Reciprocals of Packed FP16 Values
2035NN_vreducesh, // Perform Reduction Transformation on Packed FP16 Values
2036NN_vrndscalesh, // Round Packed FP16 Values to Include a Given Number of Fraction Bits
2037NN_vrsqrtsh, // Compute Reciprocals of Square Roots of Packed FP16 Values
2038NN_vscalefsh, // Scale Packed FP16 Values with FP16 Values
2039NN_vsqrtsh, // Compute Square Root of Scalar FP16 Value
2040NN_vsubsh, // Subtract Scalar FP16 Value
2041NN_vucomish, // Unordered Compare Scalar FP16 Values and Set EFLAGS
2042// User Interrupt (UINTR)
2043NN_clui, // Clear User Interrupt Flag
2044NN_stui, // Set User Interrupt Flag
2045NN_testui, // Determine User Interrupt Flag
2046NN_uiret, // User-Interrupt Return
2047NN_senduipi, // Send User Interprocessor Interrupts
2048// Prediction history reset (HRESET)
2049NN_hreset, // History Reset
2050// Intel Xeon 6 Granite Rapids microarch PREFETCHI
2051NN_prefetchit0, // Prefetch code into all levels of the cache hierarchy
2052NN_prefetchit1, // Prefetch code into all but the first-level of the cache hierarchy
2053// VIA PadLock vendor extension
2054NN_montmul, // Montgomery Multiplication
2055NN_xsha1, // Hash Function SHA-1
2056NN_xsha256, // Hash Function SHA-256
2057NN_xstore, // Store Available Random Bytes
2058NN_xcryptecb, // AES Electronic Code Book
2059NN_xcryptcbc, // AES Cipher Block Chaining
2060NN_xcryptctr, // AES Counter Mode
2061NN_xcryptcfb, // AES Cipher Feedback Mode
2062NN_xcryptofb, // AES Output Feedback Mode
2064 };
2065/*
2066 * Interactive disassembler (IDA).
2067 * Copyright (c) 1990-2026 Hex-Rays
2068 * ALL RIGHTS RESERVED.
2069 *
2070 */
2071enum
2072{
2073I5_null = 0, // Unknown Operation
2074//
2075// Intel 8080-8085 instructions
2076//
2157//
2158// Z80 extensions
2159//
2215Z80_inp, // undocumented
2216Z80_outp, // undocumented
2217Z80_srr, // undocumented
2218//
2219// HD64180 extensions
2220//
2231//
2232// A80 special instructions
2233//
2273// Intel 8085 undocumented instructions
2274// (info from http://oak.oakland.edu/pub/cpm/maclib/i8085.lib)
2275I5_dsub, // (HL) <- (HL)-(BC), affects all flags
2276I5_arhl, // SHIFT HL RIGHT ONE BIT, (H7 IS DUPLICATED, L0 IS SHIFTED INTO CY)
2277I5_rdel, // ROTATE DE LEFT ONE BIT THRU CY, (E0 RECEIVES CY, CY RECEIVES D7)
2278I5_ldhi, // (DE) <- (HL)+arg
2279I5_ldsi, // (DE) <- (SP)+arg
2280I5_shlx, // ((DE)) <- (HL)
2281I5_lhlx, // (HL) <- ((DE))
2282I5_rstv, // RESTART 40H ON V (OVERFLOW)
2283I5_jx5, // JUMP IF X5 SET
2284I5_jnx5, // JUMP IF NOT X5 SET
2285// Z380 instructions
2286Z80_cplw, // Complement HL register
2287Z80_swap, // Swap upper register word with lower register word
2288Z80_inw, // Input word
2289Z80_outw, // Output word
2290Z80_ldw, // Load word
2291Z80_addw, // Add word
2292Z80_subw, // Subtract word
2293Z80_adcw, // Add with carry word
2294Z80_sbcw, // Subtract with borrow word
2295Z80_andw, // AND logical word
2296Z80_xorw, // XOR logical word
2297Z80_orw, // OR logical word
2298Z80_cpw, // Compare word
2299Z80_ddir, // Decoder directive
2300Z80_calr, // Call relative
2301Z80_ldctl, // Load control register
2302Z80_mtest, // Mode test
2303Z80_exxx, // Exchange Index Register with Alternate Bank
2304Z80_exxy, // Exchange Index Register with Alternate Bank
2305Z80_exall, // Exchange all registers with Alternate Bank
2306Z80_setc, // Set control bit
2307Z80_resc, // Reset control bit
2308Z80_rlcw, // Rotate Left Circular Word
2309Z80_rrcw, // Rotate Right Circular Word
2310Z80_rlw, // Rotate Left Word
2311Z80_rrw, // Rotate Right Word
2312Z80_slaw, // Shift Left Arithmetic Word
2313Z80_sraw, // Shift Right Arithmetic Word
2314Z80_srlw, // Shift Right Logical Word
2315Z80_multw, // Multiply Word
2316Z80_multuw, // Multiply Word Unsigned
2317Z80_divuw, // Divide unsigned
2318Z80_outaw, // Output word direct to port address
2319Z80_inaw, // Input word direct from port address
2320Z80_outa, // Output byte direct to port address
2321Z80_ina, // Input byte direct from port address
2322Z80_negw, // Negate word
2323Z80_exts, // Extend byte sign
2324Z80_extsw, // Extend word sign
2325Z80_btest, // Bank test
2326Z80_ldiw, // Load and increment (word)
2327Z80_ldirw, // Load and increment, repeat (word)
2328Z80_lddw, // Load and decrement (word)
2329Z80_lddrw, // Load and decrement, repeat (word)
2330Z80_iniw, // Input and increment (word)
2331Z80_inirw, // Input and increment, repeat (word)
2332Z80_indw, // Input and decrement (word)
2333Z80_indrw, // Input and decrement, repeat (word)
2334Z80_outiw, // Output and increment (word)
2335Z80_otirw, // Output and increment, repeat (word)
2336Z80_outdw, // Output and decrement (word)
2337Z80_otdrw, // Output and decrement, repeat (word)
2338// Gameboy instructions
2342 };
2343/*
2344 * Interactive disassembler (IDA).
2345 * Copyright (c) 1990-2026 Hex-Rays
2346 * ALL RIGHTS RESERVED.
2347 *
2348 */
2349enum
2350{
2351I860_null = 0, // Unknown Operation
2352//
2353// Intel 860 XP instructions
2354//
2434//
2435// iNTEL 860 XP Pipelined F-P instructions
2436//
2500 };
2501/*
2502 * Interactive disassembler (IDA).
2503 * Copyright (c) 1990-2026 Hex-Rays
2504 * ALL RIGHTS RESERVED.
2505 *
2506 */
2507enum
2508{
2509I51_null = 0, // Unknown Operation
2510I51_acall, // Absolute Call
2511I51_add, // Add Second Operand to Acc
2512I51_addc, // Add Second Operand to Acc with carry
2513I51_ajmp, // Absolute Jump
2514I51_anl, // Logical AND (op1 &= op2)
2515I51_cjne, // Compare Operands and JNE
2516I51_clr, // Clear Operand (0)
2517I51_cpl, // Complement Operand
2518I51_da, // Decimal Adjust Accumulator
2519I51_dec, // Decrement Operand
2520I51_div, // Divide Acc by B
2521I51_djnz, // Decrement Operand and JNZ
2522I51_inc, // Increment Operand
2523I51_jb, // Jump if Bit is set
2524I51_jbc, // Jump if Bit is set & clear Bit
2525I51_jc, // Jump if Carry is set
2526I51_jmp, // Jump indirect relative to Data Pointer
2527I51_jnb, // Jump if Bit is clear
2528I51_jnc, // Jump if Carry is clear
2529I51_jnz, // Jump if Acc is not zero
2530I51_jz, // Jump if Acc is zero
2531I51_lcall, // Long Subroutine Call
2532I51_ljmp, // Long Jump
2533I51_mov, // Move (Op1 <- Op2)
2534I51_movc, // Move code byte relative to second op to Acc
2535I51_movx, // Move from/to external RAM
2536I51_mul, // Multiply Acc by B
2537I51_nop, // No operation
2538I51_orl, // Logical OR (op1 |= op2)
2539I51_pop, // Pop from Stack and put in Direct RAM
2540I51_push, // Push from Direct RAM to Stack
2541I51_ret, // Return from subroutine
2542I51_reti, // Return from Interrupt
2543I51_rl, // Rotate Acc left
2544I51_rlc, // Rotate Acc left through Carry
2545I51_rr, // Rotate Acc right
2546I51_rrc, // Rotate Acc right through Carry
2547I51_setb, // Set Direct Bit
2548I51_sjmp, // Short jump
2549I51_subb, // Subtract Second Operand from Acc with Borrow
2550I51_swap, // Swap nibbles of Acc
2551I51_xch, // Exchange Operands
2552I51_xchd, // Exchange Digit in Acc with Indirect RAM
2553I51_xrl, // Exclusive OR (op1 ^= op2)
2554// 80251 instructions
2555I51_jsle, // Jump if less than or equal (signed)
2556I51_jsg, // Jump if greater than (signed)
2557I51_jle, // Jump if less than or equal
2558I51_jg, // Jump if greater than
2559I51_jsl, // Jump if less than (signed)
2560I51_jsge, // Jump if greater than or equal (signed)
2561I51_je, // Jump if equal
2562I51_jne, // Jump if not equal
2563I51_trap, // Trap
2564I51_ejmp, // Extended jump
2565I51_ecall, // Extended call
2566I51_eret, // Extended return
2567I51_movh, // Move immediate 16-bit data to the high word of a dword (double-word) register
2568I51_movz, // Move 8-bit register to 16-bit register with zero extension
2569I51_movs, // Move 8-bit register to 16-bit register with sign extension
2570I51_srl, // Shift logical right by 1 bit
2571I51_sra, // Shift arithmetic right by 1 bit
2572I51_sll, // Shift logical left by 1 bit
2573I51_sub, // Subtract
2574I51_cmp, // Compare
2575// 51mx instructions
2576I51_emov, // Move (A <- @PRi+disp) or (@PRi+disp <- A)
2578 };
2579/*
2580 * Interactive disassembler (IDA).
2581 * Copyright (c) 1990-2026 Hex-Rays
2582 * ALL RIGHTS RESERVED.
2583 *
2584 */
2585enum
2586{
2587TMS_null = 0, // Unknown Operation
2588TMS_abs, // Absolute value of Acc
2589TMS_adcb, // Add ACCB to Acc With Carry
2590TMS_add, // Add to Acc
2591TMS_addb, // Add ACCB to Acc
2592TMS_addc, // Add to Acc With Carry
2593TMS_adds, // Add to Acc With Sign-Extension Suppressed
2594TMS_addt, // Add to Acc With Shift Specified by TREG1
2595TMS_adrk, // Add to Aux Register With Short Immediate
2596TMS_and, // AND With Acc
2597TMS_andb, // AND ACCD With Acc
2598TMS_apac, // Add P Register to Acc
2599TMS_apl, // AND Data Memory Value With DBMR
2600TMS_apl2, // AND Data Memory Value With Long Constant
2601TMS_b, // Branch Unconditionally
2602TMS_bacc, // Branch to Location (Acc)
2603TMS_baccd, // Branch to Location (Acc) Delayed
2604TMS_banz, // Branch on Aux Register Not Zero
2605TMS_banzd, // Branch on Aux Register Not Zero Delayed
2606TMS_bcnd, // Branch Conditionally
2607TMS_bcndd, // Branch Conditionally Delayed
2608TMS_bd, // Branch Unconditionally Delayed
2609TMS_bit, // Test Bit
2610TMS_bitt, // Test Bit Specified by TREG2
2611TMS_bldd, // Block Move From Data Memory to Data Memory
2612TMS_bldp, // Block Move From Data Memory to Program Memory
2613TMS_blpd, // Block Move From Program Memory to Data Memory
2614TMS_bsar, // Barrel Shift
2615TMS_cala, // Call Subroutine at (Acc)
2616TMS_calad, // Call Subroutine at (Acc) Delayed
2617TMS_call, // Call Unconditionally
2618TMS_calld, // Call Unconditionally Delayed
2619TMS_cc, // Call Conditionally
2620TMS_ccd, // Call Conditionally Delayed
2621TMS_clrc, // Clear Control Bit
2622TMS_cmpl, // Complement Acc
2623TMS_cmpr, // Compare Aux Register With ARCR
2624TMS_cpl, // Compare DBMR With Data Value
2625TMS_cpl2, // Compare Long Immediate With Data Value
2626TMS_crgt, // Test for Acc Greater Than ACCB
2627TMS_crlt, // Test for Acc Smaller Than ACCB
2628TMS_dmov, // Data Move in Data Memory
2629TMS_estop, // Emulator Stop
2630TMS_exar, // Exchange ACCB With Acc
2631TMS_idle, // Idle Until Interrupt
2632TMS_idle2, // Idle Until Interrupt - Low Power Mode
2633TMS_in, // Input Data From Port
2634TMS_intr, // Soft Interrupt
2635TMS_lacb, // Load Acc With ACCB
2636TMS_lacc, // Load Acc With Shift
2637TMS_lacl, // Load Low Acc and Clear High Acc
2638TMS_lact, // Load Acc With Shift Specified by TREG1
2639TMS_lamm, // Load Acc With Memory-Mapped Register
2640TMS_lar, // Load Aux Register
2641TMS_ldp, // Load Data Memory Pointer
2642TMS_lmmr, // Load Memory-Mapped Register
2643TMS_lph, // Load Product High Register
2644TMS_lst, // Load Status Register
2645TMS_lt, // Load TREG0
2646TMS_lta, // Load TREG0 and Accumulate Previous Product
2647TMS_ltd, // Load TREG0,Accumulate Previous Product and Move Data
2648TMS_ltp, // Load TREG0 and Store P -> Acc
2649TMS_lts, // Load TREG0 and Subtract Previous Product
2650TMS_mac, // Multiply and Accumulate
2651TMS_macd, // Multiply and Accumulate With Data Move
2652TMS_madd, // Multiply and Accumulate With Data Move and Dynamic Addressing
2653TMS_mads, // Multiply and Accumulate With Dynamic Addressing
2654TMS_mar, // Modify Aux Register
2655TMS_mpy, // Multiply
2656TMS_mpya, // Multiply and Accumulate Previous Product
2657TMS_mpys, // Multiply and Subtract Previous Product
2658TMS_mpyu, // Multiply Unsigned
2659TMS_neg, // Negate Acc
2660TMS_nmi, // Nonmaskable Interrupt
2661TMS_nop, // No Operation
2662TMS_norm, // Normalize Contents of Acc
2663TMS_opl, // OR With DBMS
2664TMS_opl2, // OR With Long Immediate
2665TMS_or, // OR With Acc
2666TMS_orb, // OR ACCB With Accumulator
2667TMS_out, // Out Data to Port
2668TMS_pac, // Load Acc <- P
2669TMS_pop, // Pop Top of Stack to Low Acc
2670TMS_popd, // Pop Top of Stack to Data Memory
2671TMS_pshd, // Push Data Memory Value Onto Stack
2672TMS_push, // Push Low Acc Onto Stack
2673TMS_ret, // Return From Subroutine
2674TMS_retc, // Return Conditionally
2675TMS_retcd, // Return Conditionally Delayed
2676TMS_retd, // Return From Subroutine Delayed
2677TMS_rete, // Enable Interrupts and Return From Interrupt
2678TMS_reti, // Return From Interrupt
2679TMS_rol, // Rotate Acc Left
2680TMS_rolb, // Rotate ACCB and Acc Left
2681TMS_ror, // Rotate Acc Right
2682TMS_rorb, // Rotate ACCB and Acc Right
2683TMS_rpt, // Repeat Next Instruction
2684TMS_rptb, // Repeat Block
2685TMS_rptz, // Repeat Preceded by Clearing Acc and P
2686TMS_sacb, // Store Acc in ACCB
2687TMS_sach, // Store High Acc With Shift
2688TMS_sacl, // Store Low Acc With Shift
2689TMS_samm, // Store Acc in Memory-Mapped Register
2690TMS_sar, // Store Aux Register
2691TMS_sath, // Barrel Shift Acc as Specified by TREG1(4)
2692TMS_satl, // Barrel Shift Acc as Specified by TREG1(3-0)
2693TMS_sbb, // Subtract ACCB From Acc
2694TMS_sbbb, // Subtract ACCB From Acc With Borrow
2695TMS_sbrk, // Subtract From Aux Register Short Immediate
2696TMS_setc, // Set Control Bit
2697TMS_sfl, // Shift Acc Left
2698TMS_sflb, // Shift ACCB and Acc Left
2699TMS_sfr, // Shift Acc Right
2700TMS_sfrb, // Shift ACCB and Acc Right
2701TMS_smmr, // Store Memory-Mapped Register
2702TMS_spac, // Subtract P From Acc
2703TMS_sph, // Store High P Register
2704TMS_spl, // Store Low P Register
2705TMS_splk, // Store Parallel Long Immediate
2706TMS_spm, // Store ACCB and Acc Right
2707TMS_sqra, // Square and Accumulate Previous Product
2708TMS_sqrs, // Square and Subtract Previous Product
2709TMS_sst, // Store Status Register
2710TMS_sub, // Subtract From Acc
2711TMS_subb, // Subtract From Acc With Borrow
2712TMS_subc, // Conditional Subtract
2713TMS_subs, // Subtract From Acc With Sign-Extension Suppressed
2714TMS_subt, // Subtract From Acc With Shift Specified by TREG1
2715TMS_tblr, // Table Read
2716TMS_tblw, // Table Write
2717TMS_trap, // Software Interrupt
2718TMS_xc, // Execute Conditionally
2719TMS_xor, // Exclusive-OR With Acc
2720TMS_xorb, // Exclusive-OR of ACCB With Acc
2721TMS_xpl, // Exclusive-OR Data Memory Value
2722TMS_xpl2, // Exclusive-OR Data Memory Value
2723TMS_zalr, // Zero Low Acc Load High Acc With Rounding
2724TMS_zap, // Zero Acc and P
2725TMS_zpr, // Zero P Register
2726//
2727// TMS320C2x instructions
2728//
2729TMS2_abs, // Absolute value of accumulator
2730TMS2_add, // Add to accumulator with shift
2731TMS2_addc, // Add to accumulator with carry
2732TMS2_addh, // Add to high accumulator
2733TMS2_addk, // Add to accumulator short immediate
2734TMS2_adds, // Add to low accumulator with sign extension suppressed
2735TMS2_addt, // Add to accumulator with shift specified by T register
2736TMS2_adlk, // Add to accumulator long immediate with shift
2737TMS2_adrk, // Add to auxiliary register short immediate
2738TMS2_and, // And with accumulator
2739TMS2_andk, // And immediate with accumulator with shift
2740TMS2_apac, // App P register to accumulator
2741TMS2_b, // Branch unconditionally
2742TMS2_bacc, // Branch to address specified by accumulator
2743TMS2_banz, // Bnrach on auxiliary register not zero
2744TMS2_bbnz, // Branch if tc bit != 0
2745TMS2_bbz, // Branch if tc bit = 0
2746TMS2_bc, // Branch on carry
2747TMS2_bgez, // Branch if accumulator >= 0
2748TMS2_bgz, // Branch if accumulator > 0
2749TMS2_bioz, // Branch on i/o status = 0
2750TMS2_bit, // Test bit
2751TMS2_bitt, // Test bit specifed by T register
2752TMS2_blez, // Branch if accumulator <= 0
2753TMS2_blkd, // Block move from data memory to data memory
2754TMS2_blkp, // Block move from program memory to data memory
2755TMS2_blz, // Branch if accumulator < 0
2756TMS2_bnc, // Branch on no carry
2757TMS2_bnv, // Branch if no overflow
2758TMS2_bnz, // Branch if accumulator != 0
2759TMS2_bv, // Branch on overflow
2760TMS2_bz, // Branch if accumulator = 0
2761TMS2_cala, // Call subroutine indirect
2762TMS2_call, // Call subroutine
2763TMS2_cmpl, // Complement accumulator
2764TMS2_cmpr, // Compare auxiliary register with auxiliary register ar0
2765TMS2_cnfd, // Configure block as data memory
2766TMS2_cnfp, // Configure block as program memory
2767TMS2_conf, // Configure block as data/program memory
2768TMS2_dint, // Disable interrupt
2769TMS2_dmov, // Data move in data memory
2770TMS2_eint, // Enable interrupt
2771TMS2_fort, // Format serial port registers
2772TMS2_idle, // Idle until interrupt
2773TMS2_in, // Input data from port
2774TMS2_lac, // Load accumulator with shift
2775TMS2_lack, // Load accumulator short immediate
2776TMS2_lact, // Load accumulator with shift specified by T register
2777TMS2_lalk, // Load accumulator long immediate with shift
2778TMS2_lar, // Load auxiliary register
2779TMS2_lark, // Load auxiliary register short immediate
2780TMS2_larp, // Load auxiliary register pointer
2781TMS2_ldp, // Load data memory page pointer
2782TMS2_ldpk, // Load data memory page pointer immediate
2783TMS2_lph, // Load high P register
2784TMS2_lrlk, // Load auxiliary register long immediate
2785TMS2_lst, // Load status register ST0
2786TMS2_lst1, // Load status register ST1
2787TMS2_lt, // Load T register
2788TMS2_lta, // Load T register and accumulate previous product
2789TMS2_ltd, // Load T register, accumulate previous product and move data
2790TMS2_ltp, // Load T register and store P register in accumulator
2791TMS2_lts, // Load T register and subtract previous product
2792TMS2_mac, // Multiply and accumulate
2793TMS2_macd, // Multiply and accumulate with data move
2794TMS2_mar, // Modify auxiliary register
2795TMS2_mpy, // Multiply (with T register, store product in P register)
2796TMS2_mpya, // Multiply and accumulate previous product
2797TMS2_mpyk, // Multiply immediate
2798TMS2_mpys, // Multiply and subtract previous product
2799TMS2_mpyu, // Multiply unsigned
2800TMS2_neg, // Negate accumulator
2801TMS2_nop, // No operation
2802TMS2_norm, // Normalize contents of accumulator
2803TMS2_or, // Or with accumulator
2804TMS2_ork, // Or immediate with accumulator with shift
2805TMS2_out, // Output data to port
2806TMS2_pac, // Load accumulator with P register
2807TMS2_pop, // Pop top of stack to low accumulator
2808TMS2_popd, // Pop top of stack to data memory
2809TMS2_pshd, // Push data memory value onto stack
2810TMS2_push, // Push low accumulator onto stack
2811TMS2_rc, // Reset carry bit
2812TMS2_ret, // Return from subroutine
2813TMS2_rfsm, // Reset serial port frame synchronization mode
2814TMS2_rhm, // Reset hold mode
2815TMS2_rol, // Rotate accumulator left
2816TMS2_ror, // Rotate acuumulator right
2817TMS2_rovm, // Reset overflow mode
2818TMS2_rpt, // Repeat instruction as specified by data memory value
2819TMS2_rptk, // Repeat instruction as specified by immediate value
2820TMS2_rsxm, // Reset sign extension mode
2821TMS2_rtc, // Reset test/control flag
2822TMS2_rtxm, // Reset serial port transmit mode
2823TMS2_rxf, // Reset external flag
2824TMS2_sach, // Store high accumulator with shift
2825TMS2_sacl, // Store low accumulator with shift
2826TMS2_sar, // Store auxiliary register
2827TMS2_sblk, // Subtract from accumulator long immediate with shift
2828TMS2_sbrk, // Subtract from auxiliary register short immediate
2829TMS2_sc, // Set carry bit
2830TMS2_sfl, // Shift accumulator left
2831TMS2_sfr, // Shift accumulator right
2832TMS2_sfsm, // Set serial port frame synchronization mode
2833TMS2_shm, // Set hold mode
2834TMS2_sovm, // Set overflow mode
2835TMS2_spac, // Subtract P register from accumulator
2836TMS2_sph, // Store high P register
2837TMS2_spl, // Store low P register
2838TMS2_spm, // Set P register output shift mode
2839TMS2_sqra, // Square and accumulate
2840TMS2_sqrs, // Square and subtract previous product
2841TMS2_sst, // Store status register ST0
2842TMS2_sst1, // Store status register ST1
2843TMS2_ssxm, // Set sign extension mode
2844TMS2_stc, // Set test/control flag
2845TMS2_stxm, // Set serial port transmit mode
2846TMS2_sub, // Subtract from accumulator with shift
2847TMS2_subb, // Subtract from accumulator with borrow
2848TMS2_subc, // Conditional subtract
2849TMS2_subh, // Subtract from high accumulator
2850TMS2_subk, // Subtract from accumulator shoft immediate
2851TMS2_subs, // Subtract from low accumulator with sign extension suppressed
2852TMS2_subt, // Subtract from accumulator with shift specified by T register
2853TMS2_sxf, // Set external flag
2854TMS2_tblr, // Table read
2855TMS2_tblw, // Table write
2856TMS2_trap, // Software interrupt
2857TMS2_xor, // Exclusive or with accumulator
2858TMS2_xork, // Exclusive or immediate with accumulator with shift
2859TMS2_zac, // Zero accumulator
2860TMS2_zalh, // Zero low accumulator and load high accumulator
2861TMS2_zalr, // Zero low accumulator and load high accumulator with rounding
2862TMS2_zals, // Zero low accumulator and load high accumulator with sign extension suppressed
2864 };
2865/*
2866 * Interactive disassembler (IDA).
2867 * Copyright (c) 1990-2026 Hex-Rays
2868 * ALL RIGHTS RESERVED.
2869 *
2870 */
2871enum
2872{
2873 M65_null = 0, // Unknown Operation
2874 // NMOS instructions
2875 M65_adc, // A <- (A) + M + C
2876 M65_anc, // A <- A /\ M, C <- ~A7
2877 M65_and, // A <- (A) /\ M
2878 M65_ane, // M <-[(A)\/$EE] /\ (X)/\‍(M)
2879 M65_arr, // A <- [(A /\ M) >> 1]
2880 M65_asl, // C <- A7, A <- (A) << 1
2881 M65_asr, // A <- [(A /\ M) >> 1]
2882 M65_bcc, // if C=0, PC = PC + offset
2883 M65_bcs, // if C=1, PC = PC + offset
2884 M65_beq, // if Z=1, PC = PC + offset
2885 M65_bit, // Z <- ~(A /\ M) N<-M7 V<-M6
2886 M65_bmi, // if N=1, PC = PC + offset
2887 M65_bne, // if Z=0, PC = PC + offset
2888 M65_bpl, // if N=0, PC = PC + offset
2889 M65_brk, // Stack <- PC, PC <- ($fffe)
2890 M65_bvc, // if V=0, PC = PC + offset
2891 M65_bvs, // if V=1, PC = PC + offset
2892 M65_clc, // C <- 0
2893 M65_cld, // D <- 0
2894 M65_cli, // I <- 0
2895 M65_clv, // V <- 0
2896 M65_cmp, // (A - M) -> NZC
2897 M65_cpx, // (X - M) -> NZC
2898 M65_cpy, // (Y - M) -> NZC
2899 M65_dcp, // M <- (M)-1, (A-M) -> NZC
2900 M65_dec, // M <- (M) - 1
2901 M65_dex, // X <- (X) - 1
2902 M65_dey, // Y <- (Y) - 1
2903 M65_eor, // A <- (A) \-/ M
2904 M65_inc, // M <- (M) + 1
2905 M65_inx, // X <- (X) +1
2906 M65_iny, // Y <- (Y) + 1
2907 M65_isb, // M <- (M) - 1,A <- (A)-M-~C
2908 M65_jmp, // PC <- Address
2909 M65_jmpi, // (PC <- Address)
2910 M65_jsr, // Stack <- PC, PC <- Address
2911 M65_lae, // X,S,A <- (S /\ M)
2912 M65_lax, // A <- M, X <- M
2913 M65_lda, // A <- M
2914 M65_ldx, // X <- M
2915 M65_ldy, // Y <- M
2916 M65_lsr, // C <- A0, A <- (A) >> 1
2917 M65_lxa, // X04 <- (X04) /\ M04, A04 <- (A04) /\ M04
2918 M65_nop, // [no operation]
2919 M65_ora, // A <- (A) V M
2920 M65_pha, // Stack <- (A)
2921 M65_php, // Stack <- (P)
2922 M65_pla, // A <- (Stack)
2923 M65_plp, // A <- (Stack)
2924 M65_rla, // M <- (M << 1) /\ (A)
2925 M65_rol, // C <- A7 & A <- A << 1 + C
2926 M65_ror, // C<-A0 & A<- (A7=C + A>>1)
2927 M65_rra, // M <- (M >> 1) + (A) + C
2928 M65_rti, // P <- (Stack), PC <-(Stack)
2929 M65_rts, // PC <- (Stack)
2930 M65_sax, // M <- (A) /\ (X)
2931 M65_sbc, // A <- (A) - M - ~C
2932 M65_sbx, // X <- (X)/\‍(A) - M
2933 M65_sec, // C <- 1
2934 M65_sed, // D <- 1
2935 M65_sei, // I <- 1
2936 M65_sha, // M <- (A) /\ (X) /\ (PCH+1)
2937 M65_shs, // X <- (A) /\ (X), S <- (X), M <- (X) /\ (PCH+1)
2938 M65_shx, // M <- (X) /\ (PCH+1)
2939 M65_shy, // M <- (Y) /\ (PCH+1)
2940 M65_slo, // M <- (M >> 1) + A + C
2941 M65_sre, // M <- (M >> 1) \-/ A
2942 M65_sta, // M <- (A)
2943 M65_stx, // M <- (X)
2944 M65_sty, // M <- (Y)
2945 M65_tax, // X <- (A)
2946 M65_tay, // Y <- (A)
2947 M65_tsx, // X <- (S)
2948 M65_txa, // A <- (X)
2949 M65_txs, // S <- (X)
2950 M65_tya, // A <- (Y)
2951 // CMOS instructions
2952 M65_bbr0, // Branch if bit 0 reset
2953 M65_bbr1, // Branch if bit 1 reset
2954 M65_bbr2, // Branch if bit 2 reset
2955 M65_bbr3, // Branch if bit 3 reset
2956 M65_bbr4, // Branch if bit 4 reset
2957 M65_bbr5, // Branch if bit 5 reset
2958 M65_bbr6, // Branch if bit 6 reset
2959 M65_bbr7, // Branch if bit 7 reset
2960 M65_bbs0, // Branch if bit 0 set
2961 M65_bbs1, // Branch if bit 1 set
2962 M65_bbs2, // Branch if bit 2 set
2963 M65_bbs3, // Branch if bit 3 set
2964 M65_bbs4, // Branch if bit 4 set
2965 M65_bbs5, // Branch if bit 5 set
2966 M65_bbs6, // Branch if bit 6 set
2967 M65_bbs7, // Branch if bit 7 set
2968 M65_rmb0, // Reset memory bit 0
2969 M65_rmb1, // Reset memory bit 1
2970 M65_rmb2, // Reset memory bit 2
2971 M65_rmb3, // Reset memory bit 3
2972 M65_rmb4, // Reset memory bit 4
2973 M65_rmb5, // Reset memory bit 5
2974 M65_rmb6, // Reset memory bit 6
2975 M65_rmb7, // Reset memory bit 7
2976 M65_smb0, // Set memory bit 0
2977 M65_smb1, // Set memory bit 1
2978 M65_smb2, // Set memory bit 2
2979 M65_smb3, // Set memory bit 3
2980 M65_smb4, // Set memory bit 4
2981 M65_smb5, // Set memory bit 5
2982 M65_smb6, // Set memory bit 6
2983 M65_smb7, // Set memory bit 7
2984 M65_stz, // Store zero
2985 M65_tsb, // Test and set bits
2986 M65_trb, // Test and reset bits
2987 M65_phy, // Push Y register
2988 M65_ply, // Pull Y register
2989 M65_phx, // Push X register
2990 M65_plx, // Pull X register
2991 M65_bra, // Branch always
2992 M65_wai, // Wait for interrupt
2993 M65_stp, // Stop processor
2995};
2996// The instruction types (``itype''s)
2997// m65* CPUs implements.
2999{
3000 // http://www.westerndesigncenter.com/wdc/datasheets/Programmanual.pdf
3001 M65816_null=0, // Unknown Operation
3002 M65816_adc, // Add with carry
3003 M65816_and, // AND A with memory
3004 M65816_asl, // Shift memory or A left
3005 M65816_bcc, // Branch if carry clear
3006 M65816_bcs, // Branch if carry set
3007 M65816_beq, // Branch if equal
3008 M65816_bit, // Test memory bits against A
3009 M65816_bmi, // Branch if minus
3010 M65816_bne, // Branch if not equal
3011 M65816_bpl, // Branch if plus
3012 M65816_bra, // Branch always
3013 M65816_brk, // Software break
3014 M65816_brl, // Branch always long
3015 M65816_bvc, // Branch if overflow clear
3016 M65816_bvs, // Branch if overflow set
3017 M65816_clc, // Clear carry flag
3018 M65816_cld, // Clear decimal mode flag
3019 M65816_cli, // Clear interrupt disable flag
3020 M65816_clv, // Clear overflow flag
3021 M65816_cmp, // Compare A with memory
3022 M65816_cop, // Co-processor enable
3023 M65816_cpx, // Compare X with memory
3024 M65816_cpy, // Compare Y with memory
3025 M65816_dec, // Decrement
3026 M65816_dex, // Decrement X
3027 M65816_dey, // Decrement Y
3028 M65816_eor, // XOR A with M
3029 M65816_inc, // Increment
3030 M65816_inx, // Increment X
3031 M65816_iny, // Increment Y
3032 M65816_jml, // Jump long (inter-bank)
3033 M65816_jmp, // Jump
3034 M65816_jsl, // Jump to subroutine long (inter-bank)
3035 M65816_jsr, // Jump to subroutine
3036 M65816_lda, // Load A from memory
3037 M65816_ldx, // Load X from memory
3038 M65816_ldy, // Load Y from memory
3039 M65816_lsr, // Logical shift memory or A right
3040 M65816_mvn, // Block move next
3041 M65816_mvp, // Block move prev
3043 M65816_ora, // Or A with memory
3044 M65816_pea, // Push effective absolute address
3045 M65816_pei, // Push effective indirect address
3046 M65816_per, // Push effective PC-relative indirect address
3047 M65816_pha, // Push A
3048 M65816_phb, // Push B (data bank register)
3049 M65816_phd, // Push D (direct page register)
3050 M65816_phk, // Push K (program bank register)
3051 M65816_php, // Push processor status
3052 M65816_phx, // Push X
3053 M65816_phy, // Push Y
3054 M65816_pla, // Pull A
3055 M65816_plb, // Pull B
3056 M65816_pld, // Pull D
3057 M65816_plp, // Pull processor status
3058 M65816_plx, // Pull X
3059 M65816_ply, // Pull Y
3060 M65816_rep, // Reset status bits
3061 M65816_rol, // Rotate memory or A left
3062 M65816_ror, // Rotate memory or A right
3063 M65816_rti, // Return from interrupt
3064 M65816_rtl, // Return from subroutine long
3065 M65816_rts, // Return from subroutine
3066 M65816_sbc, // Subtract with borrow from A
3067 M65816_sec, // Set carry flag
3068 M65816_sed, // Set decimal mode flag
3069 M65816_sei, // Set interrupt disable flag
3070 M65816_sep, // Set status bits
3071 M65816_sta, // Store A to memory
3072 M65816_stp, // Stop processor
3073 M65816_stx, // Store X to memory
3074 M65816_sty, // Store Y to memory
3075 M65816_stz, // Store zero to memory
3076 M65816_tax, // Transfer A to X
3077 M65816_tay, // Transfer A to Y
3078 M65816_tcd, // Transfer 16-bit A to D (direct page register)
3079 M65816_tcs, // Transfer A to S
3080 M65816_tdc, // Transfer 16-bit D to A
3081 M65816_trb, // Test and reset memory bits against A
3082 M65816_tsb, // Test and set memory bits against A
3083 M65816_tsc, // Transfer S to A
3084 M65816_tsx, // Transfer S to X
3085 M65816_txa, // Transfer X to A
3086 M65816_txs, // Transfer X to S
3087 M65816_txy, // Transfer X to Y
3088 M65816_tya, // Transfer Y to A
3089 M65816_tyx, // Transfer Y to X
3090 M65816_wai, // Wait for interrupt
3091 M65816_wdm, // Reserved
3092 M65816_xba, // Exchange bytes in A
3093 M65816_xce, // Exchange carry and emulation bits
3095};
3096/*
3097 * Interactive disassembler (IDA)
3098 * Copyright (c) 1990-2026 Hex-Rays
3099 * PDP11 module.
3100 * Copyright (c) 1995-2006 by Iouri Kharon.
3101 * E-mail: yjh@styx.cabel.net
3102 *
3103 * ALL RIGHTS RESERVED.
3104 *
3105 */
3106enum
3107{
3108pdp_null = 0, // Unknown Operation
3109pdp_halt, // Stop CPU
3110pdp_wait, // Wait interrupt
3111pdp_rti, // Interrupt return
3112pdp_bpt, // Trap to Debbuger
3113pdp_iot, // Trap to 20 (i/o)
3114pdp_reset, // Reset CPU and device
3115pdp_rtt, // Interrupt return and ignore dbg-flag
3116pdp_mfpt, // Load Processor Type (* hi model)
3117pdp_jmp, // Absolute jmp
3118pdp_rts, // Return into subroutine
3119pdp_spl, // Set Prior.
3120pdp_nop, // Not operation
3121pdp_clc, // Clear C bit in PSW
3122pdp_clv, // Clear V bit in PSW
3123pdp_clz, // Clear Z bit in PSW
3124pdp_cln, // Clear N bit in PSW
3125pdp_ccc, // Clear All Condition bits in PSW
3126pdp_sec, // Set C bit in PSW
3127pdp_sev, // Set V bit in PSW
3128pdp_sez, // Set Z bit in PSW
3129pdp_sen, // Set N bit in PSW
3130pdp_scc, // Set All Condition bits bit in PSW
3131pdp_swab, // Exchange byte in word
3132pdp_br, // Relative jmp
3133pdp_bne, // Jump if Z=0
3134pdp_beq, // Jump if Z=1
3135pdp_bge, // Jump if N^V=0
3136pdp_blt, // Jump if N^V=1
3137pdp_bgt, // Jump if Z|(N^V)=0
3138pdp_ble, // Jump if Z|(N^V)=1
3139pdp_jsr, // Call procedure
3140pdp_clr, // Clear operand
3141pdp_com, // Inverse operand
3142pdp_inc, // Increment operand
3143pdp_dec, // Decrement operand
3144pdp_neg, // op = -op
3145pdp_adc, // Add with Carry
3146pdp_sbc, // Substract with Carry
3147pdp_tst, // Test operand
3148pdp_ror, // Cyclic shift rignt
3149pdp_rol, // Cyclic shift left
3150pdp_asr, // Arifmetic shift rignt
3151pdp_asl, // Arifmetic shift left
3152pdp_mark, // Return and empty stack
3153pdp_mfpi, // Load from previous instruction space (*hi model)
3154pdp_mtpi, // Store to previous instruction space (*hi model)
3155pdp_sxt, // N=>op
3156pdp_mov, // Move operand
3157pdp_cmp, // Compare operands
3158pdp_bit, // Check Bit's
3159pdp_bic, // Clear Bit's
3160pdp_bis, // Set Bit's
3161pdp_add, // Add operands
3162pdp_sub, // Substract operands
3163pdp_mul, // Multiple Reg (*eis)
3164pdp_div, // Divide Reg (*eis)
3165pdp_ash, // Multistep shift (*eis)
3166pdp_ashc, // Multistep shift 2 reg (*eis)
3167pdp_xor, // Exclusive or (*eis)
3168pdp_fadd, // Floating Add (*fis)
3169pdp_fsub, // Floating Subtract (*fis)
3170pdp_fmul, // Floating Multiple (*fis)
3171pdp_fdiv, // Floating Divide (*fis)
3173pdp_bpl, // Jump if N=0
3174pdp_bmi, // Jump if N=1
3175pdp_bhi, // Jump if (!C)&(!Z)=0
3176pdp_blos, // Jump if C|Z=1
3177pdp_bvc, // Jump if V=0
3178pdp_bvs, // Jump if V=1
3179pdp_bcc, // Jump if C=0
3180pdp_bcs, // Jump if C=1
3181pdp_emt, // Trap to System
3182pdp_trap, // Trap to user/compiler
3183pdp_mtps, // Store PSW (*lsi11 only)
3184pdp_mfpd, // Load from previous data space (*hi model)
3185pdp_mtpd, // Store to previous data space (*hi model)
3186pdp_mfps, // Load PSW (*lsi11 only)
3187 // FPU instruction
3188pdp_cfcc, // Copy cond.codes into FPS to PSW
3189pdp_setf, // Set Float
3190pdp_seti, // Set Integer
3191pdp_setd, // Set Double
3192pdp_setl, // Set Long Integer
3193pdp_ldfps, // Load FPS
3194pdp_stfps, // Store FPS
3195pdp_stst, // Load interrupt status
3196pdp_clrd, // Clear
3197pdp_tstd, // Test
3198pdp_absd, // op = mod(op)
3199pdp_negd, // op = -op
3200pdp_muld, // Multiple
3201pdp_modd, // Get int. part
3203pdp_ldd, // Load in Acc
3204pdp_subd, // Substract
3205pdp_cmpd, // Compare
3206pdp_std, // Store into Acc
3207pdp_divd, // Divide
3208pdp_stexp, // Store exponent
3209pdp_stcdi, // Store and convert double/float to integer/long
3210pdp_stcdf, // Store and convert double/float to float/double
3211pdp_ldexp, // Load exponent
3212pdp_ldcif, // Load and convert integer/long to double/float
3213pdp_ldcfd, // Load and convert float/double to double/float
3214pdp_call, // Jsr PC,
3215pdp_return, // RTS PC
3216pdp_compcc, // Complex Condition Codes
3218 };
3219/*
3220 * Interactive disassembler (IDA).
3221 * Copyright (c) 1990-2026 Hex-Rays
3222 * ALL RIGHTS RESERVED.
3223 *
3224 */
3225enum
3226{
3227 mc_null = 0, // Unknown Operation
3228 mc_abcd, // summa with BCD correction
3229 mc_add, // summa with Dn
3230 mc_adda, // summa with An
3231 mc_addi, // summa with immediate
3232 mc_addq, // -"-
3233 mc_addx, // summa 2 reg and const
3234 mc_and, // logical and
3235 mc_andi, // logical and with immediate
3236 mc_asl, // shift by count
3237 mc_asr, // -"-
3238 mc_b, // branch if cond code
3239 mc_bchg, // bit chang
3240 mc_bclr, // bit clear
3241 mc_bftst, // bit field test
3242 mc_bfchg, // bit field change
3243 mc_bfclr, // bit field set in 0
3244 mc_bfset, // bit field set in 1
3245 mc_bfextu, // bit field extract (unsigned)
3246 mc_bfexts, // bit field extract (signed)
3247 mc_bfffo, // bit field offset
3248 mc_bfins, // bit field include
3249 mc_bgnd, // CPU32- enter backgound mode
3250 mc_bkpt, // disable TRAP at any cycles
3251 mc_bra, // branch
3252 mc_bset, // bit set
3253 mc_bsr, // relative call
3254 mc_btst, // bit test
3255 mc_callm, // call module [descrtiptor] (020)
3256 mc_cas, // compare and swap
3257 mc_cas2, // -"-
3258 mc_chk, // compare and trap
3259 mc_chk2, // -"-
3260 mc_cinv, // invalidate cache
3261 mc_clr, // clear data
3262 mc_cmp, // compare data
3263 mc_cmp2, // -"-
3264 mc_cmpa, // compare address
3265 mc_cmpi, // compare immediate
3266 mc_cmpm, // compare memory
3267 mc_cpush, // invalidate cache
3268 mc_db, // (djnz) if cond code
3269 mc_divs, // sign divide
3270 mc_divsl, // -"-
3271 mc_divu, // unsign didide
3272 mc_divul, // -"-
3273 mc_eor, // logical xor
3274 mc_eori, // logical xor with immediate
3275 mc_exg, // exchange registers
3276 mc_ext, // analog cwd
3277 mc_extb, // analog cwq
3278 mc_fabs, // FP abs
3279 mc_facos, // FP acos
3280 mc_fadd, // FP add
3281 mc_fasin, // FP asin
3282 mc_fatan, // FP atan
3283 mc_fatanh, // FP atanh
3284 mc_fb, // fBcc
3285 mc_fcmp, // FP cmp
3286 mc_fcos, // FP cos
3287 mc_fcosh, // FP cosh
3288 mc_fdabs, // FP abs double rounded
3289 mc_fdadd, // FP add
3290 mc_fdb, // fDBcc
3291 mc_fddiv, // FP div double rounded
3292 mc_fdiv, // FP div
3293 mc_fdmove, // FP mov double rounded
3294 mc_fdmul, // FP mul double rounded
3295 mc_fdneg, // FP neg double rounded
3296 mc_fdsqrt, // FP sqrt double rounded
3297 mc_fdsub, // FP sub double rounded
3298 mc_fetox, // FP e**x
3299 mc_fetoxm1, // FP e**x-1
3300 mc_fgetexp, // FP extract exponent
3301 mc_fgetman, // FP extract mantissa
3302 mc_fint, // FP get integer part
3303 mc_fintrz, // FP get integer part by round
3304 mc_flog2, // FP log[2]
3305 mc_flog10, // FP log[10]
3306 mc_flogn, // FP log[e]
3307 mc_flognp1, // FP log[e] x+1
3308 mc_fmod, // FP mod
3309 mc_fmove, // move float
3310 mc_fmovecr, // move floating const
3311 mc_fmovem, // move float register list
3312 mc_fmul, // FM mul
3313 mc_fneg, // FP neg
3314 mc_fnop, // float nop
3315 mc_frem, // FP rem
3316 mc_frestore, // restore status
3317 mc_fs, // fScc
3318 mc_fsabs, // FP abs single rounded
3319 mc_fsadd, // FP add single rounded
3320 mc_fsave, // Fsave status
3321 mc_fscale, // FP *2**x
3322 mc_fsdiv, // FP div single rounded
3323 mc_fsgldiv, // FP single div
3324 mc_fsglmul, // FP single mul
3325 mc_fsin, // FP sin
3326 mc_fsincos, // FP sin & cos
3327 mc_fsinh, // FP sinh
3328 mc_fsmove, // FP mov single rounded
3329 mc_fsmul, // FP mul single rounded
3330 mc_fsneg, // FP neg single rounded
3331 mc_fsqrt, // FP sqrt
3332 mc_fssqrt, // FP sqrt single rounded
3333 mc_fssub, // FP sub single rounded
3334 mc_fsub, // FP sub
3335 mc_ftan, // FP tan
3336 mc_ftanh, // FP tanh
3337 mc_ftentox, // FP 10**x
3338 mc_ftrap, // fTRAPcc
3339 mc_ftst, // FP tst
3340 mc_ftwotox, // FP 2**x
3341 mc_halt, // (coldfire) Halt the processor
3342 mc_illegal, // trap to vector
3343 mc_jmp, // absolute Jmp
3344 mc_jsr, // absolute jsr
3345 mc_lea, // load effective address
3346 mc_link, // change sp context
3347 mc_lpstop, // cpu32 - stop
3348 mc_lsl, // logical shift
3349 mc_lsr, // -"-
3350 mc_mac, // multiple and accumulate
3351 mc_macl, // multiple and accumulate with register load
3352 mc_move, // move memory
3353 mc_move16, // move 16 byte
3354 mc_movea, // move move with address reg
3355 mc_movec, // move from/to control register
3356 mc_movem, // move register list
3357 mc_movep, // move with data register
3358 mc_moveq, // move with immediate
3359 mc_moves, // mtpd/mfpd
3360 mc_msac, // multiple and subtract
3361 mc_msacl, // multiple and subtract with register load
3362 mc_muls, // sign multiplication
3363 mc_mulu, // unsign multiplication
3364 mc_nbcd, // negative with BCD correct
3365 mc_neg, // negative
3366 mc_negx, // negative with immediate
3367 mc_nop, // null operation
3368 mc_not, // logical not
3369 mc_or, // logical or
3370 mc_ori, // logical or with immediate
3371 mc_pack, // UNP(bcd)+adj -> PACK(bcd)
3372 mc_pea, // lea into stack
3373 mc_pb, // 68851 pbcc
3374 mc_pdb, // 68851 pdbcc
3375 mc_pflush, // invalidate cache
3376 mc_pflushr, // 68851 load root entry
3377 mc_ploadr, // 68851
3378 mc_ploadw, // 68851
3379 mc_pmove, // move MMU register
3380 mc_prestore, // 68851
3381 mc_psave, // 68851
3382 mc_ps, // 68851 pscc
3383 mc_ptestr, // test a logical address
3385 mc_ptrap, // 68851 ptrapcc
3386 mc_pulse, // (coldfire) generate unique PST value
3387 mc_pvalid, // 68851 move AL bit
3388 mc_rol, // cycl. shift
3389 mc_ror, // -"-
3390 mc_roxl, // two op cycl shift
3391 mc_roxr, // -"-
3392 mc_reset, // reset
3393 mc_rtd, // mark
3394 mc_rte, // return with SR
3395 mc_rtm, // reload save module state
3396 mc_rtr, // return with CCR
3397 mc_rts, // return
3398 mc_sbcd, // substract with BCD correction
3399 mc_s, // 1 if cond code else 0
3400 mc_stop, // halt
3401 mc_sub, // substract
3402 mc_suba, // substract address
3403 mc_subi, // substract immediate
3404 mc_subq, // -"-
3405 mc_subx, // substract memory
3406 mc_swap, // hi and low word in register
3407 mc_tas, // test byte sign
3408 mc_tbl, // CPU32-tblu/tblun/tbls/tblsn
3409 mc_trap, // analog int(86) (or trap if cond code)
3410 mc_trapv, // if V then trap
3411 mc_tst, // test destination
3412 mc_unlk, // destroy address ?
3413 mc_unpk, // PACK(bcd)+adj -> UNPACK(bcd)
3414 mc_wddata, // (coldfire) load WDDATA port (pins)
3415 mc_wdebug, // (coldfire) load debug register
3416 mc_atrap, // MacOS atrap
3417 // new ColdFire instructions
3418 mc_bitrev, // bit reverse
3419 mc_byterev, // byte reverse
3420 mc_ff1, // find first one
3421 mc_intouch, // instruction fetch touch
3422 mc_mov3q, // move 3-bit data quick
3423 mc_mvs, // move with sign extend
3424 mc_mvz, // move with zero-fill
3425 mc_sats, // signed saturate
3426 mc_movclr, // move from accumulator and clear
3427 mc_maaac, // Multiply and Add to 1st Accumulator, Add to 2nd Accumulator
3428 mc_masac, // Multiply and Add to 1st Accumulator, Subtract from 2nd Accumulator
3429 mc_msaac, // Multiply and Subtract to 1st Accumulator, Add to 2nd Accumulator
3430 mc_mssac, // Multiply and Subtract to 1st Accumulator, Subtract to 2nd Accumulator
3431 mc_remsl, // Signed Divide Remainder
3432 mc_remul, // Unsigned Divide Remainder
3434};
3435/*
3436 * Interactive disassembler (IDA).
3437 * Copyright (c) 1990-2026 Hex-Rays
3438 * ALL RIGHTS RESERVED.
3439 *
3440 */
3441enum
3442{
3443mc8_null = 0, // Unknown Operation
3444mc8_aba, // Add b to a (11)
3445mc8_ab, // Add b to index register
3446mc8_adc, // Add with carry
3447mc8_add, // Add without carry
3448mc8_addd, // Add 16-bit to D (11)
3449mc8_ais, // Add immediate value to stack pointer (8)
3450mc8_aix, // Add immediate value to index register (H:X) (8)
3451mc8_and, // Logical AND
3452mc8_andcc, // Logical AND immdiate with CCR (9)
3453mc8_asr, // Ariphmetic shift right
3454mc8_bcc, // Branch if carry bit clear
3455mc8_bclr, // Clear bit in memory
3456mc8_bcs, // Branch if carry bit set
3457mc8_beq, // Branch if equal
3458mc8_bge, // Branch if >= (signed)
3459mc8_bgt, // Branch if > (signed)
3460mc8_bhcc, // Branch if half carry bit clear (8)
3461mc8_bhcs, // Branch if half carry bit set (8)
3462mc8_bhi, // Branch if > (unsigned)
3463mc8_bhs, // Branch if >= (unsigned) (11)
3464mc8_bih, // Branch if IRQ pin high (8)
3465mc8_bil, // Branch if IRQ pin low (8)
3466mc8_bit, // Bit test (8)
3467mc8_ble, // Branch if <= (signed) (8)
3468mc8_blo, // Branch if < (unsigned) (11)
3469mc8_bls, // Branch if <= (unsigned) (8)
3470mc8_blt, // Branch if < (signed) (8)
3471mc8_bmc, // Branch if interrupt mask clear (8)
3472mc8_bmi, // Branch if minus
3473mc8_bms, // Branch if interrupt mask set (8)
3474mc8_bne, // Branch if not equal
3475mc8_bpl, // Branch if not plus
3476mc8_bra, // Branch always
3477mc8_brclr, // Branch if bit (n) in memory clear
3478mc8_brn, // Branch never
3479mc8_brset, // Branch if bit (n) in memory set
3480mc8_bset, // Set bit in memory
3481mc8_bsr, // Branch to subroutine
3482mc8_bvc, // Branch if overflow cleared (11)
3483mc8_bvs, // Branch if overflow set (11)
3484mc8_cba, // Compare A to B (11)
3485mc8_cbeq, // Compare and branch if equal (8)
3486mc8_clc, // Clear carry bit
3487mc8_cli, // Clear interrupt mask
3488mc8_clr, // Clear
3489mc8_clv, // Clear overflow flag (11)
3490mc8_cmp, // Compare accumulator with memory
3491mc8_com, // Complement
3492mc8_cp, // Compare index register 16 bit (11)
3493mc8_cpd, // Compare D 16 bit (11)
3494mc8_cphx, // Compare index register with memory (8)
3495mc8_cpx, // Compare X (index register low) with memory (8)
3496mc8_cwai, // Clear CC bits & wait for interrupt (9)
3497mc8_daa, // Decimal adjust accumulator
3498mc8_dbnz, // Decrement and branch if not equal (8)
3499mc8_de, // Decrement index register (11)
3500mc8_dec, // Decrement
3501mc8_des, // Decrement stack pointer (11)
3502mc8_div, // Divide (8)
3503mc8_eor, // Excusive OR memory with accumulator
3504mc8_exg, // Exchange register (9)
3505mc8_fdiv, // Fractional divide 16 by 16 (11)
3506mc8_idiv, // Integer divide 16 by 16 (11)
3507mc8_in, // Increment index register (11)
3508mc8_inc, // Increment
3509mc8_ins, // Increment stack pointer (11)
3510mc8_jmp, // Jump
3511mc8_jsr, // Jump to subroutine
3512mc8_ld, // Load index register (11)
3513mc8_lda, // Load accumulator from memory
3514mc8_ldd, // Load double accumulator (11)
3515mc8_ldhx, // Load index register from memory (8)
3516mc8_lds, // Load stack pointer (11)
3517mc8_ldx, // Load X (index register low) from memory (8)
3518mc8_lea, // Load register from memory (9)
3519mc8_lsl, // Logical (or Ariphmetic) shift left
3520mc8_lsld, // Logical (or Ariphmetic) shift left double (11)
3521mc8_lsr, // Logical shift right
3522mc8_lsrd, // Logical shift right double (11)
3523mc8_mov, // Move (8)
3524mc8_mul, // Unsigned multiply
3525mc8_neg, // Negate
3526mc8_nop, // No Operation
3527mc8_nsa, // Nibble swap accumulator (8)
3528mc8_ora, // Inclusive OR memory with accumulator
3529mc8_orcc, // Inclusive OR immediate with CCR (9)
3530mc8_psh, // Push index register into stack (low first) (11)
3531mc8_psha, // Push accumulator A into stack
3532mc8_pshb, // Push accumulator B into stack (11)
3533mc8_pshh, // Push H (index register high) into stack (8)
3534mc8_pshx, // Push X (index register low) into stack (8)
3535mc8_pul, // Pull index register from stack (hi first) (11)
3536mc8_pula, // Pull accumulator A from stack
3537mc8_pulb, // Pull accumulator B from stack (11)
3538mc8_pulh, // Pull H (index register high) from stack (8)
3539mc8_pulx, // Pull X (index register low) from stack (8)
3540mc8_rol, // Rotate left trough carry
3541mc8_ror, // Rotate right trough carry
3542mc8_rsp, // Reset stack pointer (8)
3543mc8_rti, // Reset from interrupt
3544mc8_rts, // Reset from subroutine
3545mc8_sba, // Subtract B from A (11)
3546mc8_sbc, // Subtract with carry
3547mc8_sec, // Set carry bit
3548mc8_sei, // Set interrupt mask bit
3549mc8_sev, // Set Overflow Flag (11)
3550mc8_sex, // Sign extended (9)
3551mc8_slp, // Sleep (HD63701 extention) (11)
3552mc8_st, // Store index register in memory (11)
3553mc8_sta, // Store accumulator in memory
3554mc8_std, // Store accumulators in memory (11)
3555mc8_sthx, // Store H:X (index reg) (8)
3556mc8_stop, // Enable IRQ pin. Stop oscillator
3557mc8_sts, // Store stack pointer (11)
3558mc8_stx, // Store X (index register low) in memory (8)
3559mc8_sub, // Subtract
3560mc8_subd, // Subtract 16-bit (11)
3561mc8_swi, // Software interrupt
3562mc8_sync, // Syncronisation with interrupt (9)
3563mc8_tab, // Transfer A to B (11)
3564mc8_tap, // Transfer A to CCR
3565mc8_tax, // Transfer accumulator to X (index register low) (8)
3566mc8_tba, // Transfer B to A (11)
3567mc8_test, // Address Bus Counts (in test mode) (11)
3568mc8_tfr, // Transfer register to register (9)
3569mc8_tpa, // Transfer CCR to A
3570mc8_ts, // Transfer SP to index reg (11)
3571mc8_tst, // Test for negative or zero
3572mc8_tsx, // Transfer SP to index reg (8)
3573mc8_txa, // Transfer X (index reg low) to accumulator (8)
3574mc8_txs, // Transfer index reg X to SP
3575mc8_tys, // Transfer index reg Y to SP (11)
3576mc8_wai, // Wait for interrupt (11)
3577mc8_wait, // Enable interrupt. Stop processor (8)
3578mc8_xgd, // Exchange D with index register (11)
3579mc8_1, // Special testing command (11)
3580mc8_2, // Special testing command (11)
3581mc8_os9, // OS9 system call (9)
3582// these instructions must be continuous (HD63701 extention)
3587// new S08 instructions
3588mc8_bgnd, // Background (8)
3589mc8_call, // Call Subroutine (8)
3590mc8_rtc, // Return fom Call (8)
3591// Pseudoinstructions
3592mc8_skip1, // Skip one byte
3593mc8_skip2, // Skip two bytes
3595 };
3596/*
3597 * Interactive disassembler (IDA)
3598 * Copyright (c) 1990-2026 Hex-Rays
3599 * JVM module.
3600 * Copyright (c) 1995-2006 by Iouri Kharon.
3601 * E-mail: yjh@styx.cabel.net
3602 *
3603 * ALL RIGHTS RESERVED.
3604 *
3605 */
3606enum
3607{
3608 j_nop = 0, // 0 Do nothing
3609 j_aconst_null, // 1 Push null object reference
3610 j_iconst_m1, // 2 Push integer constant -1
3611 j_iconst_0, // 3 Push the integer 0
3612 j_iconst_1, // 4 Push the integer 1
3613 j_iconst_2, // 5 Push the integer 2
3614 j_iconst_3, // 6 Push the integer 3
3615 j_iconst_4, // 7 Push the integer 4
3616 j_iconst_5, // 8 Push the integer 5
3617 j_lconst_0, // 9 Push the long integer 0
3618 j_lconst_1, // 10 Push the long integer 1
3619 j_fconst_0, // 11 Push the single-precision foating point 0.0
3620 j_fconst_1, // 12 Push the single-precision foating point 1.0
3621 j_fconst_2, // 13 Push the single-precision foating point 2.0
3622 j_dconst_0, // 14 Push the double-precision foating point 2.0
3623 j_dconst_1, // 15 Push the double-precision foating point 2.0
3624 j_bipush, // 16 Push one byte signed integer
3625 j_sipush, // 17 Push two-byte signed integer
3626 j_ldc, // 18 Push item from constant pool (i1)
3627 j_ldcw, // 19 Push item from constant pool (i2)
3628 j_ldc2w, // 20 Push long or double from constant pool
3629 j_iload, // 21 Push integer value of the local variable
3630 j_lload, // 22 Push long value of the local variable
3631 j_fload, // 23 Push single float value of the local variable
3632 j_dload, // 24 Push double float value of the local variable
3633 j_aload, // 25 Push object reference from the local variable
3634 j_iload_0, // 26 Push integer value of the local variable #0
3635 j_iload_1, // 27 Push integer value of the local variable #1
3636 j_iload_2, // 28 Push integer value of the local variable #2
3637 j_iload_3, // 29 Push integer value of the local variable #3
3638 j_lload_0, // 30 Push long value of the local variable #0
3639 j_lload_1, // 31 Push long value of the local variable #1
3640 j_lload_2, // 32 Push long value of the local variable #2
3641 j_lload_3, // 33 Push long value of the local variable #3
3642 j_fload_0, // 34 Push single float value of the local variable #0
3643 j_fload_1, // 35 Push single float value of the local variable #1
3644 j_fload_2, // 36 Push single float value of the local variable #2
3645 j_fload_3, // 37 Push single float value of the local variable #3
3646 j_dload_0, // 38 Push double float value of the local variable #0
3647 j_dload_1, // 39 Push double float value of the local variable #1
3648 j_dload_2, // 40 Push double float value of the local variable #2
3649 j_dload_3, // 41 Push double float value of the local variable #3
3650 j_aload_0, // 42 Push object reference from the local variable #0
3651 j_aload_1, // 43 Push object reference from the local variable #1
3652 j_aload_2, // 44 Push object reference from the local variable #2
3653 j_aload_3, // 45 Push object reference from the local variable #3
3654 j_iaload, // 46 Push integer from array
3655 j_laload, // 47 Push long from array
3656 j_faload, // 48 Push single float from array
3657 j_daload, // 49 Push double float from array
3658 j_aaload, // 50 Push object refernce from array
3659 j_baload, // 51 Push signed byte from array
3660 j_caload, // 52 Push character from array
3661 j_saload, // 53 Push short from array
3662 j_istore, // 54 Pop integer value into local variable
3663 j_lstore, // 55 Pop long value into local variable
3664 j_fstore, // 56 Pop single float value into local variable
3665 j_dstore, // 57 Pop double float value into local variable
3666 j_astore, // 58 Pop object refernce into local variable
3667 j_istore_0, // 59 Pop integer value into local variable #0
3668 j_istore_1, // 60 Pop integer value into local variable #1
3669 j_istore_2, // 61 Pop integer value into local variable #2
3670 j_istore_3, // 62 Pop integer value into local variable #3
3671 j_lstore_0, // 63 Pop long value into local variable #0
3672 j_lstore_1, // 64 Pop long value into local variable #1
3673 j_lstore_2, // 65 Pop long value into local variable #2
3674 j_lstore_3, // 66 Pop long value into local variable #3
3675 j_fstore_0, // 67 Pop single float value into local variable #0
3676 j_fstore_1, // 68 Pop single float value into local variable #1
3677 j_fstore_2, // 69 Pop single float value into local variable #2
3678 j_fstore_3, // 70 Pop single float value into local variable #3
3679 j_dstore_0, // 71 Pop double float value into local variable
3680 j_dstore_1, // 72 Pop double float value into local variable #0
3681 j_dstore_2, // 73 Pop double float value into local variable #1
3682 j_dstore_3, // 74 Pop double float value into local variable #2
3683 j_astore_0, // 75 Pop object refernce into local variable #0
3684 j_astore_1, // 76 Pop object refernce into local variable #1
3685 j_astore_2, // 77 Pop object refernce into local variable #2
3686 j_astore_3, // 78 Pop object refernce into local variable #3
3687 j_iastore, // 79 Pop integer from array
3688 j_lastore, // 80 Pop long from array
3689 j_fastore, // 81 Pop single float from array
3690 j_dastore, // 82 Pop double float from array
3691 j_aastore, // 83 Pop object refernce from array
3692 j_bastore, // 84 Pop signed byte from array
3693 j_castore, // 85 Pop character from array
3694 j_sastore, // 86 Pop short from array
3695 j_pop, // 87 Pop top stack word
3696 j_pop2, // 88 Pop top two stack word
3697 j_dup, // 89 Duplicate top stack word
3698 j_dup_x1, // 90 Duplicate top stack word and put two down
3699 j_dup_x2, // 91 Duplicate top stack word and put three down
3700 j_dup2, // 92 Duplicate top two stack word
3701 j_dup2_x1, // 93 Duplicate top two stack words and put two down
3702 j_dup2_x2, // 94 Duplicate top two stack words and put three down
3703 j_swap, // 95 Swap two top stack words
3704 j_iadd, // 96 Integer add
3705 j_ladd, // 97 Long add
3706 j_fadd, // 98 Single float add
3707 j_dadd, // 99 Double float add
3708 j_isub, // 100 Integer subtract
3709 j_lsub, // 101 Long subtract
3710 j_fsub, // 102 Single float subtract
3711 j_dsub, // 103 Double Float subtract
3712 j_imul, // 104 Integer multiply
3713 j_lmul, // 105 Long multiply
3714 j_fmul, // 106 Single float multiply
3715 j_dmul, // 107 Double Float multiply
3716 j_idiv, // 108 Integer divide
3717 j_ldiv, // 109 Long divide
3718 j_fdiv, // 110 Single float divide
3719 j_ddiv, // 111 Double Float divide
3720 j_irem, // 112 Integer reminder
3721 j_lrem, // 113 Long reminder
3722 j_frem, // 114 Single float reminder
3723 j_drem, // 115 Double Float reminder
3724 j_ineg, // 116 Integer negate
3725 j_lneg, // 117 Long negate
3726 j_fneg, // 118 Single float negate
3727 j_dneg, // 119 Double Float negate
3728 j_ishl, // 120 Integer shift left
3729 j_lshl, // 121 Long shift left
3730 j_ishr, // 122 Integer logical shift right
3731 j_lshr, // 123 Long logical shift right
3732 j_iushr, // 124 Integer arithmetic shift right
3733 j_lushr, // 125 Long arithmeticshift right
3734 j_iand, // 126 Integer boolean AND
3735 j_land, // 127 Long boolean AND
3736 j_ior, // 128 Integer boolean OR
3737 j_lor, // 129 Long boolean OR
3738 j_ixor, // 130 Integer boolean XOR
3739 j_lxor, // 131 Long boolean XOR
3740 j_iinc, // 132 Add 8-bit signed const to local variable
3741 j_i2l, // 133 Integer to Long conversion
3742 j_i2f, // 134 Integer to single float conversion
3743 j_i2d, // 135 Integer to double float conversion
3744 j_l2i, // 136 Long to Integer conversion
3745 j_l2f, // 137 Long to single float conversion
3746 j_l2d, // 138 Long to double float conversion
3747 j_f2i, // 139 Single float to Integer conversion
3748 j_f2l, // 140 Single float to Long conversion
3749 j_f2d, // 141 Single float to double float conversion
3750 j_d2i, // 142 Double float to Integer conversion
3751 j_d2l, // 143 Double float to Long conversion
3752 j_d2f, // 144 Double float to double float conversion
3753 j_i2b, // 145 Integer to signed byte conversion
3754 j_i2c, // 146 Integer to unsigned short conversion
3755 j_i2s, // 147 Integer to signed short conversion
3756 j_lcmp, // 148 Long compare
3757 j_fcmpl, // 149 Single float compare (-1 on NaN)
3758 j_fcmpg, // 150 Single float compare (1 on NaN)
3759 j_dcmpl, // 151 Double float compare (-1 on NaN)
3760 j_dcmpg, // 152 Double float compare (1 on NaN)
3761 j_ifeq, // 153 Branch if equal to 0
3762 j_ifne, // 154 Branch if not equal to 0
3763 j_iflt, // 155 Branch if less then 0
3764 j_ifge, // 156 Branch if greater than or equal to 0
3765 j_ifgt, // 157 Branch if greater than 0
3766 j_ifle, // 158 Branch if less than or equal to 0
3767 j_if_icmpeq, // 159 Branch if integers equal
3768 j_if_icmpne, // 160 Branch if integers not equal
3769 j_if_icmplt, // 161 Branch if integers less than
3770 j_if_icmpge, // 162 Branch if integers grater than or equal to
3771 j_if_icmpgt, // 163 Branch if integers grater than
3772 j_if_icmple, // 164 Branch if integers less than or equal to
3773 j_if_acmpeq, // 165 Branch if object references are equal
3774 j_if_acmpne, // 166 Branch if object references not equal
3775 j_goto, // 167 Branch always
3776 j_jsr, // 168 Jump subroutine
3777 j_ret, // 169 Return from subroutine
3778 j_tableswitch, // 170 Access jump table by index and jump
3779 j_lookupswitch, // 171 Access jump table by key match and jump
3780 j_ireturn, // 172 Return integer from function
3781 j_lreturn, // 173 Return long from function
3782 j_freturn, // 174 Return single floatr from function
3783 j_dreturn, // 175 Return double float from function
3784 j_areturn, // 176 Return object reference from function
3785 j_return, // 177 Return (void) from procedure
3786 j_getstatic, // 178 Set static field from class
3787 j_putstatic, // 179 Set static field in class
3788 j_getfield, // 180 Fetch field from object
3789 j_putfield, // 181 Set field in object
3790 j_invokevirtual, // 182 invoke instance method
3791 j_invokespecial, // 183 invoke instance method (superclass/init/...)
3792 j_invokestatic, // 184 invoke a class (static) method
3793 j_invokeinterface,// 185 invoke interface method
3794 j_invokedynamic, // 186 invoke instance method (select by paraneter)
3795 j_new, // 187 Create new object
3796 j_newarray, // 188 Allocate new array
3797 j_anewarray, // 189 Allocate new array of refernces to object
3798 j_arraylength, // 190 Get length of array
3799 j_athrow, // 191 Throw exception or error
3800 j_checkcast, // 192 Make sure object is of given type
3801 j_instanceof, // 193 Determine if an object is of given type
3802 j_monitorenter, // 194 Enter monitored region of code
3803 j_monitorexit, // 195 Exit monitored region of code
3804 j_wide, // 196 wide (prefix of command)
3805 j_multianewarray, // 197 Allocate new multi-dimensional array
3806 j_ifnull, // 198 Branch if NULL-ptr
3807 j_ifnonnull, // 199 Branch if not NULL-ptr
3808 j_goto_w, // 200 Branch always (wide index)
3809 j_jsr_w, // 201 Jump subroutine (wide index)
3810 j_breakpoint, // 202 Stop and pass control to breakpoint handler
3811 //
3816 // bottom of table ! (emu)
3819 //
3821};
3852/*
3853 * Interactive disassembler (IDA).
3854 * Copyright (c) 1990-2026 Hex-Rays
3855 * ALL RIGHTS RESERVED.
3856 *
3857 */
3858enum
3859{
3860ARM_null = 0, // Unknown Operation
3861ARM_ret, // Return from Subroutine
3862ARM_nop, // No Operation
3863ARM_b, // Branch
3864ARM_bl, // Branch with Link
3865ARM_asr, // Arithmetic Shift Right
3866ARM_lsl, // Logical Shift Left
3867ARM_lsr, // Logical Shift Right
3868ARM_ror, // Rotate Right
3869ARM_neg, // Negate
3870ARM_and, // 0 Rd = Op1 & Op2
3871ARM_eor, // 1 Rd = Op1 ^ Op2
3872ARM_sub, // 2 Rd = Op1 - Op2
3873ARM_rsb, // 3 Rd = Op2 - Op1
3874ARM_add, // 4 Rd = Op1 + Op2
3875ARM_adc, // 5 Rd = Op1 + Op2 + C
3876ARM_sbc, // 6 Rd = Op1 - Op2 + C - 1
3877ARM_rsc, // 7 Rd = Op2 - Op1 + C - 1
3878ARM_tst, // 8 Set cond. codes on Op1 & Op2
3879ARM_teq, // 9 Set cond. codes on Op1 ^ Op2
3880ARM_cmp, // A Set cond. codes on Op1 - Op2
3881ARM_cmn, // B Set cond. codes on Op1 + Op2
3882ARM_orr, // C Rd = Op1 | Op2
3883ARM_mov, // D Rd = Op2
3884ARM_bic, // E Rd = Op1 & ~Op2
3885ARM_mvn, // F Rd = ~Op2
3886ARM_mrs, // Transfer PSR to Register
3887ARM_msr, // Transfer Register to PSR
3888ARM_mul, // Multiply
3889ARM_mla, // Multiply-Accumulate
3890ARM_ldr, // Load from Memory
3891ARM_ldrpc, // Indirect Jump
3892ARM_str, // Store to Memory
3893ARM_ldm, // Load Block from Memory
3894ARM_stm, // Store Block to Memory
3895ARM_swp, // Single Data Swap
3896ARM_svc, // Supervisor call
3897// Version 4
3898ARM_smull, // Signed Multiply long
3899ARM_smlal, // Signed Multiply-Accumulate long
3900ARM_umull, // Unsigned Multiply long
3901ARM_umlal, // Unsigned Multiply-Accumulate long
3902ARM_bx, // Branch to/from Thumb mode
3903ARM_pop, // Pop registers
3904ARM_push, // Push registers
3905ARM_adr, // Load address
3906// Version 5
3907ARM_bkpt, // Breakpoint
3908ARM_blx1, // Branch with Link and Exchange (immediate address)
3909ARM_blx2, // Branch with Link and Exchange (register indirect)
3910ARM_clz, // Count Leading Zeros
3911// Version 5E
3912ARM_ldrd, // Load pair of registers
3913ARM_pld, // Prepare to load data
3914ARM_qadd, // Saturated addition
3915ARM_qdadd, // Saturated addition with doubling
3916ARM_qdsub, // Saturated subtraction with doubling
3917ARM_qsub, // Saturated subtraction
3918ARM_smlabb, // Signed multiply-accumulate (bottom*bottom)
3919ARM_smlatb, // Signed multiply-accumulate (top*bottom)
3920ARM_smlabt, // Signed multiply-accumulate (bottom*top)
3921ARM_smlatt, // Signed multiply-accumulate (top*top)
3922ARM_smlalbb, // Long signed multiply-accumulate (bottom*bottom)
3923ARM_smlaltb, // Long signed multiply-accumulate (top*bottom)
3924ARM_smlalbt, // Long signed multiply-accumulate (bottom*top)
3925ARM_smlaltt, // Long signed multiply-accumulate (top*top)
3926ARM_smlawb, // Wide signed multiply-accumulate (bottom)
3927ARM_smulwb, // Wide signed multiply (bottom)
3928ARM_smlawt, // Wide signed multiply-accumulate (top)
3929ARM_smulwt, // Wide signed multiply (top)
3930ARM_smulbb, // Signed multiply (bottom*bottom)
3931ARM_smultb, // Signed multiply (top*bottom)
3932ARM_smulbt, // Signed multiply (bottom*top)
3933ARM_smultt, // Signed multiply (top*top)
3934ARM_strd, // Store pair of registers
3935// Intel xScale coprocessor instructions
3936xScale_mia, // Multiply-Internal Accumulate
3937xScale_miaph, // Multiply-Internal Accumulate Packed HalfWords
3938xScale_miabb, // Multiply-Internal Accumulate Bottom-Bottom Halves
3939xScale_miabt, // Multiply-Internal Accumulate Bottom-Top Halves
3940xScale_miatb, // Multiply-Internal Accumulate Top-Bottom Halves
3941xScale_miatt, // Multiply-Internal Accumulate Top-Top Halves
3942xScale_mar, // Move To Internal Accumulator
3943xScale_mra, // Move From Internal Accumulator
3944// Macro instructions
3945ARM_movl, // Move immediate to register
3946ARM_adrl, // Load address
3947ARM_swbkpt, // WinCE Debugger break
3948// Coprocessor instructions
3949ARM_cdp, // Coprocessor Data Processing
3950ARM_cdp2, // Coprocessor Data Processing
3951ARM_ldc, // Load Coprocessor Register
3952ARM_ldc2, // Load Coprocessor Register
3953ARM_stc, // Store Coprocessor Register
3954ARM_stc2, // Store Coprocessor Register
3955ARM_mrc, // Move from Coprocessor to ARM Register
3956ARM_mrc2, // Move from Coprocessor to ARM Register
3957ARM_mcr, // Move from ARM to Coprocessor Register
3958ARM_mcr2, // Move from ARM to Coprocessor Register
3959ARM_mcrr, // Copy pair of registers to coprocessor (5E)
3960ARM_mrrc, // Copy pair of registers from coprocessor (5E)
3961// VFP instructions
3962ARM_fabsd, // Floating point Absolute Value, Double precision
3963ARM_fabss, // Floating point Absolute Value, Single precision
3964ARM_faddd, // Floating point Addition, Double precision
3965ARM_fadds, // Floating point Addition, Single precision
3966ARM_fcmpd, // Floating point Compare, Double precision
3967ARM_fcmps, // Floating point Compare, Single precision
3968ARM_fcmped, // Floating point Compare (NaN Exceptions), Double precision
3969ARM_fcmpes, // Floating point Compare (NaN Exceptions), Single precision
3970ARM_fcmpezd, // Floating point Compare (NaN Exceptions) with Zero, Double precision
3971ARM_fcmpezs, // Floating point Compare (NaN Exceptions) with Zero, Single precision
3972ARM_fcmpzd, // Floating point Compare with Zero, Double precision
3973ARM_fcmpzs, // Floating point Compare with Zero, Single precision
3974ARM_fcpyd, // Floating point Copy, Double precision
3975ARM_fcpys, // Floating point Copy, Single precision
3976ARM_fcvtsd, // Floating point Convert to Single precision from Double precision
3977ARM_fcvtds, // Floating point Convert to Double precision from Single precision
3978ARM_fdivd, // Floating point Divide, Double precision
3979ARM_fdivs, // Floating point Divide, Single precision
3980ARM_fldd, // Floating point Load, Double precision
3981ARM_flds, // Floating point Load, Single precision
3982ARM_fldmd, // Floating point Load Multiple, Double precision
3983ARM_fldms, // Floating point Load Multiple, Single precision
3984ARM_fldmx, // Floating point Load Multiple, Unknown precision
3985ARM_fmacd, // Floating point Multiply and Accumulate, Double precision
3986ARM_fmacs, // Floating point Multiply and Accumulate, Single precision
3987ARM_fmscd, // Floating point Multiply and Subtract, Double precision
3988ARM_fmscs, // Floating point Multiply and Subtract, Single precision
3989ARM_fmstat, // Floating point Move Status
3990ARM_fmuld, // Floating point Multiply, Double precision
3991ARM_fmuls, // Floating point Multiply, Single precision
3992ARM_fnegd, // Floating point Negate, Double precision
3993ARM_fnegs, // Floating point Negate, Single precision
3994ARM_fnmacd, // Floating point Negated Multiply and Accumulate, Double precision
3995ARM_fnmacs, // Floating point Negated Multiply and Accumulate, Single precision
3996ARM_fnmscd, // Floating point Negated Multiply and Subtract, Double precision
3997ARM_fnmscs, // Floating point Negated Multiply and Subtract, Single precision
3998ARM_fnmuld, // Floating point Negated Multiply, Double precision
3999ARM_fnmuls, // Floating point Negated Multiply, Single precision
4000ARM_fsitod, // Floating point Convert Signed Integer to Double precision
4001ARM_fsitos, // Floating point Convert Signed Integer to Single precision
4002ARM_fsqrtd, // Floating point Square Root, Double precision
4003ARM_fsqrts, // Floating point Square Root, Single precision
4004ARM_fstd, // Floating point Store, Double precision
4005ARM_fsts, // Floating point Store, Single precision
4006ARM_fstmd, // Floating point Store Multiple, Double precision
4007ARM_fstms, // Floating point Store Multiple, Single precision
4008ARM_fstmx, // Floating point Store Multiple, Unknown precision
4009ARM_fsubd, // Floating point Subtract, Double precision
4010ARM_fsubs, // Floating point Subtract, Single precision
4011ARM_ftosid, // Floating point Convert to Signed Integer from Double precision
4012ARM_ftosis, // Floating point Convert to Signed Integer from Single precision
4013ARM_ftosizd, // Floating point Convert to Signed Integer from Double precision, RZ mode
4014ARM_ftosizs, // Floating point Convert to Signed Integer from Single precision, RZ mode
4015ARM_ftouid, // Floating point Convert to Unsigned Integer from Double precision
4016ARM_ftouis, // Floating point Convert to Unsigned Integer from Single precision
4017ARM_ftouizd, // Floating point Convert to Unsigned Integer from Double precision, RZ mode
4018ARM_ftouizs, // Floating point Convert to Unsigned Integer from Single precision, RZ mode
4019ARM_fuitod, // Floating point Convert Unsigned Integer to Double precision
4020ARM_fuitos, // Floating point Convert Unsigned Integer to Single precision
4021ARM_fmdhr, // Floating point Move to Double precision High from Register
4022ARM_fmrdh, // Floating point Move to Register from Double precision High
4023ARM_fmdlr, // Floating point Move to Double precision Low from Register
4024ARM_fmrdl, // Floating point Move to Register from Double precision Low
4025ARM_fmxr, // Floating point Move to System Register from Register
4026ARM_fmrx, // Floating point Move to Register from System Register
4027ARM_fmsr, // Floating point Move to Single precision from Register
4028ARM_fmrs, // Floating point Move to Register from Single precision
4029// VFP ARMv5TE extensions
4030ARM_fmdrr, // Floating point Move to Double precision from two Registers
4031ARM_fmrrd, // Floating point Move to two Registers from Double precision
4032ARM_fmsrr, // Floating point Move to two Single precision from two Registers
4033ARM_fmrrs, // Floating point Move to two Registers from two Single precision
4034// ARM v5J instructions
4035ARM_bxj, // Branch to Jazelle
4036// ARM v6 instructions
4037ARM_mcrr2, // Move to Coprocessor from two ARM Registers
4038ARM_mrrc2, // Move to two ARM Registers from Coprocessor
4039ARM_cps, // Change Processor State
4040ARM_cpsid, // Disable Interrupts
4041ARM_cpsie, // Enable Interrupts
4042ARM_ldrex, // Load Register Exclusive
4043ARM_pkhbt, // Pack halfword bottom + top
4044ARM_pkhtb, // Pack halfword top + bottom
4045ARM_qadd16, // Signed saturating arithmetic hafword-wise addition
4046ARM_qadd8, // Signed saturating arithmetic byte-wise addition
4047ARM_qasx, // Saturating Add and Subtract with Exchange
4048ARM_qaddsubx=ARM_qasx, // Signed saturating arithmetic exchange, add, substract (old name)
4049ARM_qsub16, // Signed saturating arithmetic hafword-wise substraction
4050ARM_qsub8, // Signed saturating arithmetic byte-wise substraction
4051ARM_qsax, // Saturating Subtract and Add with Exchange
4052ARM_qsubaddx=ARM_qsax, // Signed saturating arithmetic exchange, substract, add (old name)
4053ARM_rev, // Byte Reverse Word
4054ARM_rev16, // Byte Reverse Packed Halfword
4055ARM_revsh, // Byte Reverse Signed Halfword
4056ARM_rfe, // Return from exception
4057ARM_sadd16, // Signed arithmetic modulo hafword-wise addition
4058ARM_sadd8, // Signed arithmetic modulo byte-wise addition
4059ARM_sasx, // Signed Add and Subtract with Exchange
4060ARM_saddsubx=ARM_sasx, // Signed arithmetic modulo exchange, add, substract (old name)
4061ARM_sel, // Select bytes
4062ARM_setend, // Set Byte Endianness
4063ARM_shadd16, // Signed arithmetic hafword-wise addition, halving results
4064ARM_shadd8, // Signed arithmetic byte-wise addition, halving results
4065ARM_shasx, // Signed Halving Add and Subtract with Exchange
4066ARM_shaddsubx=ARM_shasx,// Signed arithmetic exchange, add, substract, halving results (old name)
4067ARM_shsub16, // Signed arithmetic hafword-wise substraction, halving results
4068ARM_shsub8, // Signed arithmetic byte-wise substraction, halving results
4069ARM_shsax, // Signed Halving Subtract and Add with Exchange
4070ARM_shsubaddx=ARM_shsax,// Signed arithmetic exchange, substract, add, halving results (old name)
4071ARM_smlad, // Dual signed multiply, add and accumulate
4072ARM_smladx, // Dual signed multiply, add and accumulate crossed
4073ARM_smuad, // Dual signed multiply and add
4074ARM_smuadx, // Dual signed multiply and add crossed
4075ARM_smlald, // Dual signed multiply, add and accumulate long
4076ARM_smlaldx, // Dual signed multiply, add and accumulate long crossed
4077ARM_smlsd, // Dual signed multiply, substract and accumulate
4078ARM_smlsdx, // Dual signed multiply, substract and accumulate crossed
4079ARM_smusd, // Dual signed multiply and substract
4080ARM_smusdx, // Dual signed multiply and substract crossed
4081ARM_smlsld, // Dual signed multiply, substract and accumulate long
4082ARM_smlsldx, // Dual signed multiply, substract and accumulate long crossed
4083ARM_smmla, // Signed most significant word multiply and accumulate truncated
4084ARM_smmlar, // Signed most significant word multiply and accumulate rounded
4085ARM_smmul, // Signed most significant word multiply truncated
4086ARM_smmulr, // Signed most significant word multiply rounded
4087ARM_smmls, // Signed most significant word multiply and substract truncated
4088ARM_smmlsr, // Signed most significant word multiply and substract rounded
4089ARM_srs, // Store Return State
4090ARM_ssat, // Signed Saturate
4091ARM_ssat16, // Signed saturate two halfwords
4092ARM_ssub16, // Signed arithmetic hafword-wise substraction
4093ARM_ssub8, // Signed arithmetic byte-wise substraction
4094ARM_ssax, // Signed Subtract and Add with Exchange
4095ARM_ssubaddx=ARM_ssax, // Signed arithmetic exchange, substract, add (old name)
4096ARM_strex, // Store Register Exclusive
4097ARM_sxtab, // Signed extend byte to word, add
4098ARM_sxtb, // Signed extend byte to word
4099ARM_sxtab16, // Signed extend two bytes to halfwords, add
4100ARM_sxtb16, // Signed extend two bytes to halfwords
4101ARM_sxtah, // Signed extend halfword to word, add
4102ARM_sxth, // Signed extend halfword to word
4103ARM_uadd16, // Unsigned arithmetic modulo hafword-wise addition
4104ARM_uadd8, // Unsigned arithmetic modulo byte-wise addition
4105ARM_uasx, // Unsigned Add and Subtract with Exchange
4106ARM_uaddsubx=ARM_uasx, // Unsigned arithmetic modulo exchange, add, substract (old name)
4107ARM_uhadd16, // Unsigned arithmetic hafword-wise addition, halving results
4108ARM_uhadd8, // Unsigned arithmetic byte-wise addition, halving results
4109ARM_uhasx, // Unsigned Halving Add and Subtract with Exchange
4110ARM_uhaddsubx=ARM_uhasx,// Unsigned arithmetic exchange, add, substract, halving results (old name)
4111ARM_uhsub16, // Unsigned arithmetic hafword-wise substraction, halving results
4112ARM_uhsub8, // Unsigned arithmetic byte-wise substraction, halving results
4113ARM_uhsax, // Unsigned Halving Subtract and Add with Exchange
4114ARM_uhsubaddx=ARM_uhsax,// Unsigned arithmetic exchange, substract, add, halving results (old name)
4115ARM_umaal, // Multiply unsigned double accumulate long
4116ARM_uqadd16, // Unsigned saturating arithmetic hafword-wise addition
4117ARM_uqadd8, // Unsigned saturating arithmetic byte-wise addition
4118ARM_uqasx, // Unsigned Saturating Add and Subtract with Exchange
4119ARM_uqaddsubx=ARM_uqasx,// Unsigned saturating arithmetic exchange, add, substract (old name)
4120ARM_uqsub16, // Unsigned saturating arithmetic hafword-wise substraction
4121ARM_uqsub8, // Unsigned saturating arithmetic byte-wise substraction
4122ARM_uqsax, // Unsigned Saturating Subtract and Add with Exchange
4123ARM_uqsubaddx=ARM_uqsax,// Unsigned saturating arithmetic exchange, substract, add (old name)
4124ARM_usada8, // Unsigned sum of absolute differences and accumulate
4125ARM_usad8, // Unsigned sum of absolute differences
4126ARM_usat, // Unsigned saturate word
4127ARM_usat16, // Unsigned saturate two halfwords
4128ARM_usub16, // Unsigned arithmetic hafword-wise substraction
4129ARM_usub8, // Unsigned arithmetic byte-wise substraction
4130ARM_usax, // Unsigned Subtract and Add with Exchange
4131ARM_usubaddx=ARM_usax, // Unsigned arithmetic exchange, substract, add (old name)
4132ARM_uxtab, // Unsigned extend byte to word, add
4133ARM_uxtb, // Unsigned extend byte to word
4134ARM_uxtab16, // Unsigned extend two bytes to halfwords, add
4135ARM_uxtb16, // Unsigned extend two bytes to halfwords
4136ARM_uxtah, // Unsigned extend halfword to word, add
4137ARM_uxth, // Unsigned extend halfword to word
4138// ARM v6zk instructions
4139ARM_clrex, // Clear Exclusive
4140ARM_ldrexb, // Load Byte Exclusive
4141ARM_ldrexd, // Load DoubleWord Exclusive
4142ARM_ldrexh, // Load Halfword Exclusive
4143ARM_strexb, // Store Byte Exclusive
4144ARM_strexd, // Store DoubleWord Exclusive
4145ARM_strexh, // Store Halfword Exclusive
4146ARM_yield, // Yield (hint)
4147ARM_sev, // Send Event (hint)
4148ARM_wfe, // Wait For Event (hint)
4149ARM_wfi, // Wait For Interrupt (hint)
4150ARM_smc, // Secure Monitor Call
4151// ARM Thumb32 instructions
4152ARM_orn, // Rd = Op1 | ~Op2
4153ARM_movt, // Move Top
4154ARM_sbfx, // Signed Bit Field Extract
4155ARM_ubfx, // Unsigned Bit Field Extract
4156ARM_bfi, // Bit Field Insert
4157ARM_bfc, // Bit Field Clear
4158ARM_tbb, // Table Branch Byte
4159ARM_tbh, // Table Branch Halfword
4160ARM_pli, // Prepare to load code
4161ARM_rbit, // Reverse Bits
4162ARM_it, // If Then
4163ARM_mls, // Multiply and Subtract
4164ARM_sdiv, // Signed Divide
4165ARM_udiv, // Unsigned Divide
4166ARM_cbz, // Compare and Branch on Zero
4167ARM_cbnz, // Compare and Branch on Non-Zero
4168ARM_dsb, // Data Synchronization Barrier
4169ARM_dmb, // Data Memory Barrier
4170ARM_isb, // Instruction Synchronization Barrier
4171ARM_dbg, // Debug Hint
4172ARM_udf, // Permanently undefined
4173ARM_und = ARM_udf, // for backward compatibility
4174// missing instructions (not yet decoded)
4175ARM_rrx, // Rotate Right with Extend
4176ARM_enterx, // Enter ThumbEE state
4177ARM_leavex, // Leave ThumbEE state
4178ARM_chka, // Check Array
4179ARM_hb, // Handler Branch
4180ARM_hbl, // Handler Branch with Link
4181ARM_hblp, // Handler Branch with Link and Parameter
4182ARM_hbp, // Handler Branch with Parameter
4183// NEON (Advanced SIMD) and extra VFP instructions
4184ARM_vaba, // Vector Absolute Difference and Accumulate
4185ARM_vabal, // Vector Absolute Difference and Accumulate Long
4186ARM_vabd, // Vector Absolute Difference
4187ARM_vabdl, // Vector Absolute Difference Long
4188ARM_vabs, // Vector Absolute
4189ARM_vacge, // Vector Absolute Compare Greater Than or Equal
4190ARM_vacgt, // Vector Absolute Compare Greater Than
4191ARM_vacle, // Vector Absolute Compare Less Than or Equal
4192ARM_vaclt, // Vector Absolute Compare Less Than
4193ARM_vadd, // Vector Add
4194ARM_vaddhn, // Vector Add and Narrow, returning High Half
4195ARM_vaddl, // Vector Add Long
4196ARM_vaddw, // Vector Add Wide
4197ARM_vand, // Vector Bitwise AND
4198ARM_vbic, // Vector Bitwise Bit Clear
4199ARM_vbif, // Vector Bitwise Insert if False
4200ARM_vbit, // Vector Bitwise Insert if True
4201ARM_vbsl, // Vector Bitwise Select
4202ARM_vceq, // Vector Compare Equal
4203ARM_vcge, // Vector Compare Greater Than or Equal
4204ARM_vcgt, // Vector Compare Greater Than
4205ARM_vcle, // Vector Compare Less Than or Equal
4206ARM_vcls, // Vector Count Leading Sign Bits
4207ARM_vclt, // Vector Compare Less Than
4208ARM_vclz, // Vector Count Leading Zeros
4209ARM_vcmp, // Vector Compare
4210ARM_vcmpe, // Vector Compare (Quiet NaNs trigger Exception)
4211ARM_vcnt, // Vector Count Number of Bits
4212ARM_vcvt, // Vector Convert
4213ARM_vcvtr, // Vector Convert Rounding
4214ARM_vcvtb, // Vector Convert Half-Precision Bottom
4215ARM_vcvtt, // Vector Convert Half-Precision Top
4216ARM_vdiv, // Vector Divide
4217ARM_vdup, // Vector Duplicate
4218ARM_veor, // Vector Bitwise Exclusive OR
4219ARM_vext, // Vector Extract
4220ARM_vfma, // Vector Fused Multiply Accumulate
4221ARM_vfms, // Vector Fused Multiply Substract
4222ARM_vfnma, // Vector Fused Negated Multiply Accumulate
4223ARM_vfnms, // Vector Fused Negated Multiply Substract
4224ARM_vhadd, // Vector Halving Add
4225ARM_vhsub, // Vector Halving Sub
4226ARM_vld1, // Vector Load Single Element
4227ARM_vld2, // Vector Load Two-Element Structures
4228ARM_vld3, // Vector Load Three-Element Structures
4229ARM_vld4, // Vector Load Four-Element Structures
4230ARM_vldm, // Vector Load Multiple
4231ARM_vldr, // Vector Load Register
4232ARM_vmax, // Vector Maximum
4233ARM_vmin, // Vector Minimum
4234ARM_vmla, // Vector Multiply Accumulate
4235ARM_vmlal, // Vector Multiply Accumulate Long
4236ARM_vmls, // Vector Multiply Subtract
4237ARM_vmlsl, // Vector Multiply Subtract Long
4238ARM_vmov, // Vector Move
4239ARM_vmovl, // Vector Move Long
4240ARM_vmovn, // Vector Move and Narrow
4241ARM_vmrs, // Move FPSCR to ARM Register
4242ARM_vmsr, // Move to FPSCR from ARM Register
4243ARM_vmul, // Vector Multiply
4244ARM_vmull, // Vector Multiply Long
4245ARM_vmvn, // Vector Bitwise NOT
4246ARM_vneg, // Vector Negate
4247ARM_vnmla, // Vector Multiply Add Negated
4248ARM_vnmls, // Vector Multiply Substract Negated
4249ARM_vnmul, // Vector Multiply Negated
4250ARM_vorn, // Vector Bitwise OR NOT
4251ARM_vorr, // Vector Bitwise OR
4252ARM_vpadal, // Vector Pairwise Add and Accumulate Long
4253ARM_vpadd, // Vector Pairwise Add
4254ARM_vpaddl, // Vector Pairwise Add Long
4255ARM_vpmax, // Vector Pairwise Maximum
4256ARM_vpmin, // Vector Pairwise Minimum
4257ARM_vpop, // Vector Pop
4258ARM_vpush, // Vector Push
4259ARM_vqabs, // Vector Saturating Absolute
4260ARM_vqadd, // Vector Saturating Add
4261ARM_vqdmlal, // Vector Saturating Doubling Multiply Accumulate Long
4262ARM_vqdmlsl, // Vector Saturating Doubling Multiply Subtract Long
4263ARM_vqdmulh, // Vector Saturating Doubling Multiply Returning High Half
4264ARM_vqdmull, // Vector Saturating Doubling Multiply Long
4265ARM_vqmovn, // Vector Saturating Move and Narrow
4266ARM_vqmovun, // Vector Saturating Move and Narrow, Unsigned result
4267ARM_vqneg, // Vector Saturating Negate
4268ARM_vqrdmulh, // Vector Saturating Rounding Doubling Multiply Returning High Half
4269ARM_vqrshl, // Vector Saturating Rounding Shift Left
4270ARM_vqrshrn, // Vector Saturating Rounding Shift Right, Narrow
4271ARM_vqrshrun, // Vector Saturating Rounding Shift Right, Narrow, Unsigned result
4272ARM_vqshl, // Vector Saturating Shift Left
4273ARM_vqshlu, // Vector Saturating Shift Left, Unsigned result
4274ARM_vqshrn, // Vector Saturating Shift Right, Narrow
4275ARM_vqshrun, // Vector Saturating Shift Right, Narrow, Unsigned result
4276ARM_vqsub, // Vector Saturating Subtract
4277ARM_vraddhn, // Vector Rounding Add and Narrow, returning High Half
4278ARM_vrecpe, // Vector Reciprocal Estimate
4279ARM_vrecps, // Vector Reciprocal Step
4280ARM_vrev16, // Vector Reverse in halfwords
4281ARM_vrev32, // Vector Reverse in words
4282ARM_vrev64, // Vector Reverse in doublewords
4283ARM_vrhadd, // Vector Rounding Halving Add
4284ARM_vrshl, // Vector Rounding Shift Left
4285ARM_vrshr, // Vector Rounding Shift Right
4286ARM_vrshrn, // Vector Rounding Shift Right and Narrow
4287ARM_vrsqrte, // Vector Reciprocal Square Root Estimate
4288ARM_vrsqrts, // Vector Reciprocal Square Root Step
4289ARM_vrsra, // Vector Rounding Shift Right and Accumulate
4290ARM_vrsubhn, // Vector Rounding Subtract and Narrow, returning High Half
4291ARM_vshl, // Vector Shift Left
4292ARM_vshll, // Vector Shift Left Long
4293ARM_vshr, // Vector Shift Right
4294ARM_vshrn, // Vector Shift Right Narrow
4295ARM_vsli, // Vector Shift Left and Insert
4296ARM_vsqrt, // Vector Square Root
4297ARM_vsra, // Vector Shift Right and Accumulate
4298ARM_vsri, // Vector Shift Right and Insert
4299ARM_vst1, // Vector Store Single Element
4300ARM_vst2, // Vector Store Two-Element Structures
4301ARM_vst3, // Vector Store Three-Element Structures
4302ARM_vst4, // Vector Store Four-Element Structures
4303ARM_vstm, // Vector Store Multiple
4304ARM_vstr, // Vector Store Register
4305ARM_vsub, // Vector Subtract
4306ARM_vsubhn, // Vector Subtract and Narrow, returning High Half
4307ARM_vsubl, // Vector Subtract Long
4308ARM_vsubw, // Vector Subtract Wide
4309ARM_vswp, // Vector Swap
4310ARM_vtbl, // Vector Table Lookup
4311ARM_vtbx, // Vector Table Extension
4312ARM_vtrn, // Vector Transpose
4313ARM_vtst, // Vector Test Bits
4314ARM_vuzp, // Vector Unzip
4315ARM_vzip, // Vector Zip
4316// ARMv7 Hypervisor extensions
4317ARM_eret, // Exception Return
4318ARM_hvc, // Hypervisor Call
4319// new ARMv8 instructions for A32 and T32 mode
4320ARM_lda, // Load-Acquire Word/Byte/Halfword
4321ARM_stl, // Store-Release Word/Byte/Halfword
4322ARM_ldaex, // Load-Acquire Exclusive Word/Byte/Halfword
4323ARM_stlex, // Store-Release Exclusive Word/Byte/Halfword
4324ARM_vsel, // Floating-point Conditional Select
4325ARM_vmaxnm, // Vector Maximum Numeric
4326ARM_vminnm, // Vector Minimum Numeric
4327ARM_vcvta, // Vector Convert Round to Nearest with Ties to Away
4328ARM_vcvtn, // Vector Convert Round to Nearest with Ties to Even
4329ARM_vcvtp, // Vector Convert Round towards +Infinity
4330ARM_vcvtm, // Vector Convert Round towards -Infinity
4331ARM_vrintx, // Vector Round to Integral, FPSCR rounding mode and signaling inexactness
4332ARM_vrintr, // Vector Round to Integral, FPSCR rounding mode
4333ARM_vrintz, // Vector Round to Integral, Round toward Zero
4334ARM_vrinta, // Vector Round to Integral, Round to Nearest with Ties to Away
4335ARM_vrintn, // Vector Round to Integral, Round to Nearest with Ties to Even
4336ARM_vrintp, // Vector Round to Integral, Round towards +Infinity
4337ARM_vrintm, // Vector Round to Integral, Round towards -Infinity
4338ARM_aesd, // AES single round decryption
4339ARM_aese, // AES single round encryption
4340ARM_aesimc, // AES inverse mix columns
4341ARM_aesmc, // AES mix columns
4342ARM_sha1c, // SHA1 hash update accelerator, choose
4343ARM_sha1m, // SHA1 hash update accelerator, majority
4344ARM_sha1p, // SHA1 hash update accelerator, parity
4345ARM_sha1h, // SHA1 hash update accelerator, rotate left by 30
4346ARM_sha1su0, // SHA1 schedule update accelerator, first part
4347ARM_sha1su1, // SHA1 schedule update accelerator, second part
4348ARM_sha256h, // SHA256 hash update accelerator
4349ARM_sha256h2, // SHA256 hash update accelerator upper part
4350ARM_sha256su0, // SHA256 schedule update accelerator, first part
4351ARM_sha256su1, // SHA256 schedule update accelerator, second part
4352ARM_dcps1, // Debug Change Processor State to EL1
4353ARM_dcps2, // Debug Change Processor State to EL2
4354ARM_dcps3, // Debug Change Processor State to EL3
4355ARM_hlt, // Halting mode software breakpoint
4356ARM_sevl, // Send Event Locally
4357// ARMv8 AArch64 new instructions
4358ARM_tbz, // Test and Branch Zero
4359ARM_tbnz, // Test and Branch Non-Zero
4360ARM_br, // Branch To Register
4361ARM_blr, // Branch and Link Register
4362ARM_ldur, // Load Single Register (unscaled offset)
4363ARM_stur, // Store Single Register (unscaled offset)
4364ARM_ldp, // Load Pair
4365ARM_stp, // Store Pair
4366ARM_ldnp, // Load Non-temporal Pair
4367ARM_stnp, // Store Non-temporal Pair
4368ARM_ldtr, // Load Unprivileged Register
4369ARM_sttr, // Store Unprivileged Register
4370ARM_ldxr, // Load Exclusive Register
4371ARM_stxr, // Store Exclusive Register
4372ARM_ldxp, // Load Exclusive Pair
4373ARM_stxp, // Store Exclusive Pair
4374ARM_ldar, // Load-Acquire Register
4375ARM_stlr, // Store-Release Register
4376ARM_ldaxr, // Load-Acquire Exclusive Register
4377ARM_stlxr, // Store-Release Exclusive Register
4378ARM_ldaxp, // Load-Acquire Exclusive Pair
4379ARM_stlxp, // Store Exclusive Pair
4380ARM_prfm, // Prefetch Memory
4381ARM_prfum, // Prefetch Memory (unscaled offset)
4382ARM_movi, // Move Immediate
4383ARM_mvni, // Move Inverted Immediate
4384ARM_movz, // Move with Zero
4385ARM_movn, // Move with Not
4386ARM_movk, // Move with Keep
4387ARM_adrp, // Address of Page
4388ARM_bfm, // Bitfield Move
4389ARM_sbfm, // Signed Bitfield Move
4390ARM_ubfm, // Unsigned Bitfield Move
4391// ARM_bfi, // Bitfield Insert
4392ARM_bfxil, // Bitfield Extract and Insert Low
4393ARM_sbfiz, // Signed Bitfield Insert in Zero
4394// ARM_sbfx, // Signed Bitfield Extract
4395ARM_ubfiz, // Signed Bitfield Insert in Zero
4396// ARM_ubfx, // Unsigned Bitfield Extract
4397ARM_extr, // Extract
4398ARM_sxtw, // Signed Extend Word
4399ARM_uxtw, // Unsigned Extend Word (non-existing insn)
4400ARM_eon, // Bitwise exclusive OR NOT
4401ARM_not, // Bitwise NOT
4402ARM_cls, // Count Leading Sign Bits
4403ARM_rev32, // Reverse Bytes in Words
4404ARM_csel, // Conditional Select
4405ARM_csinc, // Conditional Select Increment
4406ARM_csinv, // Conditional Select Invert
4407ARM_csneg, // Conditional Select Negate
4408ARM_cset, // Conditional Set
4409ARM_csetm, // Conditional Set Mask
4410ARM_cinc, // Conditional Increment
4411ARM_cinv, // Conditional Invert
4412ARM_cneg, // Conditional Negate
4413ARM_ngc, // Negate with Carry
4414ARM_ccmn, // Conditional Compare Negative
4415ARM_ccmp, // Conditional Compare
4416ARM_madd, // Multiply-Add
4417ARM_msub, // Multiply-Subtract
4418ARM_mneg, // Multiply-Negate
4419ARM_smaddl, // Signed Multiply-Add Long
4420ARM_smsubl, // Signed Multiply-Subtract Long
4421ARM_smnegl, // Signed Multiply-Negate Long
4422ARM_smulh, // Signed Multiply High
4423ARM_umaddl, // Unsigned Multiply-Add Long
4424ARM_umsubl, // Unsigned Multiply-Subtract Long
4425ARM_umnegl, // Unsigned Multiply-Negate Long
4426ARM_umulh, // Unsigned Multiply High
4427ARM_drps, // Debug Restore Processor State
4428ARM_sys, // System Maintenance Operation
4429ARM_sysl, // System Maintenance Operation With Result
4430ARM_ic, // Instruction Cache Maintenance
4431ARM_dc, // Data Cache Maintenance
4432ARM_at, // Address Translation
4433ARM_tlbi, // TLB Invalidation
4434ARM_hint, // Hint instruction
4435ARM_brk, // Monitor debug-mode breakpoint
4436// AArch64 Advanced SIMD
4437ARM_uaba, // Unsigned Integer Absolute Difference and Accumulate
4438ARM_saba, // Signed Integer Absolute Difference and Accumulate
4439ARM_uabal, // Unsigned Integer Absolute Difference and Accumulate Long
4440ARM_uabal2, // Unsigned Integer Absolute Difference and Accumulate Long (Second Part)
4441ARM_sabal, // Signed Integer Absolute Difference and Accumulate Long
4442ARM_sabal2, // Signed Integer Absolute Difference and Accumulate Long (Second Part)
4443ARM_uabd, // Unsigned Integer Absolute Difference
4444ARM_sabd, // Signed Integer Absolute Difference
4445ARM_fabd, // Floating-point Absolute Difference
4446ARM_uabdl, // Unsigned Integer Absolute Difference Long
4447ARM_uabdl2, // Unsigned Integer Absolute Difference Long (Second Part)
4448ARM_sabdl, // Signed Integer Absolute Difference Long
4449ARM_sabdl2, // Signed Integer Absolute Difference Long (Second Part)
4450ARM_abs, // Integer Absolute Value
4451ARM_fabs, // Floating-point Absolute Value
4452ARM_facge, // Floating-point Absolute Compare Greater Than or Equal
4453ARM_facgt, // Floating-point Absolute Compare Greater Than
4454ARM_facle, // Floating-point Absolute Compare Less Than or Equal
4455ARM_faclt, // Floating-point Absolute Compare Less Than
4456ARM_fadd, // Floating-point Add
4457ARM_addhn, // Integer Vector Add and Narrow High Half
4458ARM_addhn2, // Integer Vector Add and Narrow High Half (second part)
4459ARM_uaddl, // Unsigned Integer Add Long
4460ARM_uaddl2, // Unsigned Integer Add Long (second part)
4461ARM_saddl, // Signed Integer Add Long
4462ARM_saddl2, // Signed Integer Add Long (second part)
4463ARM_uaddw, // Unsigned Integer Add Wide
4464ARM_uaddw2, // Unsigned Integer Add Wide (second part)
4465ARM_saddw, // Signed Integer Add Wide
4466ARM_saddw2, // Signed Integer Add Wide (second part)
4467ARM_bif, // Bitwise Vector Insert if False
4468ARM_bit, // Bitwise Vector Insert if True
4469ARM_bsl, // Bitwise Vector Select
4470ARM_cmeq, // Ingeger Vector Compare Equal
4471ARM_fcmeq, // Floating-point Vector Compare Equal
4472ARM_cmhs, // Unsigned Compare Greater Than or Equal
4473ARM_cmge, // Signed Compare Greater Than or Equal
4474ARM_fcmge, // Floating-point Compare Greater Than or Equal
4475ARM_cmhi, // Unsigned Compare Greater Than
4476ARM_cmgt, // Signed Compare Greater Than
4477ARM_fcmgt, // Floating-point Compare Greater Than
4478ARM_cmls, // Unsigned Compare Less Than or Equal
4479ARM_cmle, // Signed Compare Less Than or Equal
4480ARM_fcmle, // Floating-point Compare Less Than or Equal
4481ARM_cmlo, // Unsigned Compare Less Than
4482ARM_cmlt, // Signed Compare Less Than
4483ARM_fcmlt, // Floating-point Compare Less Than
4484ARM_fcmp, // Floating-point Compare
4485ARM_fcmpe, // Floating-point Signaling Compare
4486ARM_fccmp, // Floating-point Conditional Quiet Compare
4487ARM_fccmpe, // Floating-point Conditional Signaling Compare
4488ARM_fcsel, // Floating-point Conditional Select
4489ARM_cnt, // Count Non-zero Bits
4490ARM_fcvt, // Floating-point convert precision (scalar)
4491ARM_fcvtzs, // Convert Floating-point to Signed Integer (Round to Zero)
4492ARM_fcvtas, // Convert Floating-point to Signed Integer (Round to Nearest, Ties to Away)
4493ARM_fcvtns, // Convert Floating-point to Signed Integer (Round to Nearest, Ties to Even)
4494ARM_fcvtps, // Convert Floating-point to Signed Integer (Round towards +Infinity)
4495ARM_fcvtms, // Convert Floating-point to Signed Integer (Round towards -Infinity)
4496ARM_fcvtzu, // Convert Floating-point to Unsigned Integer (Round to Zero)
4497ARM_fcvtau, // Convert Floating-point to Unsigned Integer (Round to Nearest, Ties to Away)
4498ARM_fcvtnu, // Convert Floating-point to Unsigned Integer (Round to Nearest, Ties to Even)
4499ARM_fcvtpu, // Convert Floating-point to Unsigned Integer (Round towards +Infinity)
4500ARM_fcvtmu, // Convert Floating-point to Unsigned Integer (Round towards -Infinity)
4501ARM_ucvtf, // Convert Unsigned Integer to Floating-point
4502ARM_scvtf, // Convert Signed Integer to Floating-point
4503ARM_fcvtn, // Floating-point Convert Precision, Narrow
4504ARM_fcvtn2, // Floating-point Convert Precision, Narrow (second part)
4505ARM_fcvtl, // Floating-point Convert Precision, Long
4506ARM_fcvtl2, // Floating-point Convert Precision, Long (second part)
4507ARM_fcvtxn, // Floating-point Convert Precision, Narrow (Round to Odd)
4508ARM_fcvtxn2, // Floating-point Convert Precision, Narrow (Round to Odd) (second part)
4509ARM_frinta, // Floating-point Round to Integral (Round to Nearest, Ties to Away)
4510ARM_frinti, // Floating-point Round to Integral (using FPCR rounding mode)
4511ARM_frintm, // Floating-point Round to Integral (Round towards -Infinity)
4512ARM_frintn, // Floating-point Round to Integral (Round to Nearest, Ties to Even)
4513ARM_frintp, // Floating-point Round to Integral (Round towards +Infinity)
4514ARM_frintx, // Floating-point Round to Integral (using FPCR rounding mode, with exactness test)
4515ARM_frintz, // Floating-point Round to Integral (Round towards Zero)
4516ARM_fmadd, // Floating-point scalar fused multiply-add
4517ARM_fmsub, // Floating-point scalar fused multiply-subtract
4518ARM_fnmadd, // Floating-point scalar negated fused multiply-add
4519ARM_fnmsub, // Floating-point scalar negated fused multiply-subtract
4520ARM_fdiv, // Floating-point Divide
4521ARM_dup, // Duplicate Single Element to All Elements
4522ARM_ins, // Insert Single Element in Another Element
4523ARM_ext, // Bitwise Extract
4524ARM_uhadd, // Unsigned Integer Halving Add
4525ARM_shadd, // Signed Integer Halving Add
4526ARM_uhsub, // Unsigned Integer Halving Subtract
4527ARM_shsub, // Signed Integer Halving Subtract
4528ARM_ld1, // Vector Load Single Element
4529ARM_ld2, // Vector Load Two-Element Structures
4530ARM_ld3, // Vector Load Three-Element Structures
4531ARM_ld4, // Vector Load Four-Element Structures
4532ARM_ld1r, // Vector Load Single Element and Replicate
4533ARM_ld2r, // Vector Load Two-Element Structures and Replicate
4534ARM_ld3r, // Vector Load Three-Element Structures and Replicate
4535ARM_ld4r, // Vector Load Four-Element Structures and Replicate
4536ARM_umax, // Unsigned Integer Maximum
4537ARM_smax, // Signed Integer Maximum
4538ARM_fmax, // Floating-point Maximum
4539ARM_fmaxnm, // Floating-point maxNum()
4540ARM_umin, // Unsigned Integer Minimum
4541ARM_smin, // Signed Integer Minimum
4542ARM_fmin, // Floating-point Minimum
4543ARM_fminnm, // Floating-point minNum()
4544ARM_fmla, // Fused Multiply-Add
4545ARM_umlal2, // Unsigned Integer Multiply-Add Long (second part)
4546ARM_smlal2, // Signed Integer Multiply-Add Long (second part)
4547ARM_fmls, // Fused Multiply-Subtract
4548ARM_umlsl, // Unsigned Integer Multiply-Subtract Long
4549ARM_umlsl2, // Unsigned Integer Multiply-Subtract Long (second part)
4550ARM_smlsl, // Signed Integer Multiply-Subtract Long
4551ARM_smlsl2, // Signed Integer Multiply-Subtract Long (second part)
4552ARM_umov, // Unsigned Integer Move
4553ARM_smov, // Signed Integer Move
4554ARM_fmov, // Floating-point Move
4555ARM_uxtl, // Unsigned Integer Vector Lengthen
4556ARM_uxtl2, // Unsigned Integer Vector Lengthen (second part)
4557ARM_sxtl, // Signed Integer Vector Lengthen
4558ARM_sxtl2, // Signed Integer Vector Lengthen (second part)
4559ARM_xtn, // Integer Vector Narrow
4560ARM_xtn2, // Integer Vector Narrow (second part)
4561ARM_fmul, // Floating-point Vector Multiply
4562ARM_pmul, // Polynomial Vector Multiply
4563ARM_fmulx, // Floating-point Multiply Extended
4564ARM_fnmul, // Floating-point Multiply-Negate
4565ARM_umull2, // Unsigned Integer Vector Multiply Long (second part)
4566ARM_smull2, // Signed Integer Vector Multiply Long (second part)
4567ARM_pmull, // Polynomial Vector Multiply Long
4568ARM_pmull2, // Polynomial Vector Multiply Long (second part)
4569ARM_fneg, // Floating-point Negate
4570ARM_uadalp, // Unsigned Integer Vector Add and Accumulate Long Pair
4571ARM_sadalp, // Signed Integer Vector Add and Accumulate Long Pair
4572ARM_addp, // Integer Vector Add Pair
4573ARM_faddp, // Floating-point Vector Add Pair
4574ARM_uaddlp, // Unsigned Integer Vector Add Long Pair
4575ARM_saddlp, // Signed Integer Vector Add Long Pair
4576ARM_umaxp, // Unsigned Integer Maximum Pair
4577ARM_smaxp, // Signed Integer Maximum Pair
4578ARM_fmaxp, // Floating-point Maximum Pair
4579ARM_fmaxnmp, // Floating-point maxNum Pair
4580ARM_uminp, // Unsigned Integer Minimum Pair
4581ARM_sminp, // Signed Integer Minimum Pair
4582ARM_fminp, // Floating-point Minimum Pair
4583ARM_fminnmp, // Floating-point minNum Pair
4584ARM_sqabs, // Signed Integer Saturating Absolute
4585ARM_uqadd, // Unsigned Integer Saturating Add
4586ARM_sqadd, // Signed Integer Saturating Add
4587ARM_suqadd, // Signed Integer Saturating Accumulate of Unsigned Values
4588ARM_usqadd, // Unsigned Integer Saturating Accumulate of Signed Values
4589ARM_sqdmlal, // Signed Integer Saturating Doubling Multiply Add Long
4590ARM_sqdmlal2, // Signed Integer Saturating Doubling Multiply Add Long (second part)
4591ARM_sqdmlsl, // Signed Integer Saturating Doubling Multiply Subtract Long
4592ARM_sqdmlsl2, // Signed Integer Saturating Doubling Multiply Subtract Long (second part)
4593ARM_sqdmulh, // Signed Integer Saturating Doubling Multiply Returning High Half
4594ARM_sqdmull, // Signed Integer Saturating Doubling Multiply Long
4595ARM_sqdmull2, // Signed Integer Saturating Doubling Multiply Long (second part)
4596ARM_uqxtn, // Unsigned Integer Saturating Vector Narrow
4597ARM_uqxtn2, // Unsigned Integer Saturating Vector Narrow (second part)
4598ARM_sqxtn, // Signed Integer Saturating Vector Narrow
4599ARM_sqxtn2, // Signed Integer Saturating Vector Narrow (second part)
4600ARM_sqxtun, // Signed Integer Saturating Vector and Unsigned Narrow
4601ARM_sqxtun2, // Signed Integer Saturating Vector and Unsigned Narrow (second part)
4602ARM_sqneg, // Signed Integer Saturating Negate
4603ARM_sqrdmulh, // Signed Integer Saturating Rounding Doubling Multiply Returning High Half
4604ARM_uqrshl, // Unsigned Integer Saturating Rounding Shift Left
4605ARM_sqrshl, // Signed Integer Saturating Rounding Shift Left
4606ARM_uqrshrn, // Unsigned Integer Saturating Rounding Shift Right, Narrow
4607ARM_uqrshrn2, // Unsigned Integer Saturating Rounding Shift Right, Narrow (second part)
4608ARM_sqrshrn, // Signed Integer Saturating Rounding Shift Right, Narrow
4609ARM_sqrshrn2, // Signed Integer Saturating Rounding Shift Right, Narrow (second part)
4610ARM_sqrshrun, // Signed Integer Saturating Rounding Shift Right, Narrow, Unsigned result
4611ARM_sqrshrun2, // Signed Integer Saturating Rounding Shift Right, Narrow, Unsigned result (second part)
4612ARM_uqshl, // Unsigned Integer Saturating Shift Left
4613ARM_sqshl, // Signed Integer Saturating Shift Left
4614ARM_sqshlu, // Signed Integer Saturating Shift Left, Unsigned result
4615ARM_uqshrn, // Unsigned Integer Saturating Shift Right, Narrow
4616ARM_uqshrn2, // Unsigned Integer Saturating Shift Right, Narrow (second part)
4617ARM_sqshrn, // Signed Integer Saturating Shift Right, Narrow
4618ARM_sqshrn2, // Signed Integer Saturating Shift Right, Narrow (second part)
4619ARM_sqshrun, // Signed Integer Saturating Shift Right, Narrow, Unsigned result
4620ARM_sqshrun2, // Signed Integer Saturating Shift Right, Narrow, Unsigned result (second part)
4621ARM_uqsub, // Unsigned Integer Saturating Subtract
4622ARM_sqsub, // Signed Integer Saturating Subtract
4623ARM_raddhn, // Integer Rounding Add and Narrow, returning High Half
4624ARM_raddhn2, // Integer Rounding Add and Narrow, returning High Half (second part)
4625ARM_urecpe, // Unsigned Integer Reciprocal Estimate
4626ARM_frecpe, // Floating-point Reciprocal Estimate
4627ARM_frecps, // Floating-point Reciprocal Step
4628ARM_frecpx, // Floating-point Reciprocal Exponent
4629ARM_rev64, // Reverse doublewords
4630ARM_urhadd, // Unsigned Integer Rounding Halving Add
4631ARM_srhadd, // Signed Integer Rounding Halving Add
4632ARM_urshl, // Unsigned Integer Rounding Shift Left
4633ARM_srshl, // Signed Integer Rounding Shift Left
4634ARM_urshr, // Unsigned Integer Rounding Shift Right
4635ARM_srshr, // Signed Integer Rounding Shift Right
4636ARM_rshrn, // Integer Rounding Shift Right and Narrow
4637ARM_rshrn2, // Integer Rounding Shift Right and Narrow (second part)
4638ARM_ursqrte, // Unsigned Integer Reciprocal Square Root Estimate
4639ARM_frsqrte, // Floating-point Reciprocal Square Root Estimate
4640ARM_frsqrts, // Floating-point Reciprocal Square Root Step
4641ARM_ursra, // Unsigned Integer Rounding Shift Right and Accumulate
4642ARM_srsra, // Signed Integer Rounding Shift Right and Accumulate
4643ARM_rsubhn, // Integer Subtract and Narrow, returning High Half
4644ARM_rsubhn2, // Integer Subtract and Narrow, returning High Half (second part)
4645ARM_ushl, // Unsigned Integer Shift Left
4646ARM_sshl, // Signed Integer Shift Left
4647ARM_ushll, // Unsigned Integer Shift Left Long
4648ARM_ushll2, // Unsigned Integer Shift Left Long (second part)
4649ARM_sshll, // Signed Integer Shift Left Long
4650ARM_sshll2, // Signed Integer Shift Left Long (second part)
4651ARM_ushr, // Unsigned Integer Shift Right
4652ARM_sshr, // Signed Integer Shift Right
4653ARM_shrn, // Integer Shift Right Narrow
4654ARM_shrn2, // Integer Shift Right Narrow (second part)
4655ARM_shl, // Shift Left
4656ARM_shll, // Shift Left Long
4657ARM_shll2, // Shift Left Long (second part)
4658ARM_sli, // Integer Vector Shift Left and Insert
4659ARM_fsqrt, // Floating-point Square Root
4660ARM_usra, // Unsigned Integer Shift Right and Accumulate
4661ARM_ssra, // Signed Integer Shift Right and Accumulate
4662ARM_sri, // Integer Shift Right and Insert
4663ARM_st1, // Vector Store Single Element
4664ARM_st2, // Vector Store Two-Element Structures
4665ARM_st3, // Vector Store Three-Element Structures
4666ARM_st4, // Vector Store Four-Element Structures
4667ARM_fsub, // Floating-point Subtract
4668ARM_subhn, // Integer Subtract and Narrow, returning High Half
4669ARM_subhn2, // Integer Subtract and Narrow, returning High Half (second part)
4670ARM_usubl, // Unsigned Integer Subtract Long
4671ARM_usubl2, // Unsigned Integer Subtract Long (second part)
4672ARM_ssubl, // Signed Integer Subtract Long
4673ARM_ssubl2, // Signed Integer Subtract Long (second part)
4674ARM_usubw, // Unsigned Integer Subtract Wide
4675ARM_usubw2, // Unsigned Integer Subtract Wide (second part)
4676ARM_ssubw, // Signed Integer Subtract Wide
4677ARM_ssubw2, // Signed Integer Subtract Wide (second part)
4678ARM_tbl, // Vector Table Lookup
4679ARM_tbx, // Vector Table Extension
4680ARM_trn1, // Vector Element Transpose (primary)
4681ARM_trn2, // Vector Element Transpose (secondary)
4682ARM_cmtst, // Integer Compare Mask Bitwise Test
4683ARM_uzp1, // Vector Element Unzip (primary)
4684ARM_uzp2, // Vector Element Unzip (secondary)
4685ARM_zip1, // Vector Element Zip (primary)
4686ARM_zip2, // Vector Element Zip (secondary)
4687ARM_addv, // Integer Sum Elements in Vector
4688ARM_uaddlv, // Unsigned Integer Sum Elements in Vector Long
4689ARM_saddlv, // Signed Integer Sum Elements in Vector Long
4690ARM_umaxv, // Unsigned Integer Max Element in Vector
4691ARM_smaxv, // Signed Integer Max Element in Vector
4692ARM_fmaxv, // Floating-point Max Element in Vector
4693ARM_fmaxnmv, // Floating-point maxNum Element in Vector
4694ARM_uminv, // Unsigned Integer Min Element in Vector
4695ARM_sminv, // Signed Integer Min Element in Vector
4696ARM_fminv, // Floating-point Min Element in Vector
4697ARM_fminnmv, // Floating-point minNum Element in Vector
4698// atomic operations (ARMv8.1/ARMv8.3)
4699// ARM_swp, // Swap value with memory, No memory ordering
4700ARM_swpl, // Swap value with memory, Release
4701ARM_swpa, // Swap value with memory, Acquire
4702ARM_swpal, // Swap value with memory, Acquire and release
4703ARM_ldapr, // Load-Acquire RCpc Register
4704ARM_ldadd, // Atomic add on value in memory (return initial value), No memory ordering
4705ARM_ldaddl, // Atomic add on value in memory (return initial value), Release
4706ARM_ldadda, // Atomic add on value in memory (return initial value), Acquire
4707ARM_ldaddal, // Atomic add on value in memory (return initial value), Acquire and release
4708ARM_stadd, // Atomic add on value in memory (no return), No memory ordering
4709ARM_staddl, // Atomic add on value in memory (no return), Release
4710ARM_ldclr, // Atomic bit clear on value in memory (return initial value), No memory ordering
4711ARM_ldclrl, // Atomic bit clear on value in memory (return initial value), Release
4712ARM_ldclra, // Atomic bit clear on value in memory (return initial value), Acquire
4713ARM_ldclral, // Atomic bit clear on value in memory (return initial value), Acquire and release
4714ARM_stclr, // Atomic bit clear on value in memory (no return), No memory ordering
4715ARM_stclrl, // Atomic bit clear on value in memory (no return), Release
4716ARM_ldeor, // Atomic exclusive OR on value in memory (return initial value), No memory ordering
4717ARM_ldeorl, // Atomic exclusive OR on value in memory (return initial value), Release
4718ARM_ldeora, // Atomic exclusive OR on value in memory (return initial value), Acquire
4719ARM_ldeoral, // Atomic exclusive OR on value in memory (return initial value), Acquire and release
4720ARM_steor, // Atomic exclusive OR on value in memory (no return), No memory ordering
4721ARM_steorl, // Atomic exclusive OR on value in memory (no return), Release
4722ARM_ldset, // Atomic bit set on value in memory (return initial value), No memory ordering
4723ARM_ldsetl, // Atomic bit set on value in memory (return initial value), Release
4724ARM_ldseta, // Atomic bit set on value in memory (return initial value), Acquire
4725ARM_ldsetal, // Atomic bit set on value in memory (return initial value), Acquire and release
4726ARM_stset, // Atomic bit set on value in memory (no return), No memory ordering
4727ARM_stsetl, // Atomic bit set on value in memory (no return), Release
4728ARM_ldsmax, // Atomic signed maximum on value in memory (return initial value), No memory ordering
4729ARM_ldsmaxl, // Atomic signed maximum on value in memory (return initial value), Release
4730ARM_ldsmaxa, // Atomic signed maximum on value in memory (return initial value), Acquire
4731ARM_ldsmaxal, // Atomic signed maximum on value in memory (return initial value), Acquire and release
4732ARM_stsmax, // Atomic signed maximum on value in memory (no return), No memory ordering
4733ARM_stsmaxl, // Atomic signed maximum on value in memory (no return), Release
4734ARM_ldsmin, // Atomic signed minimum on value in memory (return initial value), No memory ordering
4735ARM_ldsminl, // Atomic signed minimum on value in memory (return initial value), Release
4736ARM_ldsmina, // Atomic signed minimum on value in memory (return initial value), Acquire
4737ARM_ldsminal, // Atomic signed minimum on value in memory (return initial value), Acquire and release
4738ARM_stsmin, // Atomic signed minimum on value in memory (no return), No memory ordering
4739ARM_stsminl, // Atomic signed minimum on value in memory (no return), Release
4740ARM_ldumax, // Atomic unsigned maximum on value in memory (return initial value), No memory ordering
4741ARM_ldumaxl, // Atomic unsigned maximum on value in memory (return initial value), Release
4742ARM_ldumaxa, // Atomic unsigned maximum on value in memory (return initial value), Acquire
4743ARM_ldumaxal, // Atomic unsigned maximum on value in memory (return initial value), Acquire and release
4744ARM_stumax, // Atomic unsigned maximum on value in memory (no return), No memory ordering
4745ARM_stumaxl, // Atomic unsigned maximum on value in memory (no return), Release
4746ARM_ldumin, // Atomic unsigned minimum on value in memory (return initial value), No memory ordering
4747ARM_lduminl, // Atomic unsigned minimum on value in memory (return initial value), Release
4748ARM_ldumina, // Atomic unsigned minimum on value in memory (return initial value), Acquire
4749ARM_lduminal, // Atomic unsigned minimum on value in memory (return initial value), Acquire and release
4750ARM_stumin, // Atomic unsigned minimum on value in memory (no return), No memory ordering
4751ARM_stuminl, // Atomic unsigned minimum on value in memory (no return), Release
4752// Compare and Swap (ARMv8.1)
4753ARM_cas, // Compare and Swap , No memory ordering
4754ARM_casl, // Compare and Swap, Release
4755ARM_casa, // Compare and Swap, Acquire
4756ARM_casal, // Compare and Swap, Acquire and release
4757ARM_casp, // Compare and Swap Pair, No memory ordering
4758ARM_caspl, // Compare and Swap Pair, Release
4759ARM_caspa, // Compare and Swap Pair, Acquire
4760ARM_caspal, // Compare and Swap Pair, Acquire and release
4761ARM_ldlar, // Load LOAcquire Register
4762ARM_stllr, // Store LORelease Register
4763ARM_sqrdmlah, // Signed Saturating Rounding Doubling Multiply Accumulate
4764ARM_sqrdmlsh, // Signed Saturating Rounding Doubling Multiply Subtract
4765// Pointer authentication (ARMv8.3)
4766// only completely new instructions are included;
4767// authenticated variations of old ones are represented by instruction flags (see arm.hpp)
4768ARM_pac, // Pointer Authentication Code for Data/Instruction address/generic
4769ARM_aut, // Authenticate Data/Instruction address
4770ARM_xpac, // Strip Pointer Authentication Code
4771// ARM insns for the legacy assembler (2 operands)
4772ARM_ldrd2, // Load pair of registers
4773ARM_strd2, // Store pair of registers
4774// CRC32 (optional in 8.0, mandatory since 8.1)
4775ARM_crc32, // CRC32 using polynomial 0x04C11DB7
4776ARM_crc32c, // CRC32 using polynomial 0x1EDC6F41
4777// Armv8-M Security Extension (TrustZone for Armv8-M)
4778ARM_tt, // Test Target (query the Security state and access permissions of a memory location)
4779ARM_tta, // Test Target Alternate Domain (query the Security state and access permissions of a memory location for a Non-secure access)
4780ARM_sg, // Secure Gateway
4781ARM_vlldm, // Floating-point Lazy Load Multiple
4782ARM_vlstm, // Floating-point Lazy Store Multiple
4783// MP Extension instructions
4784ARM_pldw, // Preload Data for write
4785// ARMv8.1-RDMA (AArh32)
4786ARM_vqrdmlah, // Vector Saturating Rounding Doubling Multiply Accumulate Returning High Half.
4787 // Vector Saturating Rounding Doubling Multiply Accumulate
4788ARM_vqrdmlsh, // Vector Saturating Rounding Doubling Multiply Subtract Returning High Half
4789// ARMv8.2-FP16 (AArch32)
4790ARM_vmovx, // Vector Move extraction
4791ARM_vins, // Vector move Insertion.
4792// ARMv8.3-JSConv (AArch32)
4793ARM_vjcvt, // Javascript Convert to signed fixed-point, rounding toward Zero
4794// ARMv8.3-JSConv (A64)
4795ARM_fjcvtzs, // Javascript Convert to signed fixed-point, rounding toward Zero
4796/*
4797// ARMv8.3-CompNum, SIMD complex number support
4798ARM_fcadd, // Floating-point complex add
4799ARM_fcmla, // Floating-point complex multiply accumulate
4800*/
4801// ARMv8.4-RCPC
4802ARM_ldapur, // Load-Acquire RCpc Register (unscaled offset)
4803ARM_stlur, // Store-Release Register (unscaled offset)
4804// ARMv8.4
4805ARM_cfinv, // Invert Carry Flag
4806ARM_rmif, // Rotate value and mask into flags
4807ARM_setf8, // set flags from value (8-bit)
4808ARM_setf16, // set flags from value (16-bit)
4809ARM_xaflag, // Convert floating-point condition flags to ARM format
4810ARM_axflag, // Convert floating-point condition flags from ARM to external format.
4811// ARMv8.5
4812ARM_addg, // Add with Tag
4813ARM_subg, // Subtract with Tag
4814ARM_subp, // Subtract Pointer
4815ARM_cmpp, // Compare with Tag
4816ARM_irg, // Insert Random Tag
4817ARM_gmi, // Tag Mask Insert
4818ARM_stg, // Store Allocation Tag
4819ARM_stzg, // Store Allocation Tag, Zeroing
4820ARM_stzgm, // Store Tag and Zero Multiple
4821ARM_st2g, // Store Allocation Tags
4822ARM_stz2g, // Store Allocation Tags, Zeroing
4823ARM_stgm, // Store Tag Multiple
4824ARM_stgp, // Store Allocation Tag and Pair of registers
4825ARM_ldg, // Load Allocation Tag
4826ARM_ldgm, // Load Tag Multiple
4827ARM_bti, // Branch Target Identification
4828ARM_sb, // Speculation Barrier
4829ARM_ssbb, // Speculative Store Bypass Barrier
4830ARM_pssbb, // Physical Speculative Store Bypass Barrier
4831//
4832ARM_frint32x, // Floating-point Round to 32-bit Integer, using current rounding mode
4833ARM_frint32z, // Floating-point Round to 32-bit Integer toward Zero
4834ARM_frint64x, // Floating-point Round to 32-bit Integer, using current rounding mode
4835ARM_frint64z, // Floating-point Round to 32-bit Integer toward Zero
4836// ARMv8.2-SHA3 (AArch64)
4837ARM_bcax, // Bit Clear and exclusive-OR
4838ARM_eor3, // Three-way Exclusive-OR
4839ARM_rax1, // Rotate and Exclusive-OR
4840ARM_xar, // Exclusive-OR and Rotate
4841// ARMv8.2-SHA512 (AArch64)
4842ARM_sha512h, // SHA512 Hash update part 1
4843ARM_sha512h2, // SHA512 Hash update part 2
4844ARM_sha512su0, // SHA512 Schedule Update 0
4845ARM_sha512su1, // SHA512 Schedule Update 1
4846// ARMv8.2-SM3 (AArch64)
4854// ARMv8.2-SM4 (AArch64)
4857// ARMv8.6-I8MM (AArch64)
4862// ARMv8.6-DotProd (AArch64)
4865// ARMv8.2-FHM (AArch64)
4870// ARMv8.6-BF16 (AArch64)
4878// Apple custom instructions
4879ARM_trap, // Undefined opcode used for debugging
4880ARM_trap2, // Undefined opcode used for debugging
4881ARM_genter, // Enter guarded execution mode
4882ARM_gexit, // Exit guarded execution mode
4883ARM_wkdmc, // Compress memory page
4884ARM_wkdmd, // Decompress memory page
4885ARM_sdsb, // Strong data synchronization barrier
4886ARM_amx, // AMX instruction
4887ARM_mul53lo, // Multiply 2 53-bit pairs and store low 53 bits
4888ARM_mul53hi, // Multiply 2 53-bit pairs and store high 53 bits
4889// ARMv8.1-M MVE
4890ARM_vbrsr, // Vector Bit Reverse and Shift Right
4891ARM_vcmul, // Vector Complex Multiply
4892ARM_vfmas, // Vector Fused Multiply Accumulate Scalar
4893ARM_vmaxa, // Vector Maximum Absolute
4894ARM_vmaxnma, // Vector Maximum Absolute (floating-point)
4895ARM_vmina, // Vector Minimum Absolute
4896ARM_vminnma, // Vector Minimum Absolute (floating-point)
4897ARM_vmlas, // Vector Multiply Accumulate Scalar
4898ARM_vmovnb, // Vector Move and Narrow Bottom
4899ARM_vmovnt, // Vector Move and Narrow Top
4900ARM_vmulh, // Vector Multiply Returning High Half
4901ARM_vrmulh, // Vector Rounding Multiply Returning High Half
4902ARM_vmullb, // Vector Multiply Long Bottom
4903ARM_vmullt, // Vector Multiply Long Top
4904ARM_vqdmladh, // Vector Saturating Doubling Multiply Add Dual Returning High Half
4905ARM_vqdmladhX, // Vector Saturating Doubling Multiply Add Dual Returning High Half (exchange)
4906ARM_vqrdmladh, // Vector Saturating Rounding Doubling Multiply Add Dual Returning High Half
4907ARM_vqrdmladhX, // Vector Saturating Rounding Doubling Multiply Add Dual Returning High Half (exchange)
4908ARM_vqdmlah, // Vector Saturating Doubling Multiply Accumulate
4909ARM_vqdmlash, // Vector Saturating Doubling Multiply Accumulate Scalar High Half
4910ARM_vqrdmlash, // Vector Saturating Rounding Doubling Multiply Accumulate Scalar High Half
4911ARM_vqdmlsdh, // Vector Saturating Doubling Multiply Subtract Dual Returning High Half
4912ARM_vqdmlsdhX, // Vector Saturating Doubling Multiply Subtract Dual Returning High Half (exchange)
4913ARM_vqrdmlsdh, // Vector Saturating Rounding Doubling Multiply Subtract Dual Returning High Half
4914ARM_vqrdmlsdhX, // Vector Saturating Rounding Doubling Multiply Subtract Dual Returning High Half (exchange)
4915ARM_vqmovnb, // Vector Saturating Move and Narrow Bottom
4916ARM_vqmovnt, // Vector Saturating Move and Narrow Top
4917ARM_vqmovunb, // Vector Saturating Move Unsigned and Narrow Bottom
4918ARM_vqmovunt, // Vector Saturating Move Unsigned and Narrow Top
4919ARM_vshllb, // Vector Shift Left Long Bottom
4920ARM_vshllt, // Vector Shift Left Long Top
4921ARM_vmladav, // Vector Multiply Add Dual Accumulate Across Vector
4922ARM_vmladavX, // Vector Multiply Add Dual Accumulate Across Vector (exchange)
4923ARM_vmladavA, // Vector Multiply Add Dual Accumulate Across Vector (accumulate)
4924ARM_vmladavAX, // Vector Multiply Add Dual Accumulate Across Vector (accumulate, exchange)
4925ARM_vmlsdav, // Vector Multiply Subtract Dual Accumulate Across Vector
4926ARM_vmlsdavX, // Vector Multiply Subtract Dual Accumulate Across Vector (exchange)
4927ARM_vmlsdavA, // Vector Multiply Subtract Dual Accumulate Across Vector (accumulate)
4928ARM_vmlsdavAX, // Vector Multiply Subtract Dual Accumulate Across Vector (accumulate, exchange)
4929ARM_vmlaldav, // Vector Multiply Add Long Dual Accumulate Across Vector
4930ARM_vmlaldavX, // Vector Multiply Add Long Dual Accumulate Across Vector (exchange)
4931ARM_vmlaldavA, // Vector Multiply Add Long Dual Accumulate Across Vector (accumulate)
4932ARM_vmlaldavAX, // Vector Multiply Add Long Dual Accumulate Across Vector (accumulate, exchange)
4933ARM_vmlsldav, // Vector Multiply Subtract Long Dual Accumulate Across Vector
4934ARM_vmlsldavX, // Vector Multiply Subtract Long Dual Accumulate Across Vector (exchange)
4935ARM_vmlsldavA, // Vector Multiply Subtract Long Dual Accumulate Across Vector (accumulate)
4936ARM_vmlsldavAX, // Vector Multiply Subtract Long Dual Accumulate Across Vector (accumulate, exchange)
4937ARM_vrmlsldavh, // Vector Rounding Multiply Subtract Long Dual Accumulate Across Vector Returning High 64 bits
4938ARM_vrmlsldavhX, // Vector Rounding Multiply Subtract Long Dual Accumulate Across Vector Returning High 64 bits (exchange)
4939ARM_vrmlsldavhA, // Vector Rounding Multiply Subtract Long Dual Accumulate Across Vector Returning High 64 bits (accumulate)
4940ARM_vrmlsldavhAX, // Vector Rounding Multiply Subtract Long Dual Accumulate Across Vector Returning High 64 bits (accumulate, exchange)
4941ARM_vidup, // Vector Increment and Duplicate
4942ARM_vddup, // Vector Decrement and Duplicate
4943ARM_viwdup, // Vector Increment with Wrap and Duplicate
4944ARM_vdwdup, // Vector Decrement with Wrap and Duplicate
4945ARM_vhcadd, // Vector Halving Complex Add with Rotate
4946ARM_vcadd, // Vector Complex Add with Rotate
4947ARM_vadc, // Whole Vector Add With Carry
4948ARM_vadcI, // Whole Vector Add With Carry (initial carry is 1)
4949ARM_sbdc, // Whole Vector Subtract With Carry
4950ARM_vsbcI, // Whole Vector Subtract With Carry (initial carry is 1)
4951ARM_vqdmullb, // Vector Multiply Long Bottom
4952ARM_vqdmullt, // Vector Multiply Long Top
4953ARM_vpsel, // Vector Predicated Select
4954ARM_vcmpv, // Vector Compare (vector)
4955ARM_vpt, // Vector Predicate Then
4956ARM_vpnot, // Vector Predicate NOT
4957ARM_vpst, // Vector Predicate Set Then
4958ARM_vmaxv, // Vector Maximum Across Vector
4959ARM_vmaxav, // Vector Maximum Absolute Across Vector
4960ARM_vminv, // Vector Minimum Across Vector
4961ARM_vminav, // Vector Minimum Absolute Across Vector
4962ARM_vmaxnmv, // Vector Maximum Across Vector (floating-point)
4963ARM_vmaxnmav, // Vector Maximum Absolute Across Vector (floating-point)
4964ARM_vminnmv, // Vector Minimum Across Vector (floating-point)
4965ARM_vminnmav, // Vector Minimum Absolute Across Vector (floating-point)
4966ARM_vqshrnb, // Vector Saturating Shift Right and Narrow Bottom
4967ARM_vqshrnt, // Vector Saturating Shift Right and Narrow Top
4968ARM_vqrshrnb, // Vector Saturating Rounding Shift Right and Narrow Bottom
4969ARM_vqrshrnt, // Vector Saturating Rounding Shift Right and Narrow Top
4970ARM_vqshrunb, // Vector Saturating Shift Right Unsigned and Narrow Bottom
4971ARM_vqshrunt, // Vector Saturating Shift Right Unsigned and Narrow Top
4972ARM_vqrshrunb, // Vector Saturating Rounding Shift Right Unsigned and Narrow Bottom
4973ARM_vqrshrunt, // Vector Saturating Rounding Shift Right Unsigned and Narrow Top
4974ARM_vshrnb, // Vector Shift Right and Narrow Bottom
4975ARM_vshrnt, // Vector Shift Right and Narrow Top
4976ARM_vrshrnb, // Vector Rounding Shift Right and Narrow Bottom
4977ARM_vrshrnt, // Vector Rounding Shift Right and Narrow Top
4978ARM_vrmlaldavh, // Vector Rounding Multiply Add Long Dual Accumulate Across Vector Returning High 64 bits
4979ARM_vrmlaldavhX, // Vector Rounding Multiply Add Long Dual Accumulate Across Vector Returning High 64 bits (exchange)
4980ARM_vrmlaldavhA, // Vector Rounding Multiply Add Long Dual Accumulate Across Vector Returning High 64 bits (accumulate)
4981ARM_vrmlaldavhAX, // Vector Rounding Multiply Add Long Dual Accumulate Across Vector Returning High 64 bits (accumulate, exchange)
4982ARM_vabav, // Vector Absolute Difference and Accumulate Across Vector
4983ARM_vaddlv, // Vector Add Long Across Vector
4984ARM_vaddlvA, // Vector Add Long Across Vector (accumulate)
4985ARM_vaddv, // Vector Add Across Vector
4986ARM_vaddvA, // Vector Add Across Vector (accumulate)
4987ARM_vshlc, // Whole Vector Left Shift with Carry
4988ARM_vmovlb, // Vector Move Long Bottom
4989ARM_vmovlt, // Vector Move Long Top
4990ARM_vcmla, // Vector Complex Multiply Accumulate
4991ARM_vscclrm, // Floating-point Secure Context Clear Multiple
4992ARM_vld20, // Vector Deinterleaving Load - Stride 2 (pattern=0)
4993ARM_vld21, // Vector Deinterleaving Load - Stride 2 (pattern=1)
4994ARM_vld40, // Vector Deinterleaving Load - Stride 4 (pattern=0)
4995ARM_vld41, // Vector Deinterleaving Load - Stride 4 (pattern=1)
4996ARM_vld42, // Vector Deinterleaving Load - Stride 4 (pattern=2)
4997ARM_vld43, // Vector Deinterleaving Load - Stride 4 (pattern=3)
4998ARM_vst20, // Vector Interleaving Store - Stride 2 (pattern=0)
4999ARM_vst21, // Vector Interleaving Store - Stride 2 (pattern=1)
5000ARM_vst40, // Vector Interleaving Store - Stride 4 (pattern=0)
5001ARM_vst41, // Vector Interleaving Store - Stride 4 (pattern=1)
5002ARM_vst42, // Vector Interleaving Store - Stride 4 (pattern=2)
5003ARM_vst43, // Vector Interleaving Store - Stride 4 (pattern=3)
5004ARM_vldrb, // Vector Load Register/Vector Gather Load (byte)
5005ARM_vldrh, // Vector Load Register/Vector Gather Load (halfword)
5006ARM_vldrw, // Vector Load Register/Vector Gather Load (word)
5007ARM_vldrd, // Vector Load Register/Vector Gather Load (doubleword)
5008ARM_vstrb, // Vector Store Register/Vector Scatter Store (byte)
5009ARM_vstrh, // Vector Store Register/Vector Scatter Store (halfword)
5010ARM_vstrw, // Vector Store Register/Vector Scatter Store (word)
5011ARM_vstrd, // Vector Store Register/Vector Scatter Store (doubleword)
5012ARM_vmov2, // Vector Move (two general-purpose registers to two 32-bit vector lanes)
5013ARM_lsll, // Logical Shift Left Long
5014ARM_lsrl, // Logical Shift Right Long
5015ARM_asrl, // Arithmetic Shift Right Long
5016ARM_sqshll, // Signed Saturating Shift Left Long
5017ARM_uqshll, // Unsigned Saturating Shift Left Long
5018ARM_urshrl, // Unsigned Rounding Shift Right Long
5019ARM_srshrl, // Signed Rounding Shift Right Long
5020ARM_uqrshll, // Unsigned Saturating Rounding Shift Left Long
5021ARM_sqrshrl, // Signed Saturating Rounding Shift Right Long
5022ARM_sqrshr, // Signed Saturating Rounding Shift Right
5023ARM_lctp, // Loop Clear with Tail Predication
5024ARM_vctp, // Create Vector Tail Predicate
5025// ARMv8.1-M PACBTI
5026ARM_pacbti, // Pointer Authentication Code for the link register with BTI clearing, using key
5027ARM_autg, // Authenticate general value, using key
5028ARM_bxaut, // Branch Exchange after Authenticating the address, using key
5029ARM_pacg, // Pointer Authentication Code for a general value, using key
5030// ARMv8.1-M RAS
5031ARM_esb, // Error Synchronization Barrier
5032// ARMv8.1-M Low Overhead Branch Extension
5033ARM_wls, // While Loop Start
5034ARM_dls, // Do Loop Start
5035ARM_wlstp, // While Loop Start with Tail Predication
5036ARM_dlstp, // Do Loop Start with Tail Predication
5037ARM_le1, // Loop End (count)
5038ARM_le2, // Loop End (forever)
5039ARM_letp, // Loop End with Tail Prediction
5040ARM_bf, // Branch Future
5041ARM_bfx, // Branch Future and Exchange
5042ARM_bfl, // Branch Future with Link
5043ARM_bflx, // Branch Future with Link and Exchange
5044ARM_bfcsel, // Branch Future Conditional Select
5045// ARMv8-M Custom Datapath Extension
5046ARM_cx1, // Custom Instruction Class 1
5047ARM_cx1A, // Custom Instruction Class 1 (accumulator)
5048ARM_cx1d, // Custom Instruction Class 1 (pair)
5049ARM_cx1dA, // Custom Instruction Class 1 (pair, accumulator)
5050ARM_cx2, // Custom Instruction Class 2
5051ARM_cx2A, // Custom Instruction Class 2 (accumulator)
5052ARM_cx2d, // Custom Instruction Class 2 (pair)
5053ARM_cx2dA, // Custom Instruction Class 2 (pair, accumulator)
5054ARM_cx3, // Custom Instruction Class 3
5055ARM_cx3A, // Custom Instruction Class 3 (accumulator)
5056ARM_cx3d, // Custom Instruction Class 3 (pair)
5057ARM_cx3dA, // Custom Instruction Class 3 (pair, accumulator)
5058ARM_vcx1, // Custom Extension Instruction Class 1
5059ARM_vcx1A, // Custom Extension Instruction Class 1 (accumulator)
5060ARM_vcx2, // Custom Extension Instruction Class 2
5061ARM_vcx2A, // Custom Extension Instruction Class 2 (accumulator)
5062ARM_vcx3, // Custom Extension Instruction Class 3
5063ARM_vcx3A, // Custom Extension Instruction Class 3 (accumulator)
5064// FEAT_WFxT
5065ARM_wfet, // Wait For Event with Timeout
5066ARM_wfit, // Wait For Interrupt with Timeout
5067// FEAT_CSSC
5068ARM_ctz, // Count trailing zeros
5069ARM_rdvl, // Read multiple of vector register size to scalar register
5070ARM_rdsvl, // Read multiple of Streaming SVE vector register size to scalar register
5071// SVE integer binary arithmetic (predicated)
5072ARM_subr, // Reversed subtract vectors
5073ARM_addpt, // Add checked pointer vectors (predicated)
5074ARM_subpt, // Subtract checked pointer vectors (predicated)
5075ARM_sdivr, // SVE Signed Divide Reversed
5076ARM_udivr, // SVE Unsigned Divide Reversed
5077ARM_add_sve, // Add (SVE)
5078ARM_sub_sve, // Subtract (SVE)
5079ARM_mul_sve, // Multiply (SVE)
5080ARM_smulh_sve, // Signed Multiply High (SVE)
5081ARM_umulh_sve, // Unsigned Multiply High (SVE)
5082ARM_sdiv_sve, // Signed Divide (SVE)
5083ARM_udiv_sve, // Unsigned Divide (SVE)
5084ARM_and_sve, // Bitwise AND (SVE)
5085ARM_orr_sve, // Bitwise OR (SVE)
5086ARM_eor_sve, // Bitwise XOR (SVE)
5087ARM_bic_sve, // Bitwise AND NOT (SVE)
5088ARM_smax_sve, // Signed Maximum (SVE)
5089ARM_umax_sve, // Unsigned Maximum (SVE)
5090ARM_smin_sve, // Signed Minimum (SVE)
5091ARM_umin_sve, // Unsigned Minimum (SVE)
5092ARM_sabd_sve, // Signed Absolute Difference (SVE)
5093ARM_uabd_sve, // Unsigned Absolute Difference (SVE)
5094ARM_subr_pred, // Reversed subtract vectors (predicated)
5095// SVE bitwise shift (predicated)
5096ARM_asrd, // Arithmetic Shift Right for Divide
5097ARM_asrr, // Reversed Arithmetic Shift Right
5098ARM_lsrr, // Reversed Logical Shift Right
5099ARM_lslr, // Reversed Logical Shift Left
5100ARM_asr_sve, // Arithmetic Shift Right (SVE)
5101ARM_lsr_sve, // Logical Shift Right (SVE)
5102ARM_lsl_sve, // Logical Shift Left (SVE)
5103ARM_sqshl_sve, // Signed Saturating Shift Left (SVE)
5104ARM_uqshl_sve, // Unsigned Saturating Shift Left (SVE)
5105ARM_sqshlu_sve, // Signed Saturating Shift Left Unsigned (SVE)
5106ARM_srshr_sve, // Signed Rounding Shift Right (SVE)
5107ARM_urshr_sve, // Unsigned Rounding Shift Right (SVE)
5108// SVE integer multiply-add (predicated)
5109ARM_mla_sve, // Multiply-Add (SVE)
5110ARM_mls_sve, // Multiply-Subtract (SVE)
5111ARM_mad, // Multiply-Add writing multiplicand
5112ARM_msb, // Multiply-Subtract writing multiplicand
5113// SVE integer unary arithmetic (predicated)
5114ARM_cnot, // Logically invert boolean condition
5115ARM_sxtb_sve, // Signed extend byte (SVE)
5116ARM_uxtb_sve, // Unsigned extend byte (SVE)
5117ARM_sxth_sve, // Signed extend halfword (SVE)
5118ARM_uxth_sve, // Unsigned extend halfword (SVE)
5119ARM_sxtw_sve, // Signed extend word (SVE)
5120ARM_uxtw_sve, // Unsigned extend word (SVE)
5121ARM_neg_sve, // Negate (SVE)
5122ARM_cls_sve, // Count leading sign bits (SVE)
5123ARM_clz_sve, // Count leading zeros (SVE)
5124ARM_not_sve, // Bitwise NOT (SVE)
5125// SVE stack allocation
5126ARM_addvl, // Add multiple of vector register size to scalar register
5127ARM_addpl, // Add multiple of predicate register size to scalar register
5128// SVE index generation
5129ARM_index, // Create index starting from and incremented by scalar/immediate
5130// SVE bitwise logical (unpredicated)
5131ARM_bsl1n, // Bitwise Select with NOT (first source)
5132ARM_bsl2n, // Bitwise Select with NOT (second source)
5133ARM_nbsl, // Bitwise Not-select
5134// SVE integer misc (unpredicated)
5135ARM_ftssel, // Floating-point trigonometric select coefficient
5136ARM_fexpa, // Floating-point exponential accelerator
5137// SVE element count
5138ARM_cntb, // Count elements (byte)
5139ARM_cnth, // Count elements (halfword)
5140ARM_cntw, // Count elements (word)
5141ARM_cntd, // Count elements (doubleword)
5142ARM_incb, // Increment scalar by element count (byte)
5143ARM_inch, // Increment by element count (halfword) [vector+scalar]
5144ARM_incw, // Increment by element count (word)
5145ARM_incd, // Increment by element count (doubleword)
5146ARM_decb, // Decrement scalar by element count (byte)
5147ARM_dech, // Decrement by element count (halfword) [vector+scalar]
5148ARM_decw, // Decrement by element count (word)
5149ARM_decd, // Decrement by element count (doubleword)
5150ARM_sqincb, // Saturating signed increment (byte)
5151ARM_sqinch, // Saturating signed increment (halfword)
5152ARM_sqincw, // Saturating signed increment (word)
5153ARM_sqincd, // Saturating signed increment (doubleword)
5154ARM_uqincb, // Saturating unsigned increment (byte)
5155ARM_uqinch, // Saturating unsigned increment (halfword)
5156ARM_uqincw, // Saturating unsigned increment (word)
5157ARM_uqincd, // Saturating unsigned increment (doubleword)
5158ARM_sqdecb, // Saturating signed decrement (byte)
5159ARM_sqdech, // Saturating signed decrement (halfword)
5160ARM_sqdecw, // Saturating signed decrement (word)
5161ARM_sqdecd, // Saturating signed decrement (doubleword)
5162ARM_uqdecb, // Saturating unsigned decrement (byte)
5163ARM_uqdech, // Saturating unsigned decrement (halfword)
5164ARM_uqdecw, // Saturating unsigned decrement (word)
5165ARM_uqdecd, // Saturating unsigned decrement (doubleword)
5166// SVE element count - 32-bit register (W) forms
5167ARM_sqincb32, // Saturating signed increment byte, W-reg form
5168ARM_sqinch32, // Saturating signed increment halfword, W-reg form
5169ARM_sqincw32, // Saturating signed increment word, W-reg form
5170ARM_sqincd32, // Saturating signed increment doubleword, W-reg form
5171ARM_uqincb32, // Saturating unsigned increment byte, W-reg form
5172ARM_uqinch32, // Saturating unsigned increment halfword, W-reg form
5173ARM_uqincw32, // Saturating unsigned increment word, W-reg form
5174ARM_uqincd32, // Saturating unsigned increment doubleword, W-reg form
5175ARM_sqdecb32, // Saturating signed decrement byte, W-reg form
5176ARM_sqdech32, // Saturating signed decrement halfword, W-reg form
5177ARM_sqdecw32, // Saturating signed decrement word, W-reg form
5178ARM_sqdecd32, // Saturating signed decrement doubleword, W-reg form
5179ARM_uqdecb32, // Saturating unsigned decrement byte, W-reg form
5180ARM_uqdech32, // Saturating unsigned decrement halfword, W-reg form
5181ARM_uqdecw32, // Saturating unsigned decrement word, W-reg form
5182ARM_uqdecd32, // Saturating unsigned decrement doubleword, W-reg form
5183// SVE Permute Vector - Extract
5184ARM_ext_sve_destr, // Extract vector from pair of vectors (Destructive)
5185ARM_ext_sve_constr, // Extract vector from pair of vectors (Constructive)
5186// SVE bitwise immediate
5187ARM_dupm, // Broadcast logical bitmask immediate to vector (unpredicated)
5188ARM_fdup, // Broadcast floating-point immediate to vector (unpredicated)
5189// SVE Integer Wide Immediate - Predicated
5190ARM_cpy_pred, // Copy integer immediate to active elements (predicated)
5191ARM_fcpy_pred, // Copy FP immediate to active elements (predicated)
5192// SVE Permute Vector - One Source Quadwords
5193ARM_dupq, // Broadcast indexed element in each quadword vector segment (unpredicated)
5194ARM_extq, // Extract vector segment from each pair of quadword vector segments
5195// SVE Permute Predicate
5196ARM_punpkhi, // Unpack and widen high half of predicate
5197ARM_punpklo, // Unpack and widen low half of predicate
5198// SVE Permute Vector - Predicated
5199ARM_compact, // Compress active elements to lower-numbered elements
5200ARM_lasta, // Extract element after last active to register
5201ARM_lastb, // Extract last active element to register
5202ARM_clasta, // Conditionally extract element after last (destructive)
5203ARM_clastb, // Conditionally extract last element (destructive)
5204ARM_revb, // Reverse bytes within elements (predicated)
5205ARM_revh, // Reverse halfwords within elements (predicated)
5206ARM_revw, // Reverse words within elements (predicated)
5207ARM_revd, // Reverse doublewords within elements (predicated)
5208ARM_rbit_pred, // Reverse bits within elements (predicated, SVE)
5209ARM_splice_destr, // SPLICE destructive: select elements from first then second vector
5210ARM_splice_constr, // SPLICE constructive (SVE2): select from pair {Zn, Zn+1}
5211ARM_sel_sve, // SVE select vector elements (predicated)
5212// SVE Permute Vector - Unpredicated
5213ARM_insr, // Insert scalar register into shifted vector (unpredicated)
5214ARM_sunpkhi, // Signed unpack and extend top half of vector
5215ARM_sunpklo, // Signed unpack and extend bottom half of vector
5216ARM_uunpkhi, // Unsigned unpack and extend top half of vector
5217ARM_uunpklo, // Unsigned unpack and extend bottom half of vector
5218// SVE Integer Compare
5219ARM_cmp_sve, // SVE integer compare (vectors and wide elements)
5220// SVE Partition Break
5221ARM_brka, // SVE partition break after
5222ARM_brkas, // SVE partition break after, setting flags
5223ARM_brkb, // SVE partition break before
5224ARM_brkbs, // SVE partition break before, setting flags
5225ARM_brkn, // SVE propagate break to next partition
5226ARM_brkns, // SVE propagate break to next, setting flags
5227ARM_brkpa, // SVE propagate break after from previous
5228ARM_brkpas, // SVE propagate break after from previous, setting flags
5229ARM_brkpb, // SVE propagate break before from previous
5230ARM_brkpbs, // SVE propagate break before from previous, setting flags
5231// SVE Predicate Misc
5232ARM_ptest, // SVE predicate test
5233ARM_pfirst, // SVE predicate first active
5234ARM_pfalse, // SVE predicate false
5235ARM_pnext, // SVE predicate next active
5236ARM_rdffr, // SVE read first-fault register
5237ARM_rdffrs, // SVE read first-fault register, setting flags
5238ARM_ptrue, // SVE predicate initialize
5239ARM_ptrues, // SVE predicate initialize, setting flags
5240// SVE Predicate Logical
5241ARM_and_pred, // SVE predicate AND
5242ARM_bic_pred, // SVE predicate BIC
5243ARM_eor_pred, // SVE predicate EOR
5244ARM_sel_pred, // SVE predicate SEL
5245ARM_orr_pred, // SVE predicate ORR
5246ARM_orn_pred, // SVE predicate ORN
5247ARM_nor_pred, // SVE predicate NOR
5248ARM_nand_pred, // SVE predicate NAND
5249ARM_ands_pred, // SVE predicate ANDS
5250ARM_bics_pred, // SVE predicate BICS
5251ARM_eors_pred, // SVE predicate EORS
5252ARM_orrs_pred, // SVE predicate ORRS
5253ARM_orns_pred, // SVE predicate ORNS
5254ARM_nors_pred, // SVE predicate NORS
5255ARM_nands_pred, // SVE predicate NANDS
5256// SVE Predicate Count
5257ARM_cntp, // SVE count active predicate elements
5258// SVE Inc/Dec by Predicate Count
5259ARM_sqincp, // SVE saturating inc scalar/vector by predicate count
5260ARM_uqincp, // SVE unsigned saturating inc scalar/vector by predicate count
5261ARM_sqdecp, // SVE saturating dec scalar/vector by predicate count
5262ARM_uqdecp, // SVE unsigned saturating dec scalar/vector by predicate count
5263ARM_incp, // SVE inc scalar/vector by predicate count
5264ARM_decp, // SVE dec scalar/vector by predicate count
5265// SVE Write FFR
5266ARM_wrffr, // SVE write first-fault register
5267ARM_setffr, // SVE set first-fault register
5268// SVE Integer Compare - Scalars
5269ARM_while, // SVE while (condition in insn.cond)
5270ARM_while_cnt, // SVE while predicate-as-counter (condition in insn.cond)
5271ARM_cterm, // SVE conditionally terminate (condition in insn.cond)
5272ARM_whilewr, // SVE while pointer conflict (write after read)
5273ARM_whilerw, // SVE while pointer conflict (read after write)
5274// SVE Scalar Integer Compare - Predicate-as-counter
5275ARM_pext, // SVE predicate extract from predicate-as-counter
5276// SVE Integer Multiply-Add - Unpredicated
5277ARM_sqdmlalbt, // SVE2 saturating multiply-add interleaved long (bottom*top)
5278ARM_sqdmlslbt, // SVE2 saturating multiply-subtract interleaved long (bottom*top)
5279ARM_cdot, // SVE2 complex integer dot product
5280ARM_cmla, // SVE2 complex integer multiply-add
5281ARM_sqrdcmlah, // SVE2 saturating rounding doubling complex multiply-add high
5282ARM_smlalb, // SVE2 signed multiply-add long (bottom)
5283ARM_smlalt, // SVE2 signed multiply-add long (top)
5284ARM_umlalb, // SVE2 unsigned multiply-add long (bottom)
5285ARM_umlalt, // SVE2 unsigned multiply-add long (top)
5286ARM_smlslb, // SVE2 signed multiply-subtract long (bottom)
5287ARM_smlslt, // SVE2 signed multiply-subtract long (top)
5288ARM_umlslb, // SVE2 unsigned multiply-subtract long (bottom)
5289ARM_umlslt, // SVE2 unsigned multiply-subtract long (top)
5290ARM_sqdmlalb, // SVE2 saturating multiply-add long (bottom)
5291ARM_sqdmlalt, // SVE2 saturating multiply-add long (top)
5292ARM_sqdmlslb, // SVE2 saturating multiply-subtract long (bottom)
5293ARM_sqdmlslt, // SVE2 saturating multiply-subtract long (top)
5294// SVE2 Integer - Predicated (C4.1.66)
5295// C4.1.66.3 saturating/rounding shift reversed
5296ARM_srshlr, // Signed Rounding Shift Left Reversed
5297ARM_urshlr, // Unsigned Rounding Shift Left Reversed
5298ARM_sqshlr, // Signed Saturating Shift Left Reversed
5299ARM_uqshlr, // Unsigned Saturating Shift Left Reversed
5300ARM_sqrshlr, // Signed Saturating Rounding Shift Left Reversed
5301ARM_uqrshlr, // Unsigned Saturating Rounding Shift Left Reversed
5302// C4.1.66.4 halving subtract reversed
5303ARM_shsubr, // Signed Halving Subtract Reversed
5304ARM_uhsubr, // Unsigned Halving Subtract Reversed
5305// C4.1.66.6 saturating subtract reversed
5306ARM_sqsubr, // Signed Saturating Subtract Reversed
5307ARM_uqsubr, // Unsigned Saturating Subtract Reversed
5308// C4.1.66.3 saturating/rounding shift (SVE predicated)
5309ARM_srshl_sve, // Signed Rounding Shift Left (SVE)
5310ARM_urshl_sve, // Unsigned Rounding Shift Left (SVE)
5311ARM_sqrshl_sve, // Signed Saturating Rounding Shift Left (SVE)
5312ARM_uqrshl_sve, // Unsigned Saturating Rounding Shift Left (SVE)
5313// C4.1.66.4 halving add/subtract (SVE predicated)
5314ARM_shadd_sve, // Signed Halving Add (SVE)
5315ARM_uhadd_sve, // Unsigned Halving Add (SVE)
5316ARM_shsub_sve, // Signed Halving Subtract (SVE)
5317ARM_uhsub_sve, // Unsigned Halving Subtract (SVE)
5318ARM_srhadd_sve, // Signed Rounding Halving Add (SVE)
5319ARM_urhadd_sve, // Unsigned Rounding Halving Add (SVE)
5320// C4.1.66.5 pairwise (SVE predicated)
5321ARM_addp_sve, // Add Pairwise (SVE)
5322ARM_smaxp_sve, // Signed Maximum Pairwise (SVE)
5323ARM_umaxp_sve, // Unsigned Maximum Pairwise (SVE)
5324ARM_sminp_sve, // Signed Minimum Pairwise (SVE)
5325ARM_uminp_sve, // Unsigned Minimum Pairwise (SVE)
5326// C4.1.66.6 saturating add/subtract (SVE predicated)
5327ARM_sqadd_sve, // Signed Saturating Add (SVE)
5328ARM_uqadd_sve, // Unsigned Saturating Add (SVE)
5329ARM_sqsub_sve, // Signed Saturating Subtract (SVE)
5330ARM_uqsub_sve, // Unsigned Saturating Subtract (SVE)
5331ARM_suqadd_sve, // Signed Saturating Accumulate of Unsigned (SVE)
5332ARM_usqadd_sve, // Unsigned Saturating Accumulate of Signed (SVE)
5333// C4.1.67.10/11 SVE2 multiply long (indexed)
5334ARM_smullb, // Signed Multiply Long (bottom)
5335ARM_smullt, // Signed Multiply Long (top)
5336ARM_umullb, // Unsigned Multiply Long (bottom)
5337ARM_umullt, // Unsigned Multiply Long (top)
5338ARM_sqdmullb, // Signed Saturating Doubling Multiply Long (bottom)
5339ARM_sqdmullt, // Signed Saturating Doubling Multiply Long (top)
5340// C4.1.68 SVE2 widening integer arithmetic
5341ARM_saddlb, // Signed Add Long (bottom)
5342ARM_saddlt, // Signed Add Long (top)
5343ARM_uaddlb, // Unsigned Add Long (bottom)
5344ARM_uaddlt, // Unsigned Add Long (top)
5345ARM_ssublb, // Signed Subtract Long (bottom)
5346ARM_ssublt, // Signed Subtract Long (top)
5347ARM_usublb, // Unsigned Subtract Long (bottom)
5348ARM_usublt, // Unsigned Subtract Long (top)
5349ARM_sabdlb, // Signed Absolute Difference Long (bottom)
5350ARM_sabdlt, // Signed Absolute Difference Long (top)
5351ARM_uabdlb, // Unsigned Absolute Difference Long (bottom)
5352ARM_uabdlt, // Unsigned Absolute Difference Long (top)
5353ARM_saddwb, // Signed Add Wide (bottom)
5354ARM_saddwt, // Signed Add Wide (top)
5355ARM_uaddwb, // Unsigned Add Wide (bottom)
5356ARM_uaddwt, // Unsigned Add Wide (top)
5357ARM_ssubwb, // Signed Subtract Wide (bottom)
5358ARM_ssubwt, // Signed Subtract Wide (top)
5359ARM_usubwb, // Unsigned Subtract Wide (bottom)
5360ARM_usubwt, // Unsigned Subtract Wide (top)
5361ARM_pmullb, // Polynomial Multiply Long (bottom)
5362ARM_pmullt, // Polynomial Multiply Long (top)
5363// C4.1.69 SVE misc
5364// C4.1.69.1 SVE2 bitwise shift left long
5365ARM_sshllb, // Signed Shift Left Long (bottom)
5366ARM_sshllt, // Signed Shift Left Long (top)
5367ARM_ushllb, // Unsigned Shift Left Long (bottom)
5368ARM_ushllt, // Unsigned Shift Left Long (top)
5369// C4.1.69.2 SVE2 integer add/subtract interleaved long
5370ARM_saddlbt, // Signed Add Long (bottom-top)
5371ARM_ssublbt, // Signed Subtract Long (bottom-top)
5372ARM_ssubltb, // Signed Subtract Long (top-bottom)
5373// C4.1.69.3 SVE2 bitwise exclusive-or interleaved
5374ARM_eorbt, // EOR (bottom-top)
5375ARM_eortb, // EOR (top-bottom)
5376// C4.1.69.4 SVE integer matrix multiply accumulate
5377ARM_smmla_sve, // Signed Matrix Multiply Accumulate
5378// C4.1.69.5 SVE2 bitwise permute
5379ARM_bext, // Bit Extract
5380ARM_bdep, // Bit Deposit
5381ARM_bgrp, // Bit Group
5382// C4.1.70 SVE2 accumulate
5383// C4.1.70.1 SVE2 complex integer add
5384ARM_cadd, // Complex Add
5385ARM_sqcadd, // Saturating Complex Add
5386// C4.1.70.2 SVE2 integer absolute difference and accumulate long
5387ARM_sabalb, // Signed Absolute Difference Accumulate Long (bottom)
5388ARM_sabalt, // Signed Absolute Difference Accumulate Long (top)
5389ARM_uabalb, // Unsigned Absolute Difference Accumulate Long (bottom)
5390ARM_uabalt, // Unsigned Absolute Difference Accumulate Long (top)
5391// C4.1.70.3 SVE2 integer add/subtract long with carry
5392ARM_adclb, // Add with Carry Long (bottom)
5393ARM_adclt, // Add with Carry Long (top)
5394ARM_sbclb, // Subtract with Carry Long (bottom)
5395ARM_sbclt, // Subtract with Carry Long (top)
5396// C4.1.71 SVE2 narrowing
5397// C4.1.71.1 SVE2 saturating extract narrow
5398ARM_sqxtnb, // Signed Saturating Extract Narrow (bottom)
5399ARM_sqxtnt, // Signed Saturating Extract Narrow (top)
5400ARM_uqxtnb, // Unsigned Saturating Extract Narrow (bottom)
5401ARM_uqxtnt, // Unsigned Saturating Extract Narrow (top)
5402ARM_sqxtunb, // Signed Saturating Unsigned Extract Narrow (bottom)
5403ARM_sqxtunt, // Signed Saturating Unsigned Extract Narrow (top)
5404// C4.1.71.3 SVE2 bitwise shift right narrow
5405ARM_sqshrunb, // Signed Saturating Shift Right Unsigned Narrow (bottom)
5406ARM_sqshrunt, // Signed Saturating Shift Right Unsigned Narrow (top)
5407ARM_sqrshrunb, // Signed Saturating Rounding Shift Right Unsigned Narrow (bottom)
5408ARM_sqrshrunt, // Signed Saturating Rounding Shift Right Unsigned Narrow (top)
5409ARM_shrnb, // Shift Right Narrow (bottom)
5410ARM_shrnt, // Shift Right Narrow (top)
5411ARM_rshrnb, // Rounding Shift Right Narrow (bottom)
5412ARM_rshrnt, // Rounding Shift Right Narrow (top)
5413ARM_sqshrnb, // Signed Saturating Shift Right Narrow (bottom)
5414ARM_sqshrnt, // Signed Saturating Shift Right Narrow (top)
5415ARM_sqrshrnb, // Signed Saturating Rounding Shift Right Narrow (bottom)
5416ARM_sqrshrnt, // Signed Saturating Rounding Shift Right Narrow (top)
5417ARM_uqshrnb, // Unsigned Saturating Shift Right Narrow (bottom)
5418ARM_uqshrnt, // Unsigned Saturating Shift Right Narrow (top)
5419ARM_uqrshrnb, // Unsigned Saturating Rounding Shift Right Narrow (bottom)
5420ARM_uqrshrnt, // Unsigned Saturating Rounding Shift Right Narrow (top)
5421// C4.1.71.5 SVE2 integer add/subtract narrow high part
5422ARM_addhnb, // Add Narrow High Part (bottom)
5423ARM_addhnt, // Add Narrow High Part (top)
5424ARM_raddhnb, // Rounding Add Narrow High Part (bottom)
5425ARM_raddhnt, // Rounding Add Narrow High Part (top)
5426ARM_subhnb, // Subtract Narrow High Part (bottom)
5427ARM_subhnt, // Subtract Narrow High Part (top)
5428ARM_rsubhnb, // Rounding Subtract Narrow High Part (bottom)
5429ARM_rsubhnt, // Rounding Subtract Narrow High Part (top)
5430ARM_histseg, // Histogram Segment
5431ARM_histcnt, // Histogram Count
5432ARM_fmlalb, // FP Multiply-Add Long (bottom)
5433ARM_fmlalt, // FP Multiply-Add Long (top)
5434ARM_fmlslb, // FP Multiply-Subtract Long (bottom)
5435ARM_fmlslt, // FP Multiply-Subtract Long (top)
5436ARM_fcmeq_sve, // SVE FP Compare Equal
5437ARM_fcmge_sve, // SVE FP Compare Greater Than or Equal
5438ARM_fcmgt_sve, // SVE FP Compare Greater Than
5439ARM_fcmle_sve, // SVE FP Compare Less Than or Equal
5440ARM_fcmlt_sve, // SVE FP Compare Less Than
5441ARM_fcmne, // SVE FP Compare Not Equal
5442ARM_fcmuo, // SVE FP Compare Unordered
5443ARM_facge_sve, // SVE FP Absolute Compare Greater Than or Equal
5444ARM_facgt_sve, // SVE FP Absolute Compare Greater Than
5445ARM_fadda, // SVE FP Serial Reduction (add)
5446ARM_fadd_pred, // SVE FP Add (predicated)
5447ARM_fsub_pred, // SVE FP Subtract (predicated)
5448ARM_fmul_pred, // SVE FP Multiply (predicated)
5449ARM_fsubr, // SVE FP Subtract Reversed
5450ARM_fmaxnm_pred, // SVE FP Max Num (predicated)
5451ARM_fminnm_pred, // SVE FP Min Num (predicated)
5452ARM_fmax_pred, // SVE FP Max (predicated)
5453ARM_fmin_pred, // SVE FP Min (predicated)
5454ARM_fabd_pred, // SVE FP Absolute Difference (predicated)
5455ARM_fscale, // SVE FP Scale
5456ARM_fmulx_pred, // SVE FP Multiply Extended (predicated)
5457ARM_fdivr, // SVE FP Divide Reversed
5458ARM_fdiv_pred, // SVE FP Divide (predicated)
5459ARM_ftmad, // SVE FP Trigonometric Multiply-Add Coefficient
5460// C4.1.81
5461ARM_fcvtx, // SVE2 FP Convert Precision, Narrow (Round to Odd)
5462ARM_flogb, // SVE2 FP Base 2 Logarithm
5463// C4.1.82
5464ARM_fmla_sve, // SVE FP Fused Multiply-Add writing addend
5465ARM_fmls_sve, // SVE FP Fused Multiply-Subtract writing addend
5466ARM_fnmla, // SVE FP Negated Fused Multiply-Add
5467ARM_fnmls, // SVE FP Negated Fused Multiply-Subtract
5468ARM_fmad, // SVE FP Fused Multiply-Add writing multiplicand
5469ARM_fmsb, // SVE FP Fused Multiply-Subtract writing multiplicand
5470ARM_fnmad, // SVE FP Negated Fused Multiply-Add writing multiplicand
5471ARM_fnmsb, // SVE FP Negated Fused Multiply-Subtract writing multiplicand
5472// C4.1.83
5473ARM_prfb, // SVE Prefetch Bytes
5474ARM_prfh, // SVE Prefetch Halfwords
5475ARM_prfw, // SVE Prefetch Words
5476ARM_prfd, // SVE Prefetch Doublewords
5477ARM_ld1rb, // SVE Load and Broadcast Byte
5478ARM_ld1rh, // SVE Load and Broadcast Halfword
5479ARM_ld1rw, // SVE Load and Broadcast Word
5480ARM_ld1rd, // SVE Load and Broadcast Doubleword
5481ARM_ld1rsb, // SVE Load and Broadcast Signed Byte
5482ARM_ld1rsh, // SVE Load and Broadcast Signed Halfword
5483ARM_ld1rsw, // SVE Load and Broadcast Signed Word
5484ARM_ld1b, // SVE Load Bytes
5485ARM_ld1h, // SVE Load Halfwords
5486ARM_ld1w, // SVE Load Words
5487ARM_ld1sb, // SVE Load Signed Bytes
5488ARM_ld1sh, // SVE Load Signed Halfwords
5489ARM_ldff1b, // SVE First-faulting Load Bytes
5490ARM_ldff1h, // SVE First-faulting Load Halfwords
5491ARM_ldff1w, // SVE First-faulting Load Words
5492ARM_ldff1sb, // SVE First-faulting Load Signed Bytes
5493ARM_ldff1sh, // SVE First-faulting Load Signed Halfwords
5494ARM_ldnt1b, // SVE Non-temporal Gather Load Bytes
5495ARM_ldnt1h, // SVE Non-temporal Gather Load Halfwords
5496ARM_ldnt1w, // SVE Non-temporal Gather Load Words
5497ARM_ldnt1sb, // SVE Non-temporal Gather Load Signed Bytes
5498ARM_ldnt1sh, // SVE Non-temporal Gather Load Signed Halfwords
5499ARM_ldnt1sw, // SVE Non-temporal Gather Load Signed Words
5500ARM_ld1d, // SVE Load Doublewords
5501ARM_ld1sw, // SVE Load Signed Words
5502ARM_ldff1d, // SVE First-faulting Load Doublewords
5503ARM_ldff1sw, // SVE First-faulting Load Signed Words
5504ARM_ldnt1d, // SVE Non-temporal Load Doublewords
5505ARM_ldnf1b, // SVE Non-fault Load Bytes
5506ARM_ldnf1h, // SVE Non-fault Load Halfwords
5507ARM_ldnf1w, // SVE Non-fault Load Words
5508ARM_ldnf1d, // SVE Non-fault Load Doublewords
5509ARM_ldnf1sb, // SVE Non-fault Load Signed Bytes
5510ARM_ldnf1sh, // SVE Non-fault Load Signed Halfwords
5511ARM_ldnf1sw, // SVE Non-fault Load Signed Words
5512ARM_ld1rqb, // SVE Load and Broadcast Quadword Bytes
5513ARM_ld1rqh, // SVE Load and Broadcast Quadword Halfwords
5514ARM_ld1rqw, // SVE Load and Broadcast Quadword Words
5515ARM_ld1rqd, // SVE Load and Broadcast Quadword Doublewords
5516ARM_ld2b, // SVE Load 2-element Bytes
5517ARM_ld2h, // SVE Load 2-element Halfwords
5518ARM_ld2w, // SVE Load 2-element Words
5519ARM_ld2d, // SVE Load 2-element Doublewords
5520ARM_ld3b, // SVE Load 3-element Bytes
5521ARM_ld3h, // SVE Load 3-element Halfwords
5522ARM_ld3w, // SVE Load 3-element Words
5523ARM_ld3d, // SVE Load 3-element Doublewords
5524ARM_ld4b, // SVE Load 4-element Bytes
5525ARM_ld4h, // SVE Load 4-element Halfwords
5526ARM_ld4w, // SVE Load 4-element Words
5527ARM_ld4d, // SVE Load 4-element Doublewords
5528ARM_stnt1b, // SVE Non-temporal Scatter Store Bytes
5529ARM_stnt1h, // SVE Non-temporal Scatter Store Halfwords
5530ARM_stnt1w, // SVE Non-temporal Scatter Store Words
5531ARM_stnt1d, // SVE Non-temporal Scatter Store Doublewords
5532ARM_st1b, // SVE Store Bytes
5533ARM_st1h, // SVE Store Halfwords
5534ARM_st1w, // SVE Store Words
5535ARM_st1d, // SVE Store Doublewords
5536ARM_st2b, // SVE Store 2-element Bytes
5537ARM_st2h, // SVE Store 2-element Halfwords
5538ARM_st2w, // SVE Store 2-element Words
5539ARM_st2d, // SVE Store 2-element Doublewords
5540ARM_st3b, // SVE Store 3-element Bytes
5541ARM_st3h, // SVE Store 3-element Halfwords
5542ARM_st3w, // SVE Store 3-element Words
5543ARM_st3d, // SVE Store 3-element Doublewords
5544ARM_st4b, // SVE Store 4-element Bytes
5545ARM_st4h, // SVE Store 4-element Halfwords
5546ARM_st4w, // SVE Store 4-element Words
5547ARM_st4d, // SVE Store 4-element Doublewords
5548// C4.1.91.18
5549ARM_match, // SVE2 Character Match
5550ARM_nmatch, // SVE2 Character No-Match
5551// C4.1.91.20
5552ARM_fcvtlt, // SVE2 FP Convert Precision, Widen (Top)
5553ARM_fcvtnt, // SVE2 FP Convert Precision, Narrow (Top)
5554ARM_fcvtxnt, // SVE2 FP Convert Precision, Narrow to Odd (Top)
5555ARM_bfcvtnt, // SVE2 BFloat16 Convert, Narrow (Top)
5556// C4.1.91.21
5557ARM_faddp_pred, // SVE2 FP Add Pairwise (predicated)
5558ARM_fmaxnmp_pred, // SVE2 FP Max Number Pairwise (predicated)
5559ARM_fminnmp_pred, // SVE2 FP Min Number Pairwise (predicated)
5560ARM_fmaxp_pred, // SVE2 FP Maximum Pairwise (predicated)
5561ARM_fminp_pred, // SVE2 FP Minimum Pairwise (predicated)
5562// C4.1.91.24
5563ARM_fcmla_i, // SVE FP Complex Multiply-Add (indexed)
5564ARM_fcadd_pred, // SVE FP Complex Add (predicated)
5565ARM_fcmla_v, // SVE FP Complex Multiply-Add (vectors)
5566// C4.1.91.25
5567ARM_fclamp, // SVE2 FP Clamp
5568// C4.1.91.28
5569ARM_fmmla, // SVE FP Matrix Multiply-Accumulate
5570// C4.1.91.29
5571ARM_faddv, // SVE FP Recursive Reduction (add)
5572// C4.1.91.30
5573ARM_ftsmul, // SVE FP Trigonometric Select Multiply
5574// C4.1.3 SME FP Outer Product - 32 bit
5575ARM_fmopa, // SME FP Outer Product and Accumulate
5576ARM_fmops, // SME FP Outer Product and Subtract
5577ARM_bfmopa, // SME BF16 Outer Product and Accumulate
5578ARM_bfmops, // SME BF16 Outer Product and Subtract
5579// C4.1.4 SME2 Outer Product - Misc
5580ARM_bmopa, // SME2 Binary Outer Product and Accumulate
5581ARM_bmops, // SME2 Binary Outer Product and Subtract
5582// C4.1.7 SME Integer Outer Product - 32 bit
5583ARM_smopa, // SME Signed Outer Product and Accumulate
5584ARM_smops, // SME Signed Outer Product and Subtract
5585ARM_umopa, // SME Unsigned Outer Product and Accumulate
5586ARM_umops, // SME Unsigned Outer Product and Subtract
5587ARM_sumopa, // SME Signed-Unsigned Outer Product and Accumulate
5588ARM_sumops, // SME Signed-Unsigned Outer Product and Subtract
5589ARM_usmopa, // SME Unsigned-Signed Outer Product and Accumulate
5590ARM_usmops, // SME Unsigned-Signed Outer Product and Subtract
5591// C4.1.9 SME zero array
5592ARM_zero, // SME Zero ZA tiles
5593// C4.1.13 SME2 Expand Lookup Table (Contiguous)
5594ARM_luti2, // SME2 Lookup Table 2-bit index
5595ARM_luti4, // SME2 Lookup Table 4-bit index
5596// C4.1.14 SME Move into Array
5597ARM_mova, // SME Move vector to tile (single)
5598ARM_mova_multi, // SME2 Move vectors to tile (multi)
5599// C4.1.16 SME Add Vector to Array
5600ARM_addha, // SME Add Horizontal vector to Array
5601ARM_addva, // SME Add Vertical vector to Array
5602// C4.1.17 SME2 Multi-vec - Multiple and Single Array Vectors (Two regs)
5603ARM_fmlal_sme, // SME2 FP Multiply-Add Long
5604ARM_fmlsl_sme, // SME2 FP Multiply-Subtract Long
5605ARM_bfmlal, // SME2 BF16 Multiply-Add Long
5606ARM_bfmlsl, // SME2 BF16 Multiply-Subtract Long
5607ARM_smlal_sme, // SME2 Signed Multiply-Add Long
5608ARM_umlal_sme, // SME2 Unsigned Multiply-Add Long
5609// ARM_smlsl, ARM_umlsl reused from NEON (same CF flags)
5610ARM_smlall, // SME2 Signed Multiply-Add Long Long
5611ARM_smlsll, // SME2 Signed Multiply-Subtract Long Long
5612ARM_umlall, // SME2 Unsigned Multiply-Add Long Long
5613ARM_umlsll, // SME2 Unsigned Multiply-Subtract Long Long
5614ARM_usmlall, // SME2 Unsigned-Signed Multiply-Add Long Long
5615ARM_sumlall, // SME2 Signed-Unsigned Multiply-Add Long Long
5616ARM_fdot, // SME2 FP Dot Product
5617ARM_bfdot_sme, // SME2 BF16 Dot Product
5618// ARM_sdot, ARM_udot, ARM_usdot, ARM_sudot reused from NEON (same CF flags)
5619// C4.1.19.5-6 SME2 array accumulators
5620ARM_fadd_sme, // SME2 FP Add to array accumulator
5621ARM_fsub_sme, // SME2 FP Subtract from array accumulator
5622ARM_add_sme, // SME2 Add to array accumulator
5623ARM_sub_sme, // SME2 Subtract from array accumulator
5624// C4.1.22.3/23.3 SME2 vertical dot products
5625ARM_fvdot, // SME2 FP Vertical Dot Product
5626ARM_svdot, // SME2 Signed Vertical Dot Product
5627ARM_uvdot, // SME2 Unsigned Vertical Dot Product
5628// C4.1.24-25 SME2 SVE Destructive (multi-vec)
5629ARM_smax_destr, // SME2 Signed Maximum (destructive)
5630ARM_umax_destr, // SME2 Unsigned Maximum (destructive)
5631ARM_smin_destr, // SME2 Signed Minimum (destructive)
5632ARM_umin_destr, // SME2 Unsigned Minimum (destructive)
5633ARM_fmax_destr, // SME2 FP Maximum (destructive)
5634ARM_fmin_destr, // SME2 FP Minimum (destructive)
5635ARM_fmaxnm_destr, // SME2 FP Maximum Number (destructive)
5636ARM_fminnm_destr, // SME2 FP Minimum Number (destructive)
5637ARM_srshl_destr, // SME2 Signed Rounding Shift Left (destructive)
5638ARM_urshl_destr, // SME2 Unsigned Rounding Shift Left (destructive)
5639ARM_add_destr, // SME2 Add (destructive)
5640ARM_sqdmulh_destr, // SME2 Signed Saturating Doubling Multiply High (destructive)
5641ARM_zip_sme, // SME2 Multi-vec ZIP (two regs)
5642ARM_uzp_sme, // SME2 Multi-vec UZP (two regs)
5643ARM_sclamp, // SME2 Signed Clamp
5644ARM_uclamp, // SME2 Unsigned Clamp
5645ARM_sqrshr_sme, // SME2 Signed Saturating Rounding Shift Right Narrow
5646ARM_uqrshr_sme, // SME2 Unsigned Saturating Rounding Shift Right Narrow
5647ARM_sqrshru_sme, // SME2 Signed Saturating Rounding Shift Right Unsigned Narrow
5648ARM_fcvtzs_sme, // SME2 FP Convert to Signed Integer (Round to Zero)
5649ARM_fcvtzu_sme, // SME2 FP Convert to Unsigned Integer (Round to Zero)
5650ARM_scvtf_sme, // SME2 Signed Integer Convert to FP
5651ARM_ucvtf_sme, // SME2 Unsigned Integer Convert to FP
5652ARM_fcvt_sme, // SME2 FP Convert Precision Narrow
5653ARM_fcvtn_sme, // SME2 FP Convert Precision Narrow (interleaved)
5654ARM_sqcvt, // SME2 Signed Saturating Convert
5655ARM_uqcvt, // SME2 Unsigned Saturating Convert
5656ARM_sqcvtu, // SME2 Signed Saturating Convert Unsigned
5657ARM_sqcvtn, // SME2 Signed Saturating Convert Narrow
5658ARM_uqcvtn, // SME2 Unsigned Saturating Convert Narrow
5659ARM_sqcvtun, // SME2 Signed Saturating Convert Unsigned Narrow
5660ARM_sunpk, // SME2 Signed Unpack
5661ARM_uunpk, // SME2 Unsigned Unpack
5662ARM_frintn_sme, // SME2 FP Round to Integral (Nearest, Ties to Even)
5663ARM_frintp_sme, // SME2 FP Round to Integral (towards +Infinity)
5664ARM_frintm_sme, // SME2 FP Round to Integral (towards -Infinity)
5665ARM_frinta_sme, // SME2 FP Round to Integral (Nearest, Ties to Away)
5666ARM_zip_sme4, // SME2 Multi-vec ZIP (four regs)
5667ARM_uzp_sme4, // SME2 Multi-vec UZP (four regs)
5668ARM_ld1q, // SME Load Quadword tile slice
5669ARM_st1q, // SME Store Quadword tile slice
5670ARM_psel, // SME/SVE2p1 Predicate Select
5671// SVE integer reduction
5672ARM_saddv, // Signed Integer Add Reduction
5673ARM_uaddv, // Unsigned Integer Add Reduction
5674ARM_addqv, // Integer Add Reduction (quadwords)
5675ARM_smaxqv, // Signed Integer Max Reduction (quadwords)
5676ARM_umaxqv, // Unsigned Integer Max Reduction (quadwords)
5677ARM_sminqv, // Signed Integer Min Reduction (quadwords)
5678ARM_uminqv, // Unsigned Integer Min Reduction (quadwords)
5679ARM_orv, // Bitwise OR Reduction
5680ARM_eorv, // Bitwise EOR Reduction
5681ARM_andv, // Bitwise AND Reduction
5682ARM_orqv, // Bitwise OR Reduction (quadwords)
5683ARM_eorqv, // Bitwise EOR Reduction (quadwords)
5684ARM_andqv, // Bitwise AND Reduction (quadwords)
5685ARM_movprfx, // Move Prefix
5687};
5688/*
5689 * Interactive disassembler (IDA).
5690 * Copyright (c) 1990-2026 Hex-Rays
5691 * ALL RIGHTS RESERVED.
5692 *
5693 * TMS320C6xx - VLIW (very long instruction word) architecture
5694 *
5695 */
5696enum
5697{
5698// Original TMS320C62x instructions
5699TMS6_null = 0, // Unknown Operation
5700TMS6_abs, // Absolute value
5701TMS6_add, // Integer addition without saturation (signed)
5702TMS6_addu, // Integer addition without saturation (unsigned)
5703TMS6_addab, // Integer addition using addressing mode (byte)
5704TMS6_addah, // Integer addition using addressing mode (halfword)
5705TMS6_addaw, // Integer addition using addressing mode (word)
5706TMS6_addk, // Integer addition 16bit signed constant
5707TMS6_add2, // Two 16bit Integer adds on register halves
5708TMS6_and, // Logical AND
5709TMS6_b, // Branch
5710TMS6_clr, // Clear a bit field
5711TMS6_cmpeq, // Compare for equality
5712TMS6_cmpgt, // Compare for greater than (signed)
5713TMS6_cmpgtu, // Compare for greater than (unsigned)
5714TMS6_cmplt, // Compare for less than (signed)
5715TMS6_cmpltu, // Compare for less than (unsigned)
5716TMS6_ext, // Extract and sign-extend a bit filed
5717TMS6_extu, // Extract an unsigned bit field
5718TMS6_idle, // Multicycle NOP with no termination until interrupt
5719TMS6_ldb, // Load from memory (signed 8bit)
5720TMS6_ldbu, // Load from memory (unsigned 8bit)
5721TMS6_ldh, // Load from memory (signed 16bit)
5722TMS6_ldhu, // Load from memory (unsigned 16bit)
5723TMS6_ldw, // Load from memory (32bit)
5724TMS6_lmbd, // Leftmost bit detection
5725TMS6_mpy, // Signed Integer Multiply (LSB16 x LSB16)
5726TMS6_mpyu, // Unsigned Integer Multiply (LSB16 x LSB16)
5727TMS6_mpyus, // Integer Multiply Signed*Unsigned (LSB16 x LSB16)
5728TMS6_mpysu, // Integer Multiply Unsigned*Signed (LSB16 x LSB16)
5729TMS6_mpyh, // Signed Integer Multiply (MSB16 x MSB16)
5730TMS6_mpyhu, // Unsigned Integer Multiply (MSB16 x MSB16)
5731TMS6_mpyhus, // Integer Multiply Unsigned*Signed (MSB16 x MSB16)
5732TMS6_mpyhsu, // Integer Multiply Signed*Unsigned (MSB16 x MSB16)
5733TMS6_mpyhl, // Signed Integer Multiply (MSB16 x LSB16)
5734TMS6_mpyhlu, // Unsigned Integer Multiply (MSB16 x LSB16)
5735TMS6_mpyhuls, // Integer Multiply Signed*Unsigned (MSB16 x LSB16)
5736TMS6_mpyhslu, // Integer Multiply Unsigned*Signed (MSB16 x LSB16)
5737TMS6_mpylh, // Signed Integer Multiply (LSB16 x MB16)
5738TMS6_mpylhu, // Unsigned Integer Multiply (LSB16 x MSB16)
5739TMS6_mpyluhs, // Integer Multiply Signed*Unsigned (LSB16 x MSB16)
5740TMS6_mpylshu, // Integer Multiply Unsigned*Signed (LSB16 x MSB16)
5741TMS6_mv, // Move from register to register
5742TMS6_mvc, // Move between the control file & register file
5743TMS6_mvk, // Move a 16bit signed constant into register
5744TMS6_mvkh, // Move a 16bit constant into the upper bits of a register
5745TMS6_mvklh, // Move a 16bit constant into the upper bits of a register
5746TMS6_neg, // Negate
5747TMS6_nop, // No operation
5748TMS6_norm, // Normalize
5749TMS6_not, // Bitwise NOT
5750TMS6_or, // Logical or
5751TMS6_sadd, // Integer addition with saturation
5752TMS6_sat, // Saturate 40bit value to 32bits
5753TMS6_set, // Set a bit field
5754TMS6_shl, // Arithmetic shift left
5755TMS6_shr, // Arithmetic shift right
5756TMS6_shru, // Logical shift left
5757TMS6_smpy, // Integer multiply with left shift & saturation (LSB16*LSB16)
5758TMS6_smpyhl, // Integer multiply with left shift & saturation (MSB16*LSB16)
5759TMS6_smpylh, // Integer multiply with left shift & saturation (LSB16*MSB16)
5760TMS6_smpyh, // Integer multiply with left shift & saturation (MSB16*MSB16)
5761TMS6_sshl, // Shift left with saturation
5762TMS6_ssub, // Integer substraction with saturation
5763TMS6_stb, // Store to memory (signed 8bit)
5764TMS6_stbu, // Store to memory (unsigned 8bit)
5765TMS6_sth, // Store to memory (signed 16bit)
5766TMS6_sthu, // Store to memory (unsigned 16bit)
5767TMS6_stw, // Store to memory (32bit)
5768TMS6_sub, // Integer substaraction without saturation (signed)
5769TMS6_subu, // Integer substaraction without saturation (unsigned)
5770TMS6_subab, // Integer subtraction using addressing mode (byte)
5771TMS6_subah, // Integer subtraction using addressing mode (halfword)
5772TMS6_subaw, // Integer subtraction using addressing mode (word)
5773TMS6_subc, // Conditional subtract & shift (for division)
5774TMS6_sub2, // Two 16bit integer subtractions on register halves
5775TMS6_xor, // Exclusive OR
5776TMS6_zero, // Zero a register
5777// New TMS320C674x instructions
5778TMS6_abs2, // Absolute Value With Saturation, Signed, Packed 16-bit
5779TMS6_absdp, // Absolute Value, Double-Precision Floating-Point
5780TMS6_abssp, // Absolute Value, Single-Precision Floating-Point
5781TMS6_add4, // Add Without Saturation, Four 8-Bit Pairs for Four 8-Bit Results
5782TMS6_addad, // Add Using Doubleword Addressing Mode
5783TMS6_adddp, // Add Two Double-Precision Floating-Point Values
5784TMS6_addkpc, // Add Signed 7-bit Constant to Program Counter
5785TMS6_addsp, // Add Two Single-Precision Floating-Point Values
5786TMS6_addsub, // Parallel ADD and SUB Operations On Common Inputs
5787TMS6_addsub2, // Parallel ADD2 and SUB2 Operations On Common Inputs
5788TMS6_andn, // Bitwise AND Invert
5789TMS6_avg2, // Average, Signed, Packed 16-bit
5790TMS6_avgu4, // Average, Unsigned, Packed 16-bit
5791TMS6_bdec, // Branch and Decrement
5792TMS6_bitc4, // Bit Count, Packed 8-bit
5793TMS6_bitr, // Bit Reverse
5794TMS6_bnop, // Branch With NOP
5795TMS6_bpos, // Branch Positive
5796TMS6_callp, // Call Using a Displacement
5797TMS6_cmpeq2, // Compare for Equality, Packed 16-bit
5798TMS6_cmpeq4, // Compare for Equality, Packed 8-bit
5799TMS6_cmpeqdp, // Compare for Equality, Double-Precision Floating-Point Values
5800TMS6_cmpeqsp, // Compare for Equality, Single-Precision Floating-Point Values
5801TMS6_cmpgt2, // Compare for Greater Than, Packed 16-bit
5802TMS6_cmpgtdp, // Compare for Greater Than, Double-Precision Floating-Point Values
5803TMS6_cmpgtsp, // Compare for Greater Than, Single-Precision Floating-Point Values
5804TMS6_cmpgtu4, // Compare for Greater Than, Unsigned, Packed 8-bit
5805TMS6_cmplt2, // Compare for Less Than, Packed 16-bit
5806TMS6_cmpltdp, // Compare for Less Than, Double-Precision Floating-Point Values
5807TMS6_cmpltsp, // Compare for Less Than, Single-Precision Floating-Point Values
5808TMS6_cmpltu4, // Compare for Less Than, Unsigned, Packed 8-bit
5809TMS6_cmpy, // Complex Multiply Two Pairs, Signed, Packed 16-bit
5810TMS6_cmpyr, // Complex Multiply Two Pairs, Signed, Packed 16-bit With Rounding
5811TMS6_cmpyr1, // Complex Multiply Two Pairs, Signed, Packed 16-bit With Rounding
5812TMS6_ddotp4, // Double Dot Product, Signed, Packed 16-Bit and Signed, Packed 8-Bit
5813TMS6_ddotph2, // Double Dot Product, Two Pairs, Signed, Packed 16-Bit
5814TMS6_ddotph2r, // Double Dot Product With Rounding, Two Pairs, Signed, Packed 16-Bit
5815TMS6_ddotpl2, // Double Dot Product, Two Pairs, Signed, Packed 16-Bit
5816TMS6_ddotpl2r, // Double Dot Product With Rounding, Two Pairs, Signed Packed 16-Bit
5817TMS6_deal, // Deinterleave and Pack
5818TMS6_dint, // Disable Interrupts and Save Previous Enable State
5819TMS6_dmv, // Move Two Independent Registers to Register Pair
5820TMS6_dotp2, // Dot Product, Signed, Packed 16-Bit
5821TMS6_dotpn2, // Dot Product With Negate, Signed, Packed 16-Bit
5822TMS6_dotpnrsu2, // Dot Product With Negate, Shift and Round, Signed by Unsigned, Packed 16-Bit
5823TMS6_dotpnrus2, // Dot Product With Negate, Shift and Round, Unsigned by Signed, Packed 16-Bit
5824TMS6_dotprsu2, // Dot Product With Shift and Round, Signed by Unsigned, Packed 16-Bit
5825TMS6_dotprus2, // Dot Product With Shift and Round, Unsigned by Signed, Packed 16-Bit
5826TMS6_dotpsu4, // Dot Product, Signed by Unsigned, Packed 8-Bit
5827TMS6_dotpu4, // Dot Product, Unsigned, Packed 8-Bit
5828TMS6_dotpus4, // Dot Product, Unsigned by Signed, Packed 8-Bit
5829TMS6_dpack2, // Parallel PACK2 and PACKH2 Operations
5830TMS6_dpackx2, // Parallel PACKLH2 Operations
5831TMS6_dpint, // Convert Double-Precision Floating-Point Value to Integer
5832TMS6_dpsp, // Convert Double-Precision Floating-Point Value to Single-Precision Floating-Point Value
5833TMS6_dptrunc, // Convert Double-Precision Floating-Point Value to Integer With Truncation
5834TMS6_gmpy, // Galois Field Multiply
5835TMS6_gmpy4, // Galois Field Multiply, Packed 8-Bit
5836TMS6_intdp, // Convert Signed Integer to Double-Precision Floating-Point Value
5837TMS6_intdpu, // Convert Unsigned Integer to Double-Precision Floating-Point Value
5838TMS6_intsp, // Convert Signed Integer to Single-Precision Floating-Point Value
5839TMS6_intspu, // Convert Unsigned Integer to Single-Precision Floating-Point Value
5840TMS6_lddw, // Load Doubleword From Memory With a 5-Bit Unsigned Constant Offset or Register Offset
5841TMS6_ldndw, // Load Nonaligned Doubleword From Memory With Constant or Register Offset
5842TMS6_ldnw, // Load Nonaligned Word From Memory With Constant or Register Offset
5843TMS6_max2, // Maximum, Signed, Packed 16-Bit
5844TMS6_maxu4, // Maximum, Unsigned, Packed 8-Bit
5845TMS6_min2, // Minimum, Signed, Packed 16-Bit
5846TMS6_minu4, // Minimum, Unsigned, Packed 8-Bit
5847TMS6_mpy2, // Multiply Signed by Signed, 16 LSB x 16 LSB and 16 MSB x 16 MSB
5848TMS6_mpy2ir, // Multiply Two 16-Bit x 32-Bit, Shifted by 15 to Produce a Rounded 32-Bit Result
5849TMS6_mpy32, // Multiply Signed 32-Bit x Signed 32-Bit Into 32-Bit Result
5850TMS6_mpy32su, // Multiply Signed 32-Bit x Unsigned 32-Bit Into Signed 64-Bit Result
5851TMS6_mpy32u, // Multiply Unsigned 32-Bit x Unsigned 32-Bit Into Unsigned 64-Bit Result
5852TMS6_mpy32us, // Multiply Unsigned 32-Bit x Signed 32-Bit Into Signed 64-Bit Result
5853TMS6_mpydp, // Multiply Two Double-Precision Floating-Point Values
5854TMS6_mpyhi, // Multiply 16 MSB x 32-Bit Into 64-Bit Result
5855TMS6_mpyhir, // Multiply 16 MSB x 32-Bit, Shifted by 15 to Produce a Rounded 32-Bit Result
5856TMS6_mpyi, // Multiply 32-Bit x 32-Bit Into 32-Bit Result
5857TMS6_mpyid, // Multiply 32-Bit x 32-Bit Into 64-Bit Result
5858TMS6_mpyih, // Multiply 32-Bit x 16-MSB Into 64-Bit Result
5859TMS6_mpyihr, // Multiply 32-Bit x 16 MSB, Shifted by 15 to Produce a Rounded 32-Bit Result
5860TMS6_mpyil, // Multiply 32-Bit x 16 LSB Into 64-Bit Result
5861TMS6_mpyilr, // Multiply 32-Bit x 16 LSB, Shifted by 15 to Produce a Rounded 32-Bit Result
5862TMS6_mpyli, // Multiply 16 LSB x 32-Bit Into 64-Bit Result
5863TMS6_mpylir, // Multiply 16 LSB x 32-Bit, Shifted by 15 to Produce a Rounded 32-Bit Result
5864TMS6_mpysp, // Multiply Two Single-Precision Floating-Point Values
5865TMS6_mpysp2dp, // Multiply Two Single-Precision Floating-Point Values for Double-Precision Result
5866TMS6_mpyspdp, // Multiply Single-Precision Floating-Point Value x Double-Precision Floating-Point Value
5867TMS6_mpysu4, // Multiply Signed x Unsigned, Four 8-Bit Pairs for Four 8-Bit Results
5868TMS6_mpyu4, // Multiply Unsigned x Unsigned, Four 8-Bit Pairs for Four 8-Bit Results
5869TMS6_mpyus4, // Multiply Unsigned x Signed, Four 8-Bit Pairs for Four 8-Bit Results
5870TMS6_mvd, // Move From Register to Register, Delayed
5871TMS6_mvkl, // Move Signed Constant Into Register and Sign Extend
5872TMS6_pack2, // Pack Two 16 LSBs Into Upper and Lower Register Halves
5873TMS6_packh2, // Pack Two 16 MSBs Into Upper and Lower Register Halves
5874TMS6_packh4, // Pack Four High Bytes Into Four 8-Bit Halfwords
5875TMS6_packhl2, // Pack 16 MSB Into Upper and 16 LSB Into Lower Register Halves
5876TMS6_packl4, // Pack Four Low Bytes Into Four 8-Bit Halfwords
5877TMS6_packlh2, // Pack 16 LSB Into Upper and 16 MSB Into Lower Register Halves
5878TMS6_rcpdp, // Double-Precision Floating-Point Reciprocal Approximation
5879TMS6_rcpsp, // Single-Precision Floating-Point Reciprocal Approximation
5880TMS6_rint, // Restore Previous Enable State
5881TMS6_rotl, // Rotate Left
5882TMS6_rpack2, // Shift With Saturation and Pack Two 16 MSBs Into Upper and Lower Register Halves
5883TMS6_rsqrdp, // Double-Precision Floating-Point Square-Root Reciprocal Approximation
5884TMS6_rsqrsp, // Single-Precision Floating-Point Square-Root Reciprocal Approximation
5885TMS6_sadd2, // Add Two Signed 16-Bit Integers on Upper and Lower Register Halves With Saturation
5886TMS6_saddsu2, // Add Two Signed and Unsigned 16-Bit Integers on Register Halves With Saturation
5887TMS6_saddsub, // Parallel SADD and SSUB Operations On Common Inputs
5888TMS6_saddsub2, // Parallel SADD2 and SSUB2 Operations On Common Inputs
5889TMS6_saddu4, // Add With Saturation, Four Unsigned 8-Bit Pairs for Four 8-Bit Results
5890TMS6_saddus2, // Add Two Unsigned and Signed 16-Bit Integers on Register Halves With Saturation
5891TMS6_shfl, // Shuffle
5892TMS6_shfl3, // 3-Way Bit Interleave On Three 16-Bit Values Into a 48-Bit Result
5893TMS6_shlmb, // Shift Left and Merge Byte
5894TMS6_shr2, // Arithmetic Shift Right, Signed, Packed 16-Bit
5895TMS6_shrmb, // Shift Right and Merge Byte
5896TMS6_shru2, // Arithmetic Shift Right, Unsigned, Packed 16-Bit
5897TMS6_smpy2, // Multiply Signed by Signed, 16 LSB x 16 LSB and 16 MSB x 16 MSB With Left Shift and Saturation
5898TMS6_smpy32, // Multiply Signed 32-Bit x Signed 32-Bit Into 64-Bit Result With Left Shift and Saturation
5899TMS6_spack2, // Saturate and Pack Two 16 LSBs Into Upper and Lower Register Halves
5900TMS6_spacku4, // Saturate and Pack Four Signed 16-Bit Integers Into Four Unsigned 8-Bit Halfwords
5901TMS6_spdp, // Convert Single-Precision Floating-Point Value to Double-Precision Floating-Point Value
5902TMS6_spint, // Convert Single-Precision Floating-Point Value to Integer
5903TMS6_spkernel, // Software Pipelined Loop (SPLOOP) Buffer Operation Code Boundary
5904TMS6_spkernelr, // Software Pipelined Loop (SPLOOP) Buffer Operation Code Boundary
5905TMS6_sploop, // Software Pipelined Loop (SPLOOP) Buffer Operation
5906TMS6_sploopd, // Software Pipelined Loop (SPLOOP) Buffer Operation With Delayed Testing
5907TMS6_sploopw, // Software Pipelined Loop (SPLOOP) Buffer Operation With Delayed Testing and No Epilog
5908TMS6_spmask, // Software Pipelined Loop (SPLOOP) Buffer Operation Load/Execution Control
5909TMS6_spmaskr, // Software Pipelined Loop (SPLOOP) Buffer Operation Load/Execution Control
5910TMS6_sptrunc, // Convert Single-Precision Floating-Point Value to Integer With Truncation
5911TMS6_sshvl, // Variable Shift Left
5912TMS6_sshvr, // Variable Shift Right
5913TMS6_ssub2, // Subtract Two Signed 16-Bit Integers on Upper and Lower Register Halves With Saturation
5914TMS6_stdw, // Store Doubleword to Memory With a 5-Bit Unsigned Constant Offset or Register Offset
5915TMS6_stndw, // Store Nonaligned Doubleword to Memory With a 5-Bit Unsigned Constant Offset or Register Offset
5916TMS6_stnw, // Store Nonaligned Word to Memory With a 5-Bit Unsigned Constant Offset or Register Offset
5917TMS6_sub4, // Subtract Without Saturation, Four 8-Bit Pairs for Four 8-Bit Results
5918TMS6_subabs4, // Subtract With Absolute Value, Four 8-Bit Pairs for Four 8-Bit Results
5919TMS6_subdp, // Subtract Two Double-Precision Floating-Point Values
5920TMS6_subsp, // Subtract Two Single-Precision Floating-Point Values
5921TMS6_swap2, // Swap Bytes in Upper and Lower Register Halves
5922TMS6_swap4, // Swap Byte Pairs in Upper and Lower Register Halves
5923TMS6_swe, // Software Exception
5924TMS6_swenr, // Software Exception, no Return
5925TMS6_unpkhu4, // Unpack 16 MSB Into Two Lower 8-Bit Halfwords of Upper and Lower Register Halves
5926TMS6_unpklu4, // Unpack 16 LSB Into Two Lower 8-Bit Halfwords of Upper and Lower Register Halves
5927TMS6_xormpy, // Galois Field Multiply With Zero Polynomial
5928TMS6_xpnd2, // Expand Bits to Packed 16-Bit Masks
5929TMS6_xpnd4, // Expand Bits to Packed 8-Bit Masks
5930// New TMS320C66x Instructions
5931TMS6_cmatmpy, // Complex Matrix Multiply, Signed Complex 16-bit (16-bit real/16-bit Imaginary)
5932TMS6_ccmatmpyr1, // Complex Conjugate Matrix Multiply With Rounding, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)
5933TMS6_ccmpy32r1, // Complex Multiply With Rounding and Conjugate, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)
5934TMS6_ccmatmpy, // Complex Conjugate Matrix Multiply, Signed Complex 16-bit (16-bit real/16-bit Imaginary)
5935TMS6_cmatmpyr1, // Complex Matrix Multiply With Rounding, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)
5936TMS6_cmpysp, // Single Precision Complex Floating Point Multiply
5937TMS6_crot90, // Complex Rotate By 90 Degrees, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)
5938TMS6_crot270, // Complex Rotate By 270 Degrees, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)
5939TMS6_dadd, // 2-Way SIMD Addition, Packed Signed 32-bit
5940TMS6_dadd2, // 4-Way SIMD Addition, Packed Signed 16-bit
5941TMS6_daddsp, // 2-Way SIMD Single Precision Floating Point Addition
5942TMS6_dapys2, // 4-Way SIMD Apply Sign Bits to Operand
5943TMS6_davg2, // 4-Way SIMD Average, Signed, Packed 16-bit
5944TMS6_davgnr2, // 4-Way SIMD Average Without Rounding, Signed Packed 16-bit
5945TMS6_davgnru4, // 8-Way SIMD Average Without Rounding, Unsigned Packed 8-bit
5946TMS6_davgu4, // 8-Way SIMD Average, Unsigned Packed 8-bit
5947TMS6_dccmpy, // 2-Way SIMD Complex Multiply With Conjugate, Packed Complex Signed 16-bit (16-bit Real/16-bit Imaginary)
5948TMS6_dccmpyr1, // 2-Way SIMD Complex Multiply With Conjugate and Rounding, Packed Complex 16-bit (16-bit Real/16-bit Imaginary)
5949TMS6_dcmpeq2, // 2-Way SIMD Compare If Equal, Packed 16-bit
5950TMS6_dcmpeq4, // 4-Way SIMD Compare If Equal, Packed 8-bit
5951TMS6_dcmpgt2, // 2-Way SIMD Compare If Greater-Than, Packed 16-bit
5952TMS6_dcmpgtu4, // 4-Way SIMD Compare If Greater-Than, Unsigned Packed 8-bit
5953TMS6_dcmpy, // 2-Way SIMD Complex Multiply, Packed Complex 16-bit (16-bit Real/16-bit Imaginary)
5954TMS6_dcmpyr1, // 2-Way SIMD Complex Multiply With Rounding, Packed Complex 16-bit (16-bit Real/16-bit Imaginary)
5955TMS6_dcrot270, // 2-Way SIMD Rotate Complex Number By 270 Degrees, Packed Complex 16-bit (16-bit Real/16-bit Imaginary)
5956TMS6_dcrot90, // 2-Way SIMD Rotate Complex Number By 90 Degrees, Packed Complex 16-bit (16-bit Real/16-bit Imaginary)
5957TMS6_dinthspu, // 2-Way SIMD Convert 16-bit Unsigned Integer to Single Precision Floating Point
5958TMS6_dintspu, // 2-Way SIMD Convert 32-bit Unsigned Integer to Single Precision Floating Point, Packed Unsigned 32-bit
5959TMS6_dmax2, // 2-Way SIMD Maximum, Packed Signed 16-bit
5960TMS6_dmaxu4, // 4-Way SIMD Maximum, Packed Unsigned 8-bit
5961TMS6_dmin2, // 2-Way SIMD Minimum, Packed Signed 16-bit
5962TMS6_dminu4, // 4-Way SIMD Minimum, Packed Unsigned 8-bit
5963TMS6_dmpy2, // 4-Way SIMD Multiply, Packed Signed 16-bit
5964TMS6_dmpysp, // 2-Way SIMD Multiply, Packed Single Precision Floating Point
5965TMS6_dmpysu4, // 4-Way SIMD Multiply Signed By Unsigned, Packed 8-bit
5966TMS6_dmpyu2, // 4-Way SIMD Multiply Unisgned by Unsigned, Packed 16-bit
5967TMS6_dmpyu4, // 4-Way SIMD Multiply Unsigned By Unsigned, Packed 8-bit
5968TMS6_dmvd, // Move Two Independent Registers to a Register Pair, Delayed
5969TMS6_dpackh2, // 2-Way SIMD Pack 16 MSBs Into Upper and Lower Register Halves
5970TMS6_dpackh4, // 2-Way SIMD Pack Four High Bytes Into Four 8-Bit Halfwords
5971TMS6_dpackhl2, // 2-Way SIMD Pack 16 MSB Into Upper and 16 LSB Into Lower Register Halves
5972TMS6_dpackl2, // 2-Way SIMD Pack 16 LSBSs Into Upper and Lower Register Halves
5973TMS6_dpackl4, // 2-Way SIMD Pack Four Low Bytes Into Four 8-bit Halfwords
5974TMS6_dpacklh2, // 2-Way SIMD Pack 16 LSB Into Upper and 16 MSB Into Lower Register Halves
5975TMS6_dsadd, // 2-Way SIMD Addition With Saturation, Packed Signed 32-bit
5976TMS6_dsadd2, // 4-Way SIMD Addition with Saturation, Packed Signed 16-bit
5977TMS6_dshl, // 2-Way SIMD Shift Left, Packed Signed 32-bit
5978TMS6_dshl2, // 4-Way SIMD Shift Left, Packed Signed 16-bit
5979TMS6_dshr, // 2-Way SIMD Shift Left, Packed Signed 32-bit
5980TMS6_dshr2, // 4-Way SIMD Shift Left, Packed Signed 16-bit
5981TMS6_dshru, // 2-Way SIMD Shift Right, Packed Unsigned 32-bit
5982TMS6_dshru2, // 4-Way SIMD Shift Right, Packed Unsigned 16-bit
5983TMS6_dsmpy2, // 4-Way SIMD Multiply Signed by Signed With Left Shift and Saturation, Packed Signed 16-bit
5984TMS6_dspacku4, // 2-Way SIMD Saturate and Pack Into Unisgned Packed 8-bit
5985TMS6_dspint, // 2-Way SIMD Convert Single Precision Floating Point to Signed 32-bit Integer
5986TMS6_dspinth, // 2-Way SIMD Convert Single Precision Floating Point to Signed 16-bit Integer
5987TMS6_dssub, // 2-Way SIMD Saturating Subtract, Packed Signed 32-bit
5988TMS6_dssub2, // 4-Way SIMD Saturating Subtract, Packed Signed 16-bit
5989TMS6_dsub, // 2-Way SIMD Subtract, Packed Signed 32-bit
5990TMS6_dsub2, // 4-Way SIMD Subtract, Packed Signed 16-bit
5991TMS6_dsubsp, // 2-Way SIMD Subtract, Packed Single Precision Floating Point
5992TMS6_dxpnd2, // Expand Bits to Packed 16-bit Masks
5993TMS6_dxpnd4, // Expand Bits to Packed 8-bit Masks
5994TMS6_fadddp, // Fast Double-Precision Floating Point Add
5995TMS6_faddsp, // Fast Single-Precision Floating Point Add
5996TMS6_fmpydp, // Fast Double-Precision Floating Point Multiply
5997TMS6_fsubdp, // Fast Double-Precision Floating Point Subtract
5998TMS6_fsubsp, // Fast Single-Precision Floating Point Subtract
5999TMS6_land, // Logical AND
6000TMS6_landn, // Logical AND, One Operand Negated
6001TMS6_lor, // Logical OR
6002TMS6_mfence, // Memory Fence
6003TMS6_mpyu2, // Multiply Unsigned by Unsigned, Packed 16-bit
6004TMS6_qmpy32, // 4-Way SIMD Multiply, Packed Signed 32-bit
6005TMS6_qmpysp, // 4-Way SIMD Floating Point Multiply, Packed Single-Precision Floating Point
6006TMS6_qsmpy32r1, // 4-Way SIMD Multiply with Saturation and Rounding, Packed Signed 32-bit
6007TMS6_shl2, // 2-Way SIMD Shift Left, Packed Signed 16-bit
6008TMS6_unpkbu4, // Unpack All Unsigned Packed 8-bit to Unsigned Packed 16-bit
6009TMS6_unpkh2, // Unpack High Signed Packed 16-bit to Packed 32-bit
6010TMS6_unpkhu2, // Unpack High Unsigned Packed 16-bit to Packed 32-bit
6011TMS6_fphead, // Special fake instruction to show the fetch packet header
6013 };
6014/*
6015 * Interactive disassembler (IDA).
6016 * Intel 80196 module
6017 *
6018 */
6019enum
6020{
6021 I196_null = 0, // Unknown Operation
6022 I196_add2, // Add words (2 operands)
6023 I196_add3, // Add words (3 operands)
6024 I196_addb2, // Add bytes (2 operands)
6025 I196_addb3, // Add bytes (3 operands)
6026 I196_addc, // Add words with carry
6027 I196_addcb, // Add bytes with carry
6028 I196_and2, // Logical AND words (2 operands)
6029 I196_and3, // Logical AND words (3 operands)
6030 I196_andb2, // Logical AND bytes (2 operands)
6031 I196_andb3, // Logical AND bytes (3 operands)
6032 I196_bmov, // Block move
6033 I196_bmovi, // Interruptable block move
6034 I196_br, // Branch indirect
6035 I196_clr, // Clear word
6036 I196_clrb, // Clear byte
6037 I196_clrc, // Clear carry flag
6038 I196_clrvt, // Clear overflow-trap flag
6039 I196_cmp, // Compare words
6040 I196_cmpb, // Compare bytes
6041 I196_cmpl, // Compare long
6042 I196_dec, // Decrement word
6043 I196_decb, // Decrement byte
6044 I196_di, // Disable interrupts
6045 I196_div, // Divide integers
6046 I196_divb, // Divide short-integers
6047 I196_divu, // Divide words, unsigned
6048 I196_divub, // Divide bytes, unsigned
6049 I196_djnz, // Decrement and jump if not zero
6050 I196_djnzw, // Decrement and jump if not zero word
6051 I196_dpts, // Disable peripheral transaction server
6052 I196_ei, // Enable interrupts
6053 I196_epts, // Enable peripheral transaction server
6054 I196_ext, // Sign-extend integer into long-integer
6055 I196_extb, // Sign-extend short-integer into integer
6056 I196_idlpd, // Idle/powerdown
6057 I196_inc, // Increment word
6058 I196_incb, // Increment byte
6059 I196_jbc, // Jump if bit is clear
6060 I196_jbs, // Jump if bit is set
6061 I196_jc, // Jump if carry flag is set
6062 I196_je, // Jump if equal
6063 I196_jge, // Jump if signed greater than or equal
6064 I196_jgt, // Jump if signed greater than
6065 I196_jh, // Jump if higher (unsigned)
6066 I196_jle, // Jump if signed less than or equal
6067 I196_jlt, // Jump if signed less than
6068 I196_jnc, // Jump if carry flag is clear
6069 I196_jne, // Jump if not equal
6070 I196_jnh, // Jump if not higher (unsigned)
6071 I196_jnst, // Jump if sticky bit flag is clear
6072 I196_jnv, // Jump if overflow flag is clear
6073 I196_jnvt, // Jump if overflow-trap flag is clear
6074 I196_jst, // Jump if sticky bit flag is set
6075 I196_jv, // Jump if overflow flag is set
6076 I196_jvt, // Jump if overflow-trap flag is set
6077 I196_lcall, // Long call
6078 I196_ld, // Load word
6079 I196_ldb, // Load byte
6080 I196_ldbse, // Load byte sign-extended
6081 I196_ldbze, // Load byte zero-extended
6082 I196_ljmp, // Long jump
6083 I196_mul2, // Multiply integers (2 operands)
6084 I196_mul3, // Multiply integers (3 operands)
6085 I196_mulb2, // Multiply short-integers (2 operands)
6086 I196_mulb3, // Multiply short-integers (3 operands)
6087 I196_mulu2, // Multiply words, unsigned (2 operands)
6088 I196_mulu3, // Multiply words, unsigned (3 operands)
6089 I196_mulub2, // Multiply bytes, unsigned (2 operands)
6090 I196_mulub3, // Multiply bytes, unsigned (3 operands)
6091 I196_neg, // Negate integer
6092 I196_negb, // Negate short-integer
6093 I196_nop, // No operation
6094 I196_norml, // Normalize long-integer
6095 I196_not, // Complement word
6096 I196_notb, // Complement byte
6097 I196_or, // Logical OR words
6098 I196_orb, // Logical OR bytes
6099 I196_pop, // Pop word
6100 I196_popa, // Pop all
6101 I196_popf, // Pop flags
6102 I196_push, // Push word
6103 I196_pusha, // Push all
6104 I196_pushf, // Push flags
6105 I196_ret, // Return from subroutine
6106 I196_rst, // Reset system
6107 I196_scall, // Short call
6108 I196_setc, // Set carry flag
6109 I196_shl, // Shift word left
6110 I196_shlb, // Shift byte left
6111 I196_shll, // Shift double-word left
6112 I196_shr, // Logical right shift word
6113 I196_shra, // Arithmetic right shift word
6114 I196_shrab, // Arithmetic right shift byte
6115 I196_shral, // Arithmetic right shift double-word
6116 I196_shrb, // Logical right shift byte
6117 I196_shrl, // Logical right shift double-word
6118 I196_sjmp, // Short jump
6119 I196_skip, // Two byte no-operation
6120 I196_st, // Store word
6121 I196_stb, // Store byte
6122 I196_sub2, // Subtract words (2 operands)
6123 I196_sub3, // Subtract words (3 operands)
6124 I196_subb2, // Subtract bytes (2 operands)
6125 I196_subb3, // subtract bytes (3 operands)
6126 I196_subc, // Subtract words with borrow
6127 I196_subcb, // Subtract bytes with borrow
6128 I196_tijmp, // Table indirect jump
6129 I196_trap, // Software trap
6130 I196_xch, // Exchange word
6131 I196_xchb, // Exchange byte
6132 I196_xor, // Logical exclusive-or words
6133 I196_xorb, // Logical exclusive-or bytes
6134// 8x196NU, NP instructions
6135 I196_ebmovi, // Extended interruptable block move
6136 I196_ebr, // Extended branch indirect
6137 I196_ecall, // Extended call
6138 I196_ejmp, // Extended jump
6139 I196_eld, // Extended load word
6140 I196_eldb, // Extended load byte
6141 I196_est, // Extended store word
6142 I196_estb, // Extended store byte
6143// 8x6x specific instructions
6152};
6153/*
6154 * Interactive disassembler (IDA).
6155 * Copyright (c) 1990-2026 Hex-Rays
6156 * ALL RIGHTS RESERVED.
6157 *
6158 * Renesas SuperH - RISC with 16bit instructions
6159 *
6160 */
6161enum
6162{
6163SH3_null = 0, // Unknown Operation
6164SH3_add, // Add binary
6165SH3_addc, // Add with Carry
6166SH3_addv, // Add with V Flag Overflow Check
6167SH3_and, // AND Logical
6168SH3_and_b, // AND Byte Logical
6169SH3_bf, // Branch if False
6170SH3_bf_s, // Branch of False with Delay Slot
6171SH3_bra, // Branch
6172SH3_braf, // Branch Far
6173SH3_bsr, // Branch to Subroutine
6174SH3_bsrf, // Branch to Subroutine Far
6175SH3_bt, // Branch if True
6176SH3_bt_s, // Branch if True with Delay Slot
6177SH3_clrmac, // Clear MAC register
6178SH3_clrs, // Clear S Bit
6179SH3_clrt, // Clear T Bit
6180SH3_cmp_eq, // Compare: Equal
6181SH3_cmp_ge, // Compare: Signed Greater or Equal
6182SH3_cmp_gt, // Compare: Signed Greater
6183SH3_cmp_hi, // Compare: Unsigned Greater
6184SH3_cmp_hs, // Compare: Unsigned Greater or Equal
6185SH3_cmp_pl, // Compare: Positive
6186SH3_cmp_pz, // Compare: Positive or Zero
6187SH3_cmp_str, // Compare: Equal Bytes
6188SH3_div0s, // Divide Step 0 as Signed
6189SH3_div0u, // Divide Step 0 as Unsigned
6190SH3_div1, // Divide Step 1
6191SH3_dmuls_l, // Double-Length Multiply as Signed
6192SH3_dmulu_l, // Double-Length Multiply as Unsigned
6193SH3_dt, // Decrement and Test
6194SH3_exts_b, // Extend as Signed (Byte)
6195SH3_exts_w, // Extend as Signed (Word)
6196SH3_extu_b, // Extend as Unsigned (Byte)
6197SH3_extu_w, // Extend as Unsigned (Word)
6198SH3_jmp, // Jump
6199SH3_jsr, // Jump to Subroutine
6200SH3_ldc, // Load to Control Register
6201SH3_ldc_l, // Load to Control Register Long
6202SH3_lds, // Load to System Register
6203SH3_lds_l, // Load to System Register Long
6204SH3_ldtlb, // Load PTEH/PTEL/PTEA to TLB
6205SH3_mac_w, // Multiply and Accumulate Word
6206SH3_mac_l, // Multiply and Accumulate Long
6207SH3_mov, // Move Data
6208SH3_mov_b, // Move Byte Data
6209SH3_mov_w, // Move Word Data
6210SH3_mov_l, // Move Long Data
6211SH3_movi, // Move Immediate Byte Data
6212SH3_movi_w, // Move Immediate Word Data
6213SH3_movi_l, // Move Immediate Long Data
6214SH3_movp_b, // Move Peripherial Byte Data
6215SH3_movp_w, // Move Peripherial Word Data
6216SH3_movp_l, // Move Peripherial Long Data
6217SH3_movs_b, // Move Structure Byte Data
6218SH3_movs_w, // Move Structure Word Data
6219SH3_movs_l, // Move Structure Long Data
6220SH3_mova, // Move Effective Address
6221SH3_movt, // Move T Bit
6222SH3_mul, // Multiply Long
6223SH3_muls, // Multiply as Signed Word
6224SH3_mulu, // Multiply as Unsigned Word
6225SH3_neg, // Negate
6226SH3_negc, // Negate with Carry
6227SH3_nop, // No Operation
6228SH3_not, // NOT - Logical Complement
6229SH3_or, // OR Logical
6230SH3_or_b, // OR Byte Logical
6231SH3_pref, // Prefetch Data to the Cache
6232SH3_rotcl, // Rotate with Carry Left
6233SH3_rotcr, // Rotate with Carry Right
6234SH3_rotl, // Rotate Left
6235SH3_rotr, // Rotate Right
6236SH3_rte, // Return from Exception
6237SH3_rts, // Return from Subroutine
6238SH3_sets, // Set S Bit
6239SH3_sett, // Set T Bit
6240SH3_shad, // Shift Arithmetic Dynamically
6241SH3_shal, // Shift Arithmetic Left
6242SH3_shar, // Shift Arithmetic Right
6243SH3_shld, // Shift Logical Dynamically
6244SH3_shll, // Shift Logical Left
6245SH3_shll2, // Shift Logical Left 2
6246SH3_shll8, // Shift Logical Left 8
6247SH3_shll16, // Shift Logical Left 16
6248SH3_shlr, // Shift Logical Right
6249SH3_shlr2, // Shift Logical Right 2
6250SH3_shlr8, // Shift Logical Right 8
6251SH3_shlr16, // Shift Logical Right 16
6252SH3_sleep, // Sleep
6253SH3_stc, // Store Control Register
6254SH3_stc_l, // Store Control Register Long
6255SH3_sts, // Store System Register
6256SH3_sts_l, // Store System Register Long
6257SH3_sub, // Subtract Binary
6258SH3_subc, // Subtract with Carry
6259SH3_subv, // Subtract with V Flag Underflow Check
6260SH3_swap_b, // Swap Register Halves (Byte)
6261SH3_swap_w, // Swap Register Halves (Word)
6262SH3_tas_b, // Test and Set
6263SH3_trapa, // Trap Always
6264SH3_tst, // Test Logical
6265SH3_tst_b, // Test Byte Logical
6266SH3_xor, // Exclusive OR Logical
6267SH3_xor_b, // Exclusive OR Byte Logical
6268SH3_xtrct, // Extract
6269SH4_fabs, // Floating-point absolute value
6270SH4_fadd, // Floating-point add
6271SH4_fcmp_eq, // Floating-point compare eqaul
6272SH4_fcmp_gt, // Floating-point compare greater than
6273SH4_fcnvds, // Floating-point convert double to single precision
6274SH4_fcnvsd, // Floating-point convert single to double precision
6275SH4_fdiv, // Floating-point divide
6276SH4_fipr, // Floating-point inner product
6277SH4_fldi0, // Floating-point Load Immediate 0.0
6278SH4_fldi1, // Floating-point Load Immediate 1.0
6279SH4_flds, // Floating-point Load to system register
6280SH4_float, // Floating-point convert from integer
6281SH4_fmac, // Floating-point multiply and accumulate
6282SH4_fmov, // Floating-point move
6283SH4_fmov_s, // Floating-point move single precision
6284SH4_fmovex, // Floating-point move extension
6285SH4_fmul, // Floating-point multiply
6286SH4_fneg, // Floating-Point sign inversion
6287SH4_frchg, // FR-bit change
6288SH4_fschg, // SZ-bit change
6289SH4_fsqrt, // Floating-point square root
6290SH4_fsts, // Floating-point store system register
6291SH4_fsub, // Floating-point subtract
6292SH4_ftrc, // Floating-point truncate and convert to integer
6293SH4_ftrv, // Floating-point transform vector
6294SH4_ftstn, // Floating point square root reciprocal approximate
6295SH4_movca_l, // Move with cache block allocation
6296SH4_ocbi, // Operand Cache Block Invalidate
6297SH4_ocbp, // Operand Cache Block Purge
6298SH4_ocbwb, // Operand Cache Block Write Back
6299SH4_fsca, // Floating point sine and cosine approximate
6300// SH-2a new instructions
6301SH2a_band_b, // Bit And Byte Data
6302SH2a_bandnot_b, // Bit And Not Byte Data
6303SH2a_bclr, // Bit Clear
6304SH2a_bclr_b, // Bit Clear Byte Data
6305SH2a_bld, // Bit Load
6306SH2a_bld_b, // Bit Load Byte Data
6307SH2a_bldnot_b, // Bit Load Not Byte Data
6308SH2a_bor_b, // Bit Or Byte Data
6309SH2a_bornot_b, // Bit Or Not Byte Data
6310SH2a_bset, // Bit Set
6311SH2a_bset_b, // Bit Set Byte Data
6312SH2a_bst, // Bit Store
6313SH2a_bst_b, // Bit Store Byte Data
6314SH2a_bxor_b, // Bit Exclusive Or Byte Data
6315SH2a_clips_b, // Clip as Signed Byte
6316SH2a_clips_w, // Clip as Signed Word
6317SH2a_clipu_b, // Clip as Unsigned Byte
6318SH2a_clipu_w, // Clip as Unsigned Word
6319SH2a_divs, // Divide as Signed
6320SH2a_divu, // Divide as Unsigned
6321SH2a_jsr_n, // Jump to Subroutine with No delay slot
6322SH2a_ldbank, // Load Register Bank
6323SH2a_movi20, // 20-bit immediate data transfer
6324SH2a_movi20s, // 20-bit immediate data transfer, 8-bit left-shift
6325SH2a_movml_l, // Move Multi-register Lower part
6326SH2a_movmu_l, // Move Multi-register Upper part
6327SH2a_movrt, // Move Reverse T bit
6328SH2a_movu_b, // Move Structure Byte Data as Unsigned
6329SH2a_movu_w, // Move Structure Word Data as Unsigned
6330SH2a_mulr, // Multiply to Register
6331SH2a_nott, // Not T bit
6332SH2a_resbank, // Restore From Register Bank
6333SH2a_rts_n, // Return from Subroutine with No delay slot
6334SH2a_rtv_n, // Return to Value and from Subroutine with No delay slot
6335SH2a_stbank, // Store Register Bank
6336// SH-4a new instructions
6337SH4a_movco_l, // Move Conditional
6338SH4a_movli_l, // Move Linked
6339SH4a_movua_l, // Move Unaligned
6340SH4a_icbi, // Instruction Cache Block Invalidate
6341SH4a_prefi, // Prefetch Instruction Cache Block
6342SH4a_synco, // Synchronize Data Operation
6343SH4a_fsrra, // Floating Point Square Reciprocal Approximate
6344SH4a_fpchg, // PR-bit Change
6346 };
6347/*
6348 * Interactive disassembler (IDA).
6349 * Zilog Z8 module
6350 *
6351 */
6352enum
6353{
6354 Z8_null = 0, // Unknown Operation
6355 Z8_adc, // Add with carry
6356 Z8_add, // Add
6357 Z8_and, // Logical AND
6358 Z8_call, // Call procedure
6359 Z8_ccf, // Complement carry flag
6360 Z8_clr, // Clear
6361 Z8_com, // Complement
6362 Z8_cp, // Compare
6363 Z8_da, // Decimal adjust
6364 Z8_dec, // Decrement
6365 Z8_decw, // Decrement word
6366 Z8_di, // Disable interrupts
6367 Z8_djnz, // Decrement and jump if non-zero
6368 Z8_ei, // Enable interrupts
6369 Z8_halt, // Enter HALT mode
6370 Z8_inc, // Increment
6371 Z8_incw, // Increment word
6372 Z8_iret, // Return from interrupt
6373 Z8_jp, // Unconditional jump
6374 Z8_jpcond, // Conditional jump
6375 Z8_jr, // Relative jump
6376 Z8_jrcond, // Conditional relative jump
6377 Z8_ld, // Load data
6378 Z8_ldc, // Load constant
6379 Z8_ldci, // Load constant with auto-increment
6380 Z8_lde, // Load external data
6381 Z8_ldei, // Load external data with auto-increment
6382 Z8_nop, // NOP
6383 Z8_or, // Logical OR
6384 Z8_pop, // Pop
6385 Z8_push, // Push
6386 Z8_rcf, // Reset carry flag
6387 Z8_ret, // Return
6388 Z8_rl, // Rotate left
6389 Z8_rlc, // Rotate left through carry
6390 Z8_rr, // Rotate right
6391 Z8_rrc, // Rotate right through carry
6392 Z8_sbc, // Subtract with carry
6393 Z8_scf, // Set carry flag
6394 Z8_sra, // Shift right arithmetic
6395 Z8_srp, // Set register pointer
6396 Z8_stop, // Enter STOP mode
6397 Z8_sub, // Subtract
6398 Z8_swap, // Swap nibbles
6399 Z8_tm, // Test under mask
6400 Z8_tcm, // Test complement under mask
6401 Z8_xor, // Logical EXCLUSIVE OR
6402 Z8_wdh, // Enable WATCH-DOG in HALT mode
6403 Z8_wdt, // Clear WATCH-DOG timer
6405};
6406/*
6407 * Interactive disassembler (IDA).
6408 * Copyright (c) 1990-2026 Hex-Rays
6409 * ALL RIGHTS RESERVED.
6410 *
6411 * Atmel AVR - 8-bit RISC processor
6412 *
6413 */
6414enum
6415{
6416AVR_null = 0, // Unknown Operation
6417// ARITHMETIC AND LOGIC INSTRUCTIONS
6418AVR_add, // Add without Carry
6419AVR_adc, // Add with Carry
6420AVR_adiw, // Add Immediate to Word
6421AVR_sub, // Subtract without Carry
6422AVR_subi, // Subtract Immediate
6423AVR_sbc, // Subtract with Carry
6424AVR_sbci, // Subtract Immediate with Carry
6425AVR_sbiw, // Subtract Immediate from Word
6426AVR_and, // Logical AND
6427AVR_andi, // Logical AND with Immediate
6428AVR_or, // Logical OR
6429AVR_ori, // Logical OR with Immediate
6430AVR_eor, // Exclusive OR
6431AVR_com, // One's Complement
6432AVR_neg, // Two's Complement
6433AVR_sbr, // Set Bit(s) in Register
6434AVR_cbr, // Clear Bit(s) in Register
6435AVR_inc, // Increment
6436AVR_dec, // Decrement
6437AVR_tst, // Test for Zero or Minus
6438AVR_clr, // Clear Register
6439AVR_ser, // Set Register
6440AVR_cp, // Compare
6441AVR_cpc, // Compare with Carry
6442AVR_cpi, // Compare with Immediate
6443AVR_mul, // Multiply
6444// BRANCH INSTRUCTIONS
6445AVR_rjmp, // Relative Jump
6446AVR_ijmp, // Indirect Jump to (Z)
6447AVR_jmp, // Jump
6448AVR_rcall, // Relative Call Subroutine
6449AVR_icall, // Indirect Call to (Z)
6450AVR_call, // Call Subroutine
6451AVR_ret, // Subroutine Return
6452AVR_reti, // Interrupt Return
6453AVR_cpse, // Compare, Skip if Equal
6454AVR_sbrc, // Skip if Bit in Register Cleared
6455AVR_sbrs, // Skip if Bit in Register Set
6456AVR_sbic, // Skip if Bit in I/O Register Cleared
6457AVR_sbis, // Skip if Bit in I/O Register Set
6458AVR_brbs, // Branch if Status Flag Set
6459AVR_brbc, // Branch if Status Flag Cleared
6460AVR_breq, // Branch if Equal
6461AVR_brne, // Branch if Not Equal
6462AVR_brcs, // Branch if Carry Set
6463AVR_brcc, // Branch if Carry Cleared
6464AVR_brsh, // Branch if Same or Higher
6465AVR_brlo, // Branch if Lower
6466AVR_brmi, // Branch if Minus
6467AVR_brpl, // Branch if Plus
6468AVR_brge, // Branch if Greater or Equal
6469AVR_brlt, // Branch if Less Than
6470AVR_brhs, // Branch if Half Carry Flag Set
6471AVR_brhc, // Branch if Half Carry Flag Cleared
6472AVR_brts, // Branch if T Flag Set
6473AVR_brtc, // Branch if T Flag Cleared
6474AVR_brvs, // Branch if Overflow Flag is Set
6475AVR_brvc, // Branch if Overflow Flag is Cleared
6476AVR_brie, // Branch if Interrupt Enabled
6477AVR_brid, // Branch if Interrupt Disabled
6478// DATA TRANSFER INSTRUCTIONS
6479AVR_mov, // Copy Register
6480AVR_ldi, // Load Immediate
6481AVR_lds, // Load Direct
6482AVR_ld, // Load Indirect
6483AVR_ldd, // Load Indirect with Displacement
6484AVR_sts, // Store Direct to SRAM
6485AVR_st, // Store Indirect
6486AVR_std, // Store Indirect with Displacement
6487AVR_lpm, // Load Program Memory
6488AVR_in, // In Port
6489AVR_out, // Out Port
6490AVR_push, // Push Register on Stack
6491AVR_pop, // Pop Register from Stack
6492// BIT AND BIT-TEST INSTRUCTIONS
6493AVR_lsl, // Logical Shift Left
6494AVR_lsr, // Logical Shift Right
6495AVR_rol, // Rotate Left Through Carry
6496AVR_ror, // Rotate Right Through Carry
6497AVR_asr, // Arithmetic Shift Right
6498AVR_swap, // Swap Nibbles
6499AVR_bset, // Flag Set
6500AVR_bclr, // Flag Clear
6501AVR_sbi, // Set Bit in I/O Register
6502AVR_cbi, // Clear Bit in I/O Register
6503AVR_bst, // Bit Store from Register to T
6504AVR_bld, // Bit load from T to Register
6505AVR_sec, // Set Carry
6506AVR_clc, // Clear Carry
6507AVR_sen, // Set Negative Flag
6508AVR_cln, // Clear Negative Flag
6509AVR_sez, // Set Zero Flag
6510AVR_clz, // Clear Zero Flag
6511AVR_sei, // Global Interrupt Enable
6512AVR_cli, // Global Interrupt Disable
6513AVR_ses, // Set Signed Test Flag
6514AVR_cls, // Clear Signed Test Flag
6515AVR_sev, // Set Two's Complement Overflow
6516AVR_clv, // Clear Two's Complement Overflow
6517AVR_set, // Set T in SREG
6518AVR_clt, // Clear T in SREG
6519AVR_seh, // Set Half Carry Flag in SREG
6520AVR_clh, // Clear Half Carry Flag in SREG
6521AVR_nop, // No Operation
6522AVR_sleep, // Sleep
6523AVR_wdr, // Watchdog Reset
6524// New MegaAVR instructions
6525AVR_elpm, // Extended Load Program Memory
6526AVR_espm, // Extended Store Program Memory
6527AVR_fmul, // Fractional Multiply Unsigned
6528AVR_fmuls, // Fractional Multiply Signed
6529AVR_fmulsu, // Fractional Multiply Signed with Unsigned
6530AVR_movw, // Copy Register Word
6531AVR_muls, // Multiply Signed
6532AVR_mulsu, // Multiply Signed with Unsigned
6533AVR_spm, // Store Program Memory
6534AVR_eicall, // Extended Indirect Call to Subroutine
6535AVR_eijmp, // Extended Indirect Jump
6536// New XMega instructions
6537AVR_des, // Data Encryption Standard
6538AVR_lac, // Load And Clear
6539AVR_las, // Load And Set
6540AVR_lat, // Load And Toggle
6541AVR_xch, // Exchange
6543 };
6544/*
6545 * Interactive disassembler (IDA).
6546 * Copyright (c) 1990-2026 Hex-Rays
6547 * ALL RIGHTS RESERVED.
6548 *
6549 */
6550enum
6551{
6552MIPS_null = 0, // Unknown Operation
6553// The core processor instructions
6555MIPS_addu, // Add Unsigned
6557MIPS_dadd, // Doubleword Add
6558MIPS_daddu, // Doubleword Add Unsigned
6559MIPS_dsub, // Doubleword Subtract
6560MIPS_dsubu, // Doubleword Subtract Unsigned
6563MIPS_slt, // Set on Less Than
6564MIPS_sltu, // Set on Less Than Unsigned
6565MIPS_sub, // Subtract
6566MIPS_subu, // Subtract Unsigned
6567MIPS_xor, // Exclusive OR
6568MIPS_dsll, // Doubleword Shift Left Logical
6569MIPS_dsll32, // Doubleword Shift Left Logical + 32
6570MIPS_dsra, // Doubleword Shift Right Arithmetic
6571MIPS_dsra32, // Doubleword Shift Right Arithmetic + 32
6572MIPS_dsrl, // Doubleword Shift Right Logical
6573MIPS_dsrl32, // Doubleword Shift Right Logical + 32
6574MIPS_sll, // Shift Left Logical
6575MIPS_sra, // Shift Right Arithmetic
6576MIPS_srl, // Shift Right Logical
6577MIPS_dsllv, // Doubleword Shift Left Logical Variable
6578MIPS_dsrav, // Doubleword Shift Right Arithmetic Variable
6579MIPS_dsrlv, // Doubleword Shift Right Logical Variable
6580MIPS_sllv, // Shift Left Logical Variable
6581MIPS_srav, // Shift Right Arithmetic Variable
6582MIPS_srlv, // Shift Right Logical Variable
6583MIPS_addi, // Add Immediate
6584MIPS_addiu, // Add Immediate Unsigned
6585MIPS_daddi, // Doubleword Add Immediate
6586MIPS_daddiu, // Doubleword Add Immediate Unsigned
6587MIPS_slti, // Set on Less Than Immediate
6588MIPS_sltiu, // Set on Less Than Immediate Unsigned
6589MIPS_andi, // AND Immediate
6590MIPS_ori, // OR Immediate
6591MIPS_xori, // Exclusive OR Immediate
6592MIPS_teq, // Trap if Equal
6593MIPS_tge, // Trap if Greater Than or Equal
6594MIPS_tgeu, // Trap if Greater Than or Equal Unsigned
6595MIPS_tlt, // Trap if Less Than
6596MIPS_tltu, // Trap if Less Than Unsigned
6597MIPS_tne, // Trap if Not Equal
6598MIPS_cfc1, // Move Control From FPU
6599MIPS_cfc2, // Move Control From Coprocessor 2
6600MIPS_ctc1, // Move Control to FPU
6601MIPS_ctc2, // Move Control to Coprocessor 2
6602MIPS_dmfc0, // Doubleword Move From CP0
6603MIPS_qmfc2, // Quadword Move From CP2
6604MIPS_dmtc0, // Doubleword Move To CP0
6605MIPS_qmtc2, // Quadword Move To CP2
6606MIPS_mfc0, // Move from CP0
6607MIPS_mfc1, // Move from FPU
6608MIPS_mfc2, // Move from CP2
6609MIPS_mtc0, // Move to CP0
6610MIPS_mtc1, // Move to FPU
6611MIPS_mtc2, // Move to CP2
6612MIPS_teqi, // Trap if Equal Immediate
6613MIPS_tgei, // Trap if Greater Than or Equal Immediate
6614MIPS_tgeiu, // Trap if Greater Than or Equal Immediate Unsigned
6615MIPS_tlti, // Trap if Less Than Immediate
6616MIPS_tltiu, // Trap if Less Than Immediate Unsigned
6617MIPS_tnei, // Trap if Not Equal Immediate
6618MIPS_ddiv, // Doubleword Divide
6619MIPS_ddivu, // Doubleword Divide Unsigned
6620MIPS_div, // Divide
6621MIPS_divu, // Divide Unsigned
6622MIPS_dmult, // Doubleword Multiply
6623MIPS_dmultu, // Doubleword Multiply Unsigned
6624MIPS_mult, // Multiply
6625MIPS_multu, // Multiply Unsigned
6626MIPS_mthi, // Move To HI
6627MIPS_mtlo, // Move To LO
6628MIPS_mfhi, // Move From HI
6629MIPS_mflo, // Move From LO
6630MIPS_cop0, // Coprocessor 0 Operation
6631MIPS_cop1, // FPU Operation
6632MIPS_cop2, // Coprocessor 2 Operation
6633MIPS_break, // Break
6634MIPS_syscall, // System Call
6635MIPS_bc0f, // Branch on Coprocessor 0 False
6636MIPS_bc1f, // Branch on FPU False
6637MIPS_bc2f, // Branch on Coprocessor 2 False
6638MIPS_bc3f, // Branch on Coprocessor 3 False
6639MIPS_bc0fl, // Branch on Coprocessor 0 False Likely
6640MIPS_bc1fl, // Branch on FPU False Likely
6641MIPS_bc2fl, // Branch on Coprocessor 2 False Likely
6642MIPS_bc3fl, // Branch on Coprocessor 3 False Likely
6643MIPS_bc0t, // Branch on Coprocessor 0 True
6644MIPS_bc1t, // Branch on FPU True
6645MIPS_bc2t, // Branch on Coprocessor 2 True
6646MIPS_bc3t, // Branch on Coprocessor 3 True
6647MIPS_bc0tl, // Branch on Coprocessor 0 True Likely
6648MIPS_bc1tl, // Branch on FPU True Likely
6649MIPS_bc2tl, // Branch on Coprocessor 2 True Likely
6650MIPS_bc3tl, // Branch on Coprocessor 3 True Likely
6651MIPS_bgez, // Branch on Greater Than or Equal to Zero
6652MIPS_bgezal, // Branch on Greater Than or Equal to Zero And Link
6653MIPS_bgezall, // Branch on Greater Than or Equal to Zero And Link Likely
6654MIPS_bgezl, // Branch on Greater Than or Equal to Zero Likely
6655MIPS_bgtz, // Branch on Greater Than Zero
6656MIPS_bgtzl, // Branch on Greater Than Zero Likely
6657MIPS_blez, // Branch on Less Than or Equal to Zero
6658MIPS_blezl, // Branch on Less Than or Equal to Zero Likely
6659MIPS_bltz, // Branch on Less Than Zero
6660MIPS_bltzal, // Branch on Less Than Zero And Link
6661MIPS_bltzall, // Branch on Less Than Zero And Link Likely
6662MIPS_bltzl, // Branch on Less Than Zero Likely
6663MIPS_beq, // Branch on Equal
6664MIPS_beql, // Branch on Equal Likely
6665MIPS_bne, // Branch on Not Equal
6666MIPS_bnel, // Branch on Not Equal Likely
6667MIPS_jalr, // Jump And Link Register
6668MIPS_j, // Jump
6669MIPS_jr, // Jump Register
6670MIPS_jal, // Jump And Link
6671MIPS_jalx, // Jump And Link And Exchange
6672MIPS_cache, // Cache Operation
6673MIPS_lb, // Load Byte
6674MIPS_lbu, // Load Byte Unsigned
6675MIPS_ldl, // Load Doubleword Left
6676MIPS_ldr, // Load Doubleword Right
6677MIPS_lwl, // Load Word Left
6678MIPS_lwr, // Load Word Right
6679MIPS_ld, // Load Doubleword
6680MIPS_lld, // Load Linked Doubleword
6681MIPS_ldc1, // Load Double FPU
6682MIPS_ldc2, // Load Double Coprocessor 2
6683MIPS_ll, // Load Linked
6684MIPS_lw, // Load Word
6685MIPS_lwu, // Load Word Unsigned
6686MIPS_lh, // Load Halfword
6687MIPS_lhu, // Load Halfword Unsigned
6688MIPS_lui, // Load Upper Immediate
6689MIPS_lwc1, // Load Word to FPU
6690MIPS_lwc2, // Load Word to Coprocessor 2
6691MIPS_sb, // Store Byte
6692MIPS_sdl, // Store Doubleword Left
6693MIPS_sdr, // Store Doubleword Right
6694MIPS_swl, // Store Word Left
6695MIPS_swr, // Store Word Right
6696MIPS_scd, // Store Conditional Doubleword
6697MIPS_sd, // Store Doubleword
6698MIPS_sdc1, // Store Double FPU
6699MIPS_sdc2, // Store Double Coprocessor 2
6700MIPS_sc, // Store Conditional
6701MIPS_sw, // Store Word
6702MIPS_sh, // Store Halfword
6703MIPS_swc1, // Store Word from FPU
6704MIPS_swc2, // Store Word from Coprocessor 2
6706// Coprocessor 0 instructions
6707MIPS_eret, // Exception Return
6708MIPS_tlbp, // Probe TLB for Matching Entry
6709MIPS_tlbr, // Read Indexed TLB Entry
6710MIPS_tlbwi, // Write Indexed TLB Entry
6711MIPS_tlbwr, // Write Random TLB Entry
6712// Coprocessor 1 (FPU) instructions
6713MIPS_fadd, // Floating-point Add
6714MIPS_fsub, // Floating-point Subtract
6715MIPS_fmul, // Floating-point Multiply
6716MIPS_fdiv, // Floating-point Divide
6717MIPS_fabs, // Floating-point Absolute Value
6718MIPS_fcvt_s, // Floating-point Convert to Single Fixed-Point Format
6719MIPS_fcvt_d, // Floating-point Convert to Double Floating-Point Format
6720MIPS_fcvt_w, // Floating-point Convert to Fixed-Point Format
6721MIPS_fcvt_l, // Floating-point Convert to Long Fixed-Point Format
6722MIPS_fround_l, // Floating-point Round to Long Fixed-Point Format
6723MIPS_ftrunc_l, // Floating-point Truncate to Long Fixed-Point Format
6724MIPS_fceil_l, // Floating-point Ceiling to Long Fixed-Point Format
6725MIPS_ffloor_l, // Floating-point Floor to Long Fixed-Point Format
6726MIPS_fround_w, // Floating-point Round to Single Fixed-Point Format
6727MIPS_ftrunc_w, // Floating-point Truncate to Single Fixed-Point Format
6728MIPS_fceil_w, // Floating-point Ceiling to Single Fixed-Point Format
6729MIPS_ffloor_w, // Floating-point Floor to Single Fixed-Point Format
6730MIPS_fmov, // Floating-point Move
6731MIPS_fneg, // Floating-point Negate
6732MIPS_fsqrt, // Floating-point Square Root
6733MIPS_fc_f, // Floating-point Compare
6734MIPS_fc_un, // Floating-point Compare
6735MIPS_fc_eq, // Floating-point Compare
6736MIPS_fc_ueq, // Floating-point Compare
6737MIPS_fc_olt, // Floating-point Compare
6738MIPS_fc_ult, // Floating-point Compare
6739MIPS_fc_ole, // Floating-point Compare
6740MIPS_fc_ule, // Floating-point Compare
6741MIPS_fc_sf, // Floating-point Compare
6742MIPS_fc_ngle, // Floating-point Compare
6743MIPS_fc_seq, // Floating-point Compare
6744MIPS_fc_ngl, // Floating-point Compare
6745MIPS_fc_lt, // Floating-point Compare
6746MIPS_fc_nge, // Floating-point Compare
6747MIPS_fc_le, // Floating-point Compare
6748MIPS_fc_ngt, // Floating-point Compare
6749// Pseudo instructions
6750MIPS_nop, // No operation
6751MIPS_mov, // Move register
6752MIPS_neg, // Negate
6753MIPS_negu, // Negate Unsigned
6754MIPS_bnez, // Branch on Not Zero
6755MIPS_bnezl, // Branch on Not Zero Likely
6756MIPS_beqz, // Branch on Zero
6757MIPS_beqzl, // Branch on Zero Likely
6758MIPS_b, // Branch Always
6759MIPS_bal, // Branch Always and Link
6760MIPS_li, // Load Immediate
6761MIPS_la, // Load Address
6762// MIPS IV instructions
6763MIPS_pref, // Prefetch
6764MIPS_ldxc1, // Load Doubleword Indexed to Floating Point
6765MIPS_lwxc1, // Load Word Indexed to Floating Point
6766MIPS_sdxc1, // Store Doubleword Indexed from Floating Point
6767MIPS_swxc1, // Store Word Indexed from Floating Point
6768MIPS_madd_s, // Floating-Point Multiply Add
6769MIPS_madd_d, // Floating-Point Multiply Add
6770MIPS_msub_s, // Floating-Point Multiply Subtract
6771MIPS_msub_d, // Floating-Point Multiply Subtract
6772MIPS_movf, // Move Conditional on FP False
6773MIPS_movt, // Move Conditional on FP True
6774MIPS_movn, // Move Conditional on Not Zero
6775MIPS_movz, // Move Conditional on Zero
6776MIPS_fmovf, // Floating-Point Move Conditional on FP False
6777MIPS_fmovt, // Floating-Point Move Conditional on FP True
6778MIPS_fmovn, // Floating-Point Move Conditional on Not Zero
6779MIPS_fmovz, // Floating-Point Move Conditional on Zero
6780MIPS_nmadd_s, // Floating-Pont Negative Multiply Add
6781MIPS_nmadd_d, // Floating-Pont Negative Multiply Add
6782MIPS_nmsub_s, // Floating-Pont Negative Multiply Subtract
6783MIPS_nmsub_d, // Floating-Pont Negative Multiply Subtract
6784MIPS_prefx, // Prefetch Indexed
6785MIPS_frecip, // Reciprocal Approximation
6786MIPS_frsqrt, // Reciprocal Suare Root Approximation
6787// RSP instructions
6788MIPS_lbv, // Load Byte into Vector
6789MIPS_lsv, // Load Short into Vector
6790MIPS_llv, // Load Word into Vector
6791MIPS_ldv, // Load Doubleword into Vector
6792MIPS_lqv, // Load Quadword into Vector
6793MIPS_lrv, // Load Rest Vector
6794MIPS_lpv, // Load Packed Vector
6795MIPS_luv, // Load Unpack Vector
6796MIPS_lhv, // Load Half Vector
6797MIPS_lfv, // Load Fourth Vector
6798MIPS_lwv, // Load Wrap Vector
6799MIPS_ltv, // Load Transpose Vector
6800MIPS_sbv, // Store Byte from Vector
6801MIPS_ssv, // Store Short from Vector
6802MIPS_slv, // Store Word from Vector
6803MIPS_sdv, // Store Doubleword from Vector
6804MIPS_sqv, // Store Quadword from Vector
6805MIPS_srv, // Store Rest Vector
6806MIPS_spv, // Store Packed Vector
6807MIPS_suv, // Store Unpack Vector
6808MIPS_shv, // Store Half Vector
6809MIPS_sfv, // Store Fourth Vector
6810MIPS_swv, // Store Wrap Vector
6811MIPS_stv, // Store Transpose Vector
6812MIPS_vmulf, // Vector (Frac) Multiply
6813MIPS_vmacf, // Vector (Frac) Multiply Accumulate
6814MIPS_vmulu, // Vector (Unsigned Frac) Multiply
6815MIPS_vmacu, // Vector (Unsigned Frac) Multiply Accumulate
6816MIPS_vrndp, // Vector DCT Round (+)
6817MIPS_vrndn, // Vector DCT Round (-)
6818MIPS_vmulq, // Vector (Integer) Multiply
6819MIPS_vmacq, // Vector (Integer) Multiply Accumulate
6820MIPS_vmudh, // Vector (High) Multiply
6821MIPS_vmadh, // Vector (High) Multiply Accumulate
6822MIPS_vmudm, // Vector (Mid-M) Multiply
6823MIPS_vmadm, // Vector (Mid-M) Multiply Accumulate
6824MIPS_vmudn, // Vector (Mid-N) Multiply
6825MIPS_vmadn, // Vector (Mid-N) Multiply Accumulate
6826MIPS_vmudl, // Vector (Low) Multiply
6827MIPS_vmadl, // Vector (Low) Multiply Accumulate
6828MIPS_vadd, // Vector Add
6829MIPS_vsub, // Vector Subtract
6830MIPS_vsut, // Vector SUT (vt - vs)
6831MIPS_vabs, // Vector Absolute Value
6832MIPS_vaddc, // Vector ADDC
6833MIPS_vsubc, // Vector SUBC
6834MIPS_vaddb, // Vector Add Byte
6835MIPS_vsubb, // Vector Subtract Byte
6836MIPS_vaccb, // Vector Add Byte/Add Accumulator
6837MIPS_vsucb, // Vector Subtract Byte/Add Accumulator
6838MIPS_vsad, // Vector SAD
6839MIPS_vsac, // Vector SAC
6840MIPS_vsum, // Vector SUM
6841MIPS_vsaw, // Vector SAW
6842MIPS_vlt, // Vector Less Than
6843MIPS_veq, // Vector Equal To
6844MIPS_vne, // Vector Not Equal To
6845MIPS_vge, // Vector Greater Than or Equal To
6846MIPS_vcl, // Vector Clip Low
6847MIPS_vch, // Vector Clip High
6848MIPS_vcr, // Vector 1's Complement Clip
6849MIPS_vmrg, // Vector Merge
6850MIPS_vand, // Vector Logical AND
6851MIPS_vnand, // Vector Logical NAND
6852MIPS_vor, // Vector Logical OR
6853MIPS_vnor, // Vector Logical NOR
6854MIPS_vxor, // Vector Logical Exclusive OR
6855MIPS_vnxor, // Vector Logical NOT Exclusive OR
6856MIPS_vnoop, // Vector No-Operation
6857MIPS_vmov, // Vector Scalar-Element Move
6858MIPS_vrcp, // Single Precision, Lookup Source, Write Result
6859MIPS_vrsq, // Single Precision, Lookup Source, Write Result
6860MIPS_vrcph, // Set Source, Write Previous Result
6861MIPS_vrsqh, // Set Source, Write Previous Result
6862MIPS_vrcpl, // Lookup Source and Previous, Write Result
6863MIPS_vrsql, // Lookup Source and Previous, Write Result
6864MIPS_vinst, // Vector Insert Triple (5/5/5/1)
6865MIPS_vextt, // Vector Extract Triple (5/5/5/1)
6866MIPS_vinsq, // Vector Insert Quad (4/4/4/4)
6867MIPS_vextq, // Vector Extract Quad (4/4/4/4)
6868MIPS_vinsn, // Vector Insert Nibble (4/4/4/4) Sign-Extended
6869MIPS_vextn, // Vector Insert Nibble (4/4/4/4) Sign-Extended
6870MIPS_cfc0, // Move Control From Coprocessor 0
6871MIPS_ctc0, // Move Control to Coprocessor 0
6872// R5900 (PSX2 or PlayStation2) processor additional commands
6873MIPS_mtsa, // Move To Shift Amount Register
6875MIPS_mfsa, // Move From Shift Amount Register
6876MIPS_mtsab, // Move Byte Count To Shift Amount Register
6877MIPS_mtsah, // Move Halfword Count To Shift Amount Register
6878MIPS_fadda, // Floating-point add to accumulator
6879MIPS_fsuba, // Floating-point subtract to accumulator
6880MIPS_fmula, // Floating-point multiply to accumulator
6881MIPS_fmadda, // Floating-point multiply and add to accumulator
6882MIPS_fmsuba, // Floating-point multiply and subtract from accumulator
6883MIPS_fmadd, // Floating-point multiply and add
6884MIPS_fmsub, // Floating-point multiply and subtract
6885MIPS_fmax, // Floating-point maximum
6886MIPS_fmin, // Floating-point minimum
6887MIPS_plzcw, // Parallel Leading Zero or One Count Word
6888MIPS_mthi1, // Move To HI1 Register
6889MIPS_mtlo1, // Move To LO1 Register
6890MIPS_pmthl_lw, // Parallel Move From HI/LO Register
6891MIPS_pmthi, // Parallel Move To HI Register
6892MIPS_pmtlo, // Parallel Move To LO Register
6893MIPS_div1, // Divide Pipeline 1
6894MIPS_divu1, // Divide Unsigned Pipeline 1
6895MIPS_pdivw, // Parallel Divide Word
6896MIPS_pdivuw, // Parallel Divide Unsigned Word
6897MIPS_pdivbw, // Parallel Divide Broadcast Word
6898MIPS_paddw, // Parallel Add Word
6899MIPS_pmaddw, // Parallel Multiply-Add Word
6900MIPS_mult1, // Multiply Pipeline 1
6901MIPS_multu1, // Multiply Unsigned Pipeline 1
6902MIPS_madd1, // Multiply-Add Pipeline 1
6903MIPS_maddu1, // Multiply-Add Unsigned Pipeline 1
6904MIPS_pmadduw, // Parallel Multiply-Add Unsigned Word
6905MIPS_psubw, // Parallel Subtract HalfWord
6906MIPS_pcgtw, // Parallel Compare for Greater Than Word
6907MIPS_psllvw, // Parallel Shift Left Logical Variable Word
6908MIPS_pceqw, // Parallel Compare for Equal Word
6909MIPS_pmaxw, // Parallel Maximize Word
6910MIPS_psrlvw, // Parallel Shift Right Logical Variable Word
6911MIPS_pminw, // Parallel Minimize Word
6912MIPS_psravw, // Parallel Shift Right Arithmetic Variable Word
6913MIPS_paddh, // Parallel Add Halfword
6914MIPS_pmsubw, // Parallel Multiply-Subtract Word
6915MIPS_padsbh, // Parallel Add/Subtract Halfword
6916MIPS_psubh, // Parallel Subtract Halfword
6917MIPS_pcgth, // Parallel Compare for Greater Than Halfword
6918MIPS_pceqh, // Parallel Compare for Equal Halfword
6919MIPS_pmaxh, // Parallel Maximize Halfword
6920MIPS_pminh, // Parallel Minimize Halfword
6921MIPS_paddb, // Parallel Add Byte
6922MIPS_psubb, // Parallel Subtract Byte
6923MIPS_pcgtb, // Parallel Compare for Greater Than Byte
6924MIPS_pinth, // Parallel Interleave Halfword
6925MIPS_pceqb, // Parallel Compare for Equal Byte
6926MIPS_pintoh, // Parallel Interleave Odd Halfword
6927MIPS_pmultw, // Parallel Multiply Word
6928MIPS_pmultuw, // Parallel Multiply Unsigned Word
6929MIPS_pcpyld, // Parallel Copy Lower Doubleword
6930MIPS_pcpyud, // Parallel Copy Upper Doubleword
6931MIPS_paddsw, // Parallel Add with Signed Saturation Word
6932MIPS_pmaddh, // Parallel Multiply-Add Halfword
6933MIPS_padduw, // Parallel Add with Unsigned Saturation Word
6934MIPS_psubsw, // Parallel Subtract with Signed Saturation Word
6935MIPS_phmadh, // Parallel Horizontal Multiply-Add Halfword
6936MIPS_psubuw, // Parallel Subtract with Unsigned Saturation Word
6937MIPS_pextlw, // Parallel Extend Lower from Word
6938MIPS_pand, // Parallel AND
6939MIPS_pextuw, // Parallel Extend Upper from Word
6940MIPS_por, // Parallel OR
6941MIPS_ppacw, // Paralle Pack to Word
6942MIPS_pxor, // Parallel XOR
6943MIPS_pnor, // Parallel NOR
6944MIPS_paddsh, // Parallel Add with Signed Saturation Halfword
6945MIPS_pmsubh, // Parallel Multiply-Subtract Halfword
6946MIPS_padduh, // Parallel Add with Unsigned Saturation Halfword
6947MIPS_psubsh, // Parallel Subtract with Signed Saturation Halfword
6948MIPS_phmsbh, // Parallel Horizontal Multiply-Subtract Halfword
6949MIPS_psubuh, // Parallel Subtract with Unsigned Saturation Halfword
6950MIPS_pextlh, // Parallel Extend Lower from Halfword
6951MIPS_pextuh, // Parallel Extend Upper from Halfword
6952MIPS_ppach, // Paralle Pack to Halfword
6953MIPS_paddsb, // Parallel Add with Signed Saturation Byte
6954MIPS_paddub, // Parallel Add with Unsigned Saturation Byte
6955MIPS_psubsb, // Parallel Subtract with Signed Saturation Byte
6956MIPS_psubub, // Parallel Subtract with Unsigned Saturation Byte
6957MIPS_pextlb, // Parallel Extend Lower from Byte
6958MIPS_pextub, // Parallel Extend Upper from Byte
6959MIPS_ppacb, // Paralle Pack to Byte
6960MIPS_qfsrv, // Quadword Funnel Shift Right Variable
6961MIPS_pmulth, // Parallel Multiply Halfword
6962MIPS_pabsw, // Parallel Absolute Word
6963MIPS_pabsh, // Parallel Absolute Halfword
6964MIPS_pexoh, // Parallel Exchange Odd Halfword
6965MIPS_pexch, // Parallel Exchange Center Halfword
6966MIPS_prevh, // Parallel Reverse Halfword
6967MIPS_pcpyh, // Parallel Copy Halfword
6968MIPS_pext5, // Parallel Extend Upper from 5 bits
6969MIPS_pexow, // Parallel Exchange Odd Word
6970MIPS_pexcw, // Parallel Exchange Center Word
6971MIPS_ppac5, // Parallel Pack to 5 bits
6972MIPS_prot3w, // Parallel Rotate 3 Words
6973MIPS_psllh, // Parallel Shift Left Logical Halfword
6974MIPS_psrlh, // Parallel Shift Right Logical Halfword
6975MIPS_psrah, // Parallel Shift Right Arithmetic Halfword
6976MIPS_psllw, // Parallel Shift Left Logical Word
6977MIPS_psrlw, // Parallel Shift Right Logical Word
6978MIPS_psraw, // Parallel Shift Right Arithmetic Word
6979MIPS_mfhi1, // Move From HI1 Register
6980MIPS_mflo1, // Move From LO1 Register
6981MIPS_pmfhi, // Parallel Move From HI Register
6982MIPS_pmflo, // Parallel Move From LO Register
6983MIPS_pmfhl, // Parallel Move From HI/LO Register
6984MIPS_lq, // Load Quadword
6985MIPS_sq, // Store Quadword
6986MIPS_lqc2, // Load Quadword Coprocessor 2
6987MIPS_sqc2, // Store Quadword Coprocessor 2
6988MIPS_madd_r5900, // Multiply/Add
6989MIPS_maddu_r5900, // Multiply/Add Unsigned
6991MIPS_mult3, // Multiply (3-operand)
6992MIPS_multu3, // Multiply Unsigned (3-operand)
6993// 16-bit instructions
6994// NOTE: in previous version of IDA, all mips16 instructions
6995// had separate numbers, even for the instructions with the
6996// same mnemonics. Now same mnemonics have the same numbers,
6997// regardless of the encoding.
6998MIPS_bteqz=439, // Branch on T Equal to Zero
6999MIPS_btnez, // Branch on T Not Equal to Zero
7000MIPS_cmp, // Compare
7001MIPS_cmpi, // Compare Immediate
7002MIPS_extend=458, // Extend
7003MIPS_move=473, // Move
7004MIPS_not=477, // Not
7005MIPS_dla=495, // Load 64-bit address
7006// Instructions which belong to MIPS32 but which were not decoded by IDA
7007MIPS_clo=498, // Count Leading Ones in Word
7008MIPS_clz, // Count Leading Zeros in Word
7009MIPS_madd, // Multiply/Add
7010MIPS_maddu, // Multiply/Add Unsigned
7011MIPS_msub, // Multiply and Subtract Word to Hi,Lo
7012MIPS_msubu, // Multiply and Subtract Word to Hi,Lo
7013MIPS_mul, // Multiply Word to GPR
7014MIPS_sdbbp, // Software Debug Breakpoint
7015MIPS_wait, // Enter Standby Mode
7016// New instructions for MIPS32 Release 2.0
7017MIPS_alnv_ps, // Floating Point Align Variable
7018MIPS_deret, // Debug Exception Return
7019MIPS_di, // Disable interrupts
7020MIPS_ehb, // Execution Hazard Barrier
7021MIPS_ei, // Enable interrupts
7022MIPS_ext, // Extract Bit Field
7023MIPS_fcvt_ps, // Floating Point Convert Pair to Paired Single
7024MIPS_fcvt_s_pl, // Floating Point Convert Pair Lower to Single Floating Point
7025MIPS_fcvt_s_pu, // Floating Point Convert Pair Upper to Single Floating Point
7026MIPS_ins, // Insert Bit Field
7027MIPS_jalr_hb, // Jump and Link Register with Hazard Barrier
7028MIPS_jr_hb, // Jump Register with Hazard Barrier
7029MIPS_luxc1, // Load Doubleword Indexed Unaligned to Floating Point
7030MIPS_madd_ps, // Floating Point Multiply Add
7031MIPS_mfhc1, // Move Word from High Half of Floating Point Register
7032MIPS_mfhc2, // Move Word from High Half of Coprocessor 2 Register
7033MIPS_msub_ps, // Floating Point Multiply Subtract
7034MIPS_mthc1, // Move Word to High Half of Floating Point Register
7035MIPS_mthc2, // Move Word to High Half of Coprocessor 2 Register
7036MIPS_nmadd_ps, // Floating Point Negative Multiply Add
7037MIPS_nmsub_ps, // Floating Point Negative Multiply Subtract
7038MIPS_pll, // Pair Lower Lower
7039MIPS_plu, // Pair Lower Upper
7040MIPS_pul, // Pair Upper Lower
7041MIPS_puu, // Pair Upper Upper
7042MIPS_rdhwr, // Read Hardware Register
7043MIPS_rdpgpr, // Read GPR from Previous Shadow Set
7044MIPS_rotr, // Rotate Word Right
7045MIPS_rotrv, // Rotate Word Right Variable
7046MIPS_seb, // Sign-Extend Byte
7047MIPS_seh, // Sign-Extend Halfword
7048MIPS_suxc1, // Store Doubleword Indexed Unaligned from Floating Point
7049MIPS_synci, // Synchronize Caches to Make Instruction Writes Effective
7050MIPS_wrpgpr, // Write GPR to Previous Shadow Set
7051MIPS_wsbh, // Word Swap Bytes Within Halfwords
7052// Missing instructions - for some reason they were not supported before
7053MIPS_dmfc1, // Doubleword Move From CP1
7054MIPS_dmtc1, // Doubleword Move To CP1
7055// additional MIPS16e instructions
7056MIPS_save, // Save Registers and Set Up Stack Frame
7057MIPS_restore, // Restore Registers and Deallocate Stack Frame
7058MIPS_jalrc, // Jump and Link Register, Compact
7059MIPS_jrc, // Jump Register, Compact
7060MIPS_sew, // Sign-Extend Word
7061MIPS_zeb, // Zero-Extend Byte
7062MIPS_zeh, // Zero-Extend Halfword
7063MIPS_zew, // Zero-Extend Word
7064// extra pseudoinstructions
7065MIPS_ssnop, // Superscalar No operation
7066MIPS_li_s, // Load floating-point immediate
7067MIPS_li_d, // Load floating-point immediate
7068MIPS_dneg, // Negate
7069MIPS_dnegu, // Negate Unsigned
7070MIPS_pause, // Wait for the LLBit to clear
7071// Missing instructions from MIPS64 Release 2
7072MIPS_dclo, // Count Leading Ones in Doubleword
7073MIPS_dclz, // Count Leading Zeros in Doubleword
7074MIPS_dext, // Doubleword Extract Bit Field
7075MIPS_dextm, // Doubleword Extract Bit Field Middle
7076MIPS_dextu, // Doubleword Extract Bit Field Upper
7077MIPS_dins, // Doubleword Insert Bit Field
7078MIPS_dinsm, // Doubleword Insert Bit Field Middle
7079MIPS_dinsu, // Doubleword Insert Bit Field Upper
7080MIPS_dmfc2, // Doubleword Move From CP2
7081MIPS_dmtc2, // Doubleword Move To CP2
7082MIPS_drotr, // Doubleword Rotate Right
7083MIPS_drotr32, // Doubleword Rotate Right Plus 32
7084MIPS_drotrv, // Doubleword Rotate Right Variable
7085MIPS_dsbh, // Doubleword Swap Bytes Within Halfwords
7086MIPS_dshd, // Doubleword Swap Halfwords Within Doublewords
7087// cnMIPS (Cavium Networks Octeon) instructions
7088MIPS_baddu, // Unsigned Byte Add
7089MIPS_bbit0, // Branch on Bit Clear
7090MIPS_bbit032, // Branch on Bit Clear Plus 32
7091MIPS_bbit1, // Branch on Bit Set
7092MIPS_bbit132, // Branch on Bit Set Plus 32
7093MIPS_cins, // Clear and Insert a Bit Field
7094MIPS_cins32, // Clear and Insert a Bit Field Plus 32
7095MIPS_dmul, // Multiply Doubleword to GPR
7096MIPS_dpop, // Count Ones in a Doubleword
7097MIPS_exts, // Extract a Signed Bit Field
7098MIPS_exts32, // Extract a Signed Bit Field Plus 32
7099MIPS_mtm0, // Load Multiplier Register MPL0
7100MIPS_mtm1, // Load Multiplier Register MPL1
7101MIPS_mtm2, // Load Multiplier Register MPL2
7102MIPS_mtp0, // Load Multiplier Register P0
7103MIPS_mtp1, // Load Multiplier Register P1
7104MIPS_mtp2, // Load Multiplier Register P2
7105MIPS_pop, // Count Ones in a Word
7106MIPS_saa, // Store Atomic Add Word
7107MIPS_saad, // Store Atomic Add Double Word
7108MIPS_seq, // Set on Equal
7109MIPS_seqi, // Set on Equal Immediate
7110MIPS_sne, // Set on Not Equal
7111MIPS_snei, // Set on Not Equal Immediate
7112MIPS_synciobdma, // Synchronize IOBDMAs
7113MIPS_syncs, // Synchronize Special
7114MIPS_syncw, // Synchronize Stores
7115MIPS_syncws, // Synchronize Stores Special
7116MIPS_uld, // Unaligned Load Doubleword
7117MIPS_ulw, // Unaligned Load Word
7118MIPS_usd, // Unaligned Store Doubleword
7119MIPS_usw, // Unaligned Store Word
7120MIPS_v3mulu, // 192-bit x 64-bit Unsigned Multiply and Add
7121MIPS_vmm0, // 64-bit Unsigned Multiply and Add Move
7122MIPS_vmulu_cn, // 64-bit Unsigned Multiply and Add
7123// NEC VR5432 and PSP instructions
7124MIPS_dbreak, // Debug Break
7125MIPS_dret, // Debug Return
7126MIPS_mfdr, // Move from Debug Register
7127MIPS_mtdr, // Move to Debug Register
7128// Allegrex (Sony PSP) instructions
7129PSP_bitrev, // Bit reverse
7130PSP_max, // Maximum
7131PSP_min, // Minimum
7132PSP_mfic, // Move from interrupt controller
7133PSP_mtic, // Move to interrupt controller
7134PSP_wsbw, // Word Swap Bytes Within Word
7135PSP_sleep, // Sleep
7136// Allegrex VFPU instructions
7137PSP_lv, // Load Vector
7138PSP_lvl, // Load Vector Left
7139PSP_lvr, // Load Vector Right
7140PSP_sv, // Store Vector
7141PSP_svl, // Store Vector Left
7142PSP_svr, // Store Vector Right
7143PSP_mfv, // Move from VFPU
7144PSP_mtv, // Move to VFPU
7145PSP_mfvc, // Move Control from VFPU
7146PSP_mtvc, // Move Control to VFPU
7147PSP_bvf, // Branch on VFPU False
7148PSP_bvt, // Branch on VFPU True
7149PSP_bvfl, // Branch on VFPU False Likely
7150PSP_bvtl, // Branch on VFPU True Likely
7151PSP_vnop, // VFPU no-op
7152PSP_vflush, // VFPU flush
7153PSP_vsync, // VFPU sync
7154PSP_vabs, // Vector absolute value
7155PSP_vadd, // Vector add
7156PSP_vasin, // Vector arcsine
7157PSP_vavg, // Vector average
7158PSP_vbfy1, // IDCT butterfly 1
7159PSP_vbfy2, // IDCT butterfly 2
7160PSP_vc2i, // Vector convert signed char to integer
7161PSP_vcmovf, // Vector move if condition field is true
7162PSP_vcmovt, // Vector move if condition field is false
7163PSP_vcmp, // Vector compare and set condition fields
7164PSP_vcos, // Vector cosine
7165PSP_vcrs, // Vector cross multiplication: vd = [y1*z2, z1*x2, x1*y2]
7166PSP_vcrsp, // Vector cross product
7167PSP_vcst, // Set constant
7168PSP_vdet, // Determinant
7169PSP_vdiv, // Vector divide
7170PSP_vdot, // Vector dot product
7171PSP_vexp2, // Vector exponent of 2 (2^x)
7172PSP_vf2h, // Vector convert float single to half precision
7173PSP_vf2id, // Vector convert float to integer, round down
7174PSP_vf2in, // Vector convert float to integer, round to nearest
7175PSP_vf2iu, // Vector convert float to integer, round up
7176PSP_vf2iz, // Vector convert float to integer, round toward zero
7177PSP_vfad, // Vector funnel add (sum components)
7178PSP_vfim, // Set floating-point immediate
7179PSP_vh2f, // Vector convert float half to single precision
7180PSP_vhdp, // Vector homogenous dot product
7181PSP_vhtfm2, // Homogenous transform vector by matrix
7182PSP_vhtfm3, // Homogenous transform vector by matrix
7183PSP_vhtfm4, // Homogenous transform vector by matrix
7184PSP_vi2c, // Vector convert integer to signed char
7185PSP_vi2f, // Vector convert integer to float
7186PSP_vi2s, // Vector convert integer to signed short
7187PSP_vi2uc, // Vector convert integer to unsigned char
7188PSP_vi2us, // Vector convert integer to unsigned short
7189PSP_vidt, // Set vector to identity
7190PSP_viim, // Set integer immediate
7191PSP_vlgb, // Vector log binary (extract exponent)
7192PSP_vlog2, // Vector logarithm base 2
7193PSP_vmax, // Vector maximum values
7194PSP_vmfvc, // Vector move from control register
7195PSP_vmidt, // Set matrix to identity
7196PSP_vmin, // Vector minimum values
7197PSP_vmmov, // Move matrix
7198PSP_vmmul, // Matrix multiply
7199PSP_vmone, // Set matrix to ones
7200PSP_vmov, // Move vector
7201PSP_vmscl, // Scale matrix by
7202PSP_vmtvc, // Vector move to control register
7203PSP_vmul, // Vector multiply
7204PSP_vmzero, // Set matrix to zeroes
7205PSP_vneg, // Vector negate
7206PSP_vnrcp, // Vector negative reciprocal (-1/x)
7207PSP_vnsin, // Vector negative sine
7208PSP_vocp, // Vector one complement (1-x)
7209PSP_vone, // Set vector to ones
7210PSP_vpfxd, // Set prefix operation for vd
7211PSP_vpfxs, // Set prefix operation for vs
7212PSP_vpfxt, // Set prefix operation for vt
7213PSP_vqmul, // Quaternion multiply
7214PSP_vrcp, // Vector reciprocal (1/x)
7215PSP_vrexp2, // Vector reciprocal exponent of 2 (1/(2^x))
7216PSP_vrndf1, // Vector generate pseudorandom float (1.0 ~ 2.0)
7217PSP_vrndf2, // Vector generate pseudorandom float (2.0 ~ 4.0)
7218PSP_vrndi, // Vector generate pseudorandom integer
7219PSP_vrnds, // Vector set pseudorandom seed
7220PSP_vrot, // Rotate vector
7221PSP_vrsq, // Vector reciprocal square root (1/sqrt(x))
7222PSP_vs2i, // Vector convert signed short to integer
7223PSP_vsat0, // Vector saturate to range 0..1
7224PSP_vsat1, // Vector saturate to range -1..1
7225PSP_vsbn, // Vector scale by 2^x, round to nearest
7226PSP_vsbz, // Vector scale by 2^x, round towards zero
7227PSP_vscl, // Vector scale by
7228PSP_vscmp, // Vector set signed compare
7229PSP_vsge, // Vector set results for greater than or equal
7230PSP_vsgn, // Vector get sign
7231PSP_vsin, // Vector sine
7232PSP_vslt, // Vector set results for less
7233PSP_vsocp, // Vector split and one complement
7234PSP_vsqrt, // Vector square root
7235PSP_vsrt1, // Vector sort 1: vd = min(x,y), max(x,y), min(z,w), max(z,w)
7236PSP_vsrt2, // Vector sort 2: vd = min(x,w), max(y,z), min(y,z), max(x,w)
7237PSP_vsrt3, // Vector sort 3: vd = max(x,y), min(x,y), max(z,w), min(z,w)
7238PSP_vsrt4, // Vector sort 4: vd = max(x,w), max(y,z), min(y,z), max(x,w)
7239PSP_vsub, // Vector subtract
7240PSP_vt4444, // Transform color RGBA8888 to RGBA4444
7241PSP_vt5551, // Transform color RGBA8888 to RGBA5551
7242PSP_vt5650, // Transform color RGB888 to RGB565
7243PSP_vtfm2, // Transform vector by matrix
7244PSP_vtfm3, // Transform vector by matrix
7245PSP_vtfm4, // Transform vector by matrix
7246PSP_vuc2i, // Vector convert unsigned char to integer
7247PSP_vus2i, // Vector convert unsigned short to integer
7248PSP_vwbn, // Wrap BigNum
7249PSP_vzero, // VFPU set vector to zeroes
7250// PSP Media Engine instructions
7251PSP_mfvme, // move from VME
7252PSP_mtvme, // move to VME
7253// Toshiba TX19a instructions
7254MIPS_ac0iu, // Add Coprocessor 0 Immediate Unsigned
7255MIPS_bs1f, // Bit Search One Forward
7256MIPS_bfins, // Bit field insert
7257MIPS_addmiu, // Add Immediate to Memory Word
7258MIPS_sadd, // Saturated Add
7259MIPS_ssub, // Saturated Subtract
7260MIPS_btst, // Bit Test
7261MIPS_bclr, // Bit Clear
7262MIPS_bset, // Bit Set
7263MIPS_bins, // Bit Insert
7264MIPS_bext, // Bit Extract
7265MIPS_dive, // Divide, with Overflow Exception
7266MIPS_diveu, // Divide unsigned, with Overflow Exception
7267MIPS_min, // Minimum signed
7268MIPS_max, // Maximum signed
7269MIPS_madd3, // Multiply/Add (3-operand)
7270MIPS_maddu3, // Multiply/Add Unsigned (3-operand)
7271MIPS_msub3, // Multiply and Subtract Word to Hi,Lo (3-operand)
7272MIPS_msubu3, // Multiply and Subtract Word to Hi,Lo (3-operand)
7273// MIPS-MT
7274MIPS_dvpe, // Disable Virtual Processor Execution
7275MIPS_evpe, // Enable Virtual Processor Execution
7276MIPS_dmt, // Disable Multi-Threaded Execution
7277MIPS_emt, // Enable Multi-Threaded Execution
7278MIPS_fork, // Allocate and Schedule a New Thread
7279MIPS_yield, // Conditionally Deschedule or Deallocate the Current Thread
7280MIPS_mftr, // Move From Thread Context
7281MIPS_mftc0, // Move From Thread Context (CP0 register, low-order half)
7282MIPS_mfthc0, // Move From Thread Context (CP0 register, high-order half)
7283MIPS_mftlo, // Move From Thread Context (LO register)
7284MIPS_mfthi, // Move From Thread Context (HI register)
7285MIPS_mftacx, // Move From Thread Context (ACX register)
7286MIPS_mftdsp, // Move From Thread Context (DSPControl register)
7287MIPS_mfthc1, // Move From Thread Context (CP1 register, high-order half)
7288MIPS_mftc1, // Move From Thread Context (CP1 register, low-order half)
7289MIPS_cftc1, // Move From Thread Context (CP1 control register)
7290MIPS_mfthc2, // Move From Thread Context (CP2 register, high-order half)
7291MIPS_mftc2, // Move From Thread Context (CP2 register, low-order half)
7292MIPS_cftc2, // Move From Thread Context (CP2 control register)
7293MIPS_mftgpr, // Move From Thread Context (general-purpose register)
7294MIPS_mttr, // Move To Thread Context
7295MIPS_mttc0, // Move To Thread Context (CP0 register, low-order half)
7296MIPS_mtthc0, // Move To Thread Context (CP0 register, high-order half)
7297MIPS_mttlo, // Move To Thread Context (LO register)
7298MIPS_mtthi, // Move To Thread Context (HI register)
7299MIPS_mttacx, // Move To Thread Context (ACX register)
7300MIPS_mttdsp, // Move To Thread Context (DSPControl register)
7301MIPS_mtthc1, // Move To Thread Context (CP1 register, high-order half)
7302MIPS_mttc1, // Move To Thread Context (CP1 register, low-order half)
7303MIPS_cttc1, // Move To Thread Context (CP1 control register)
7304MIPS_mtthc2, // Move To Thread Context (CP2 register, high-order half)
7305MIPS_mttc2, // Move To Thread Context (CP2 register, low-order half)
7306MIPS_cttc2, // Move To Thread Context (CP2 control register)
7307MIPS_mttgpr, // Move To Thread Context (general-purpose register)
7308// MIPS-3D
7309MIPS_faddr, // Floating-point Reduction Addition
7310MIPS_bc1any2f, // Branch on Any of Two Floating Point Condition Codes False
7311MIPS_bc1any2t, // Branch on Any of Two Floating Point Condition Codes True
7312MIPS_bc1any4f, // Branch on Any of Four Floating Point Condition Codes False
7313MIPS_bc1any4t, // Branch on Any of Four Floating Point Condition Codes True
7314MIPS_fcabs_f, // Floating-point Absolute Compare
7315MIPS_fcabs_un, // Floating-point Absolute Compare
7316MIPS_fcabs_eq, // Floating-point Absolute Compare
7317MIPS_fcabs_ueq, // Floating-point Absolute Compare
7318MIPS_fcabs_olt, // Floating-point Absolute Compare
7319MIPS_fcabs_ult, // Floating-point Absolute Compare
7320MIPS_fcabs_ole, // Floating-point Absolute Compare
7321MIPS_fcabs_ule, // Floating-point Absolute Compare
7322MIPS_fcabs_sf, // Floating-point Absolute Compare
7323MIPS_fcabs_ngle, // Floating-point Absolute Compare
7324MIPS_fcabs_seq, // Floating-point Absolute Compare
7325MIPS_fcabs_ngl, // Floating-point Absolute Compare
7326MIPS_fcabs_lt, // Floating-point Absolute Compare
7327MIPS_fcabs_nge, // Floating-point Absolute Compare
7328MIPS_fcabs_le, // Floating-point Absolute Compare
7329MIPS_fcabs_ngt, // Floating-point Absolute Compare
7330MIPS_fcvt_pw_ps, // Floating-point Convert Paired Single to Paired Word
7331MIPS_fcvt_ps_pw, // Floating-point Convert Paired Word to Paired Single
7332MIPS_fmulr, // Floating-point Reduction Multiply
7333MIPS_frecip1, // Floating-point Reduced Precision Reciprocal (Step 1)
7334MIPS_frecip2, // Floating-point Reduced Precision Reciprocal (Step 2)
7335MIPS_frsqrt1, // Floating-point Reduced Precision Reciprocal Square Root (Step 1)
7336MIPS_frsqrt2, // Floating-point Reduced Precision Reciprocal Square Root (Step 2)
7337// smartMIPS
7338MIPS_lwxs, // Load Word Indexed, Scaled
7339MIPS_maddp, // Multiply and Add Polynomial Basis Word to Hi,Lo
7340MIPS_mflhxu, // Move from Extended Carry, Hi and Lo (Unsigned)
7341MIPS_mtlhx, // Move to Lo, Hi, and Extended Carry
7342MIPS_multp, // Multiply Binary Polynomial Basis Word
7343MIPS_pperm, // Partial Permutation of Word Data into ACX-Hi-Lo Accumulator
7344// microMIPS
7345MIPS_jals, // Jump and Link, Short Delay Slot
7346MIPS_lwp, // Load Word Pair
7347MIPS_ldp, // Load Doubleword Pair
7348MIPS_lwm, // Load Word Multiple
7349MIPS_ldm, // Load Doubleword Multiple
7350MIPS_swp, // Store Word Pair
7351MIPS_sdp, // Store Doubleword Pair
7352MIPS_swm, // Store Word Multiple
7353MIPS_sdm, // Store Doubleword Multiple
7354MIPS_bnezc, // Branch on Not Equal to Zero, Compact
7355MIPS_bltzals, // Branch on Less Than Zero and Link, Short Delay-Slot
7356MIPS_beqzc, // Branch on Equal to Zero, Compact
7357MIPS_bgezals, // Branch on Greater Than or Equal to Zero and Link, Short Delay-Slot
7358MIPS_jraddiusp, // Jump Register, Adjust Stack Pointer
7359MIPS_jalrs, // Jump and Link Register, Short Delay Slot
7360MIPS_jalrs_hb, // Jump and Link Register with Hazard Barrier, Short Delay-Slot
7361MIPS_movep, // Move a Pair of Registers
7362// had been missed; 64-bit MIPS pseudoinstruction
7363MIPS_dli, // Doubleword Load Immediate
7364// DSP ASE instructions
7365MIPS_insv, // Insert Bit Field Variable
7366MIPS_dinsv, // Doubleword Insert Variable Bit Field
7367MIPS_bposge32, // Branch on Greater Than or Equal To Value 32 in DSPControl Pos Field
7368MIPS_bposge64, // Branch on Greater Than or Equal To Value 64 in DSPControl Pos Field
7369MIPS_addu_qb, // Unsigned Add Quad Byte Vectors
7370MIPS_addu_ph, // Unsigned Add Integer Halfwords
7371MIPS_addsc, // Add Signed Word and Set Carry Bit
7372MIPS_subu_qb, // Subtract Unsigned Quad Byte Vector
7373MIPS_subu_ph, // Subtract Unsigned Integer Halfwords
7374MIPS_addwc, // Add Word with Carry Bit
7375MIPS_addq_ph, // Add Fractional Halfword Vectors
7376MIPS_modsub, // Modular Subtraction on an Index Value
7377MIPS_subq_ph, // Subtract Fractional Halfword Vector
7378MIPS_addu_s_qb, // Unsigned Add Quad Byte Vectors
7379MIPS_addu_s_ph, // Unsigned Add Integer Halfwords
7380MIPS_raddu_w_qb, // Unsigned Reduction Add Vector Quad Bytes
7381MIPS_muleq_s_w_phl, // Multiply Vector Fractional Left Halfwords to Expanded Width Products
7382MIPS_subu_s_qb, // Subtract Unsigned Quad Byte Vector
7383MIPS_subu_s_ph, // Subtract Unsigned Integer Halfwords
7384MIPS_muleq_s_w_phr, // Multiply Vector Fractional Right Halfwords to Expanded Width Products
7385MIPS_muleu_s_ph_qbl, // Multiply Unsigned Vector Left Bytes by Halfwords to Halfword Products
7386MIPS_addq_s_ph, // Add Fractional Halfword Vectors
7387MIPS_addq_s_w, // Add Fractional Words
7388MIPS_mulq_s_ph, // Multiply Vector Fractional Half-Words to Same Size Products
7389MIPS_muleu_s_ph_qbr, // Multiply Unsigned Vector Right Bytes with halfwords to Half Word Products
7390MIPS_subq_s_ph, // Subtract Fractional Halfword Vector
7391MIPS_subq_s_w, // Subtract Fractional Word
7392MIPS_mulq_rs_ph, // Multiply Vector Fractional Halfwords to Fractional Halfword Products
7393MIPS_addu_ob, // Unsigned Add Octal Byte Vectors
7394MIPS_subu_ob, // Subtract Unsigned Octal Byte Vector
7395MIPS_addq_qh, // Add Fractional Halfword Vectors
7396MIPS_addq_pw, // Add Fractional Word Vectors
7397MIPS_subq_qh, // Subtract Fractional Halfword Vector
7398MIPS_subq_pw, // Subtract Fractional Word Vector
7399MIPS_addu_s_ob, // Unsigned Add Octal Byte Vectors
7400MIPS_raddu_l_ob, // Unsigned Reduction Add Vector Octal Bytes
7401MIPS_muleq_s_pw_qhl, // Multiply Vector Fractional Left Halfwords to Expanded Width Products
7402MIPS_subu_s_ob, // Subtract Unsigned Octal Byte Vector
7403MIPS_muleq_s_pw_qhr, // Multiply Vector Fractional Right Halfwords to Expanded Width Products
7404MIPS_muleu_s_qh_obl, // Multiply Unsigned Vector Left Bytes by Halfwords to Halfword Products
7405MIPS_addq_s_qh, // Add Fractional Halfword Vectors
7406MIPS_addq_s_pw, // Add Fractional Word Vectors
7407MIPS_muleu_s_qh_obr, // Multiply Unsigned Vector Right Bytes by Halfwords to Halfword Products
7408MIPS_subq_s_qh, // Subtract Fractional Halfword Vector
7409MIPS_subq_s_pw, // Subtract Fractional Word Vector
7410MIPS_mulq_rs_qh, // Multiply Vector Fractional Halfwords to Fractional Halfword Products
7411MIPS_cmpu_eq_qb, // Compare Vectors of Unsigned Byte Values
7412MIPS_cmp_eq_ph, // Compare Vectors of Signed Integer Halfword Values
7413MIPS_cmpgdu_eq_qb, // Compare Unsigned Vector of Four Bytes and Write Result to GPR and DSPControl
7414MIPS_cmpu_lt_qb, // Compare Vectors of Unsigned Byte Values
7415MIPS_cmp_lt_ph, // Compare Vectors of Signed Integer Halfword Values
7416MIPS_cmpgdu_lt_qb, // Compare Unsigned Vector of Four Bytes and Write Result to GPR and DSPControl
7417MIPS_cmpu_le_qb, // Compare Vectors of Unsigned Byte Values
7418MIPS_cmp_le_ph, // Compare Vectors of Signed Integer Halfword Values
7419MIPS_cmpgdu_le_qb, // Compare Unsigned Vector of Four Bytes and Write Result to GPR and DSPControl
7420MIPS_pick_qb, // Pick a Vector of Byte Values Based on Condition Code Bits
7421MIPS_pick_ph, // Pick a Vector of Halfword Values Based on Condition Code Bits
7422MIPS_cmpgu_eq_qb, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7423MIPS_precrq_qb_ph, // Precision Reduce Four Fractional Halfwords to Four Bytes
7424MIPS_precrq_ph_w, // Precision Reduce Fractional Words to Fractional Halfwords
7425MIPS_cmpgu_lt_qb, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7426MIPS_precr_qb_ph, // Precision Reduce Four Integer Halfwords to Four Bytes
7427MIPS_precrq_rs_ph_w, // Precision Reduce Fractional Words to Halfwords With Rounding and Saturation
7428MIPS_cmpgu_le_qb, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7429MIPS_packrl_ph, // Pack a Vector of Halfwords from Vector Halfword Sources
7430MIPS_precr_sra_ph_w, // Precision Reduce Two Integer Words to Halfwords after a Right Shift
7431MIPS_precrqu_s_qb_ph, // Precision Reduce Fractional Halfwords to Unsigned Bytes With Saturation
7432MIPS_precr_sra_r_ph_w, // Precision Reduce Two Integer Words to Halfwords after a Right Shift
7433MIPS_cmpu_eq_ob, // Compare Vectors of Unsigned Byte Values
7434MIPS_cmp_eq_qh, // Compare Vectors of Signed Integer Halfword Values
7435MIPS_cmp_eq_pw, // Compare Vectors of Signed Integer Word Values
7436MIPS_cmpu_lt_ob, // Compare Vectors of Unsigned Byte Values
7437MIPS_cmp_lt_qh, // Compare Vectors of Signed Integer Halfword Values
7438MIPS_cmp_lt_pw, // Compare Vectors of Signed Integer Word Values
7439MIPS_cmpu_le_ob, // Compare Vectors of Unsigned Byte Values
7440MIPS_cmp_le_qh, // Compare Vectors of Signed Integer Halfword Values
7441MIPS_cmp_le_pw, // Compare Vectors of Signed Integer Word Values
7442MIPS_pick_ob, // Pick a Vector of Byte Values Based on Condition Code Bits
7443MIPS_pick_qh, // Pick a Vector of Halfword Values Based on Condition Code Bits
7444MIPS_pick_pw, // Pick a Vector of Word Values Based on Condition Code Bits
7445MIPS_cmpgu_eq_ob, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7446MIPS_precrq_ob_qh, // Precision Reduce Fractional Halfwords to Fractional Bytes
7447MIPS_precrq_qh_pw, // Precision Reduce Fractional Words to Fractional Halfwords
7448MIPS_precrq_pw_l, // Precision Reduce Fractional Doublewords to Fractional Words
7449MIPS_cmpgu_lt_ob, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7450MIPS_precrq_rs_qh_pw, // Precision Reduce Fractional Words to Halfwords With Rounding and Saturation
7451MIPS_cmpgu_le_ob, // Compare Vectors of Unsigned Byte Values and Write Results to a GPR
7452MIPS_packrl_pw, // Pack a Vector of Words from Vector Word Sources
7453MIPS_precrqu_s_ob_qh, // Precision Reduce Fractional Halfwords to Unsigned Bytes With Saturation
7454MIPS_absq_s_qb, // Find Absolute Value of Four Fractional Byte Values
7455MIPS_absq_s_ph, // Find Absolute Value of Two Fractional Halfwords
7456MIPS_absq_s_w, // Find Absolute Value of Fractional Word
7457MIPS_repl_qb, // Replicate Immediate Integer into all Vector Element Positions
7458MIPS_repl_ph, // Replicate Immediate Integer into all Vector Element Positions
7459MIPS_replv_qb, // Replicate Byte into all Vector Element Positions
7460MIPS_replv_ph, // Replicate a Halfword into all Vector Element Positions
7461MIPS_bitrev, // Bit-Reverse Halfword
7462MIPS_precequ_ph_qbl, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7463MIPS_preceq_w_phl, // Precision Expand Fractional Halfword to Fractional Word Value
7464MIPS_preceu_ph_qbl, // Precision Expand Two Unsigned Bytes to Unsigned Halfword Values
7465MIPS_precequ_ph_qbr, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7466MIPS_preceq_w_phr, // Precision Expand Fractional Halfword to Fractional Word Value
7467MIPS_preceu_ph_qbr, // Precision Expand two Unsigned Bytes to Unsigned Halfword Values
7468MIPS_precequ_ph_qbla, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7469MIPS_preceu_ph_qbla, // Precision Expand Two Unsigned Bytes to Unsigned Halfword Values
7470MIPS_precequ_ph_qbra, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7471MIPS_preceu_ph_qbra, // Precision Expand Two Unsigned Bytes to Unsigned Halfword Values
7472MIPS_absq_s_qh, // Find Absolute Value of Four Fractional Halfwords
7473MIPS_absq_s_pw, // Find Absolute Value of Two Fractional Words
7474MIPS_repl_ob, // Replicate Immediate Integer into all Vector Element Positions
7475MIPS_repl_qh, // Replicate Immediate Integer into all Vector Element Positions
7476MIPS_repl_pw, // Replicate Immediate Integer into all Vector Element Positions
7477MIPS_replv_ob, // Replicate Byte into all Vector Element Positions
7478MIPS_replv_qh, // Replicate a Halfword into all Vector Element Positions
7479MIPS_replv_pw, // Replicate Word into all Vector Element Positions
7480MIPS_precequ_pw_qhl, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7481MIPS_preceq_pw_qhl, // Precision Expand Two Fractional Halfwords to Fractional Word Values
7482MIPS_preceq_s_l_pwl, // Precision Expand Fractional Word to Fractional Doubleword Value
7483MIPS_preceu_qh_obl, // Precision Expand Four Unsigned Bytes to Unsigned Halfword Values
7484MIPS_precequ_pw_qhr, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7485MIPS_preceq_pw_qhr, // Precision Expand Two Fractional Halfwords to Fractional Word Values
7486MIPS_preceq_s_l_pwr, // Precision Expand Fractional Word to Fractional Doubleword Value
7487MIPS_preceu_qh_obr, // Precision Expand Four Unsigned Bytes to Unsigned Halfword Values
7488MIPS_precequ_pw_qhla, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7489MIPS_preceq_pw_qhla, // Precision Expand Two Fractional Halfwords to Fractional Word Values
7490MIPS_preceu_qh_obla, // Precision Expand Four Unsigned Bytes to Unsigned Halfword Values
7491MIPS_precequ_pw_qhra, // Precision Expand two Unsigned Bytes to Fractional Halfword Values
7492MIPS_preceq_pw_qhra, // Precision Expand Two Fractional Halfwords to Fractional Word Values
7493MIPS_preceu_qh_obra, // Precision Expand Four Unsigned Bytes to Unsigned Halfword Values
7494MIPS_shll_qb, // Shift Left Logical Vector Quad Bytes
7495MIPS_shll_ph, // Shift Left Logical Vector Pair Halfwords
7496MIPS_shrl_qb, // Shift Right Logical Vector Quad Bytes
7497MIPS_shra_ph, // Shift Right Arithmetic Vector Pair Halfwords
7498MIPS_shrl_ph, // Shift Right Logical Two Halfwords
7499MIPS_shllv_qb, // Shift Left Logical Variable Vector Quad Bytes
7500MIPS_shllv_ph, // Shift Left Logical Variable Vector Pair Halfwords
7501MIPS_shrlv_qb, // Shift Right Logical Variable Vector Quad Bytes
7502MIPS_shrav_ph, // Shift Right Arithmetic Variable Vector Pair Halfwords
7503MIPS_shrlv_ph, // Shift Variable Right Logical Pair of Halfwords
7504MIPS_shra_qb, // Shift Right Arithmetic Vector of Four Bytes
7505MIPS_shll_s_ph, // Shift Left Logical Vector Pair Halfwords
7506MIPS_shll_s_w, // Shift Left Logical Word with Saturation
7507MIPS_shra_r_qb, // Shift Right Arithmetic Vector of Four Bytes
7508MIPS_shra_r_ph, // Shift Right Arithmetic Vector Pair Halfwords
7509MIPS_shra_r_w, // Shift Right Arithmetic Word with Rounding
7510MIPS_shrav_qb, // Shift Right Arithmetic Variable Vector of Four Bytes
7511MIPS_shllv_s_ph, // Shift Left Logical Variable Vector Pair Halfwords
7512MIPS_shllv_s_w, // Shift Left Logical Variable Vector Word
7513MIPS_shrav_r_qb, // Shift Right Arithmetic Variable Vector of Four Bytes
7514MIPS_shrav_r_ph, // Shift Right Arithmetic Variable Vector Pair Halfwords
7515MIPS_shrav_r_w, // Shift Right Arithmetic Variable Word with Rounding
7516MIPS_shll_ob, // Shift Left Logical Vector Octal Bytes
7517MIPS_shll_qh, // Shift Left Logical Vector Quad Halfwords
7518MIPS_shll_pw, // Shift Left Logical Vector Pair Words
7519MIPS_shrl_ob, // Shift Right Logical Vector Octal Bytes
7520MIPS_shra_qh, // Shift Right Arithmetic Vector Quad Halfwords
7521MIPS_shra_pw, // Shift Right Arithmetic Vector Pair Words
7522MIPS_shllv_ob, // Shift Left Logical Variable Vector Octal Bytes
7523MIPS_shllv_qh, // Shift Left Logical Variable Vector Quad Halfwords
7524MIPS_shllv_pw, // Shift Left Logical Variable Vector Pair Words
7525MIPS_shrlv_ob, // Shift Right Logical Variable Vector Octal Bytes
7526MIPS_shrav_qh, // Shift Right Arithmetic Variable Vector Quad Halfwords
7527MIPS_shrav_pw, // Shift Right Arithmetic Variable Vector Pair Words
7528MIPS_shll_s_qh, // Shift Left Logical Vector Quad Halfwords
7529MIPS_shll_s_pw, // Shift Left Logical Vector Pair Words
7530MIPS_shra_r_qh, // Shift Right Arithmetic Vector Quad Halfwords
7531MIPS_shra_r_pw, // Shift Right Arithmetic Vector Pair Words
7532MIPS_shllv_s_qh, // Shift Left Logical Variable Vector Quad Halfwords
7533MIPS_shllv_s_pw, // Shift Left Logical Variable Vector Pair Words
7534MIPS_shrav_r_qh, // Shift Right Arithmetic Variable Vector Quad Halfwords
7535MIPS_shrav_r_pw, // Shift Right Arithmetic Variable Vector Pair Words
7536MIPS_lwx, // Load Word Indexed
7537MIPS_ldx, // Load Doubleword Indexed
7538MIPS_lhx, // Load Halfword Indexed
7539MIPS_lbux, // Load Unsigned Byte Indexed
7540MIPS_dpa_w_ph, // Dot Product with Accumulate on Vector Integer Halfword Elements
7541MIPS_dpax_w_ph, // Cross Dot Product with Accumulate on Vector Integer Halfword Elements
7542MIPS_maq_sa_w_phl, // Multiply with Accumulate Single Vector Fractional Halfword Element
7543MIPS_dpaqx_s_w_ph, // Cross Dot Product with Accumulation on Fractional Halfword Elements
7544MIPS_dps_w_ph, // Dot Product with Subtract on Vector Integer Half-Word Elements
7545MIPS_dpsx_w_ph, // Cross Dot Product with Subtract on Vector Integer Halfword Elements
7546MIPS_dpsqx_s_w_ph, // Cross Dot Product with Subtraction on Fractional Halfword Elements
7547MIPS_mulsa_w_ph, // Multiply and Subtract Vector Integer Halfword Elements and Accumulate
7548MIPS_maq_sa_w_phr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7549MIPS_dpaqx_sa_w_ph, // Cross Dot Product with Accumulation on Fractional Halfword Elements
7550MIPS_dpau_h_qbl, // Dot Product with Accumulate on Vector Unsigned Byte Elements
7551MIPS_dpsu_h_qbl, // Dot Product with Subtraction on Vector Unsigned Byte Elements
7552MIPS_dpsqx_sa_w_ph, // Cross Dot Product with Subtraction on Fractional Halfword Elements
7553MIPS_dpaq_s_w_ph, // Dot Product with Accumulation on Fractional Halfword Elements
7554MIPS_dpaq_sa_l_w, // Dot Product with Accumulate on Fractional Word Element
7555MIPS_maq_s_w_phl, // Multiply with Accumulate Single Vector Fractional Halfword Element
7556MIPS_dpsq_s_w_ph, // Dot Product with Subtraction on Fractional Halfword Elements
7557MIPS_dpsq_sa_l_w, // Dot Product with Subtraction on Fractional Word Element
7558MIPS_mulsaq_s_w_ph, // Multiply And Subtract Vector Fractional Halfwords And Accumulate
7559MIPS_maq_s_w_phr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7560MIPS_dpau_h_qbr, // Dot Product with Accumulate on Vector Unsigned Byte Elements
7561MIPS_dpsu_h_qbr, // Dot Product with Subtraction on Vector Unsigned Byte Elements
7562MIPS_maq_sa_w_qhll, // Multiply with Accumulate Single Vector Fractional Halfword Element
7563MIPS_maq_sa_w_qhlr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7564MIPS_dmadd, // Multiply Vector Words And Accumulate
7565MIPS_dmsub, // Multiply Vector Words And Subtract From Accumulator
7566MIPS_maq_sa_w_qhrl, // Multiply with Accumulate Single Vector Fractional Halfword Element
7567MIPS_dpau_h_obl, // Dot Product with Accumulate on Vector Unsigned Byte Elements
7568MIPS_dpsu_h_obl, // Dot Product with Subtract on Vector Unsigned Byte Elements
7569MIPS_maq_sa_w_qhrr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7570MIPS_dpaq_s_w_qh, // Dot Product with Accumulation on Fractional Halfword Elements
7571MIPS_dpaq_sa_l_pw, // Dot Product with Accumulate on Fractional Word Elements
7572MIPS_maq_s_w_qhll, // Multiply with Accumulate Single Vector Fractional Halfword Element
7573MIPS_maq_s_l_pwl, // Multiply with Accumulate Single Vector Fractional Word Element
7574MIPS_dpsq_s_w_qh, // Dot Product with Subtraction on Fractional Halfword Elements
7575MIPS_dpsq_sa_l_pw, // Dot Product with Subtraction on Fractional Word Elements
7576MIPS_maq_s_w_qhlr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7577MIPS_dmaddu, // Multiply Vector Unsigned Words And Accumulate
7578MIPS_mulsaq_s_w_qh, // Multiply And Subtract Vector Fractional Halfwords And Accumulate
7579MIPS_mulsaq_s_l_pw, // Multiply And Subtract Vector Fractional Words And Accumulate
7580MIPS_maq_s_w_qhrl, // Multiply with Accumulate Single Vector Fractional Halfword Element
7581MIPS_maq_s_l_pwr, // Multiply with Accumulate Single Vector Fractional Word Element
7582MIPS_dpau_h_obr, // Dot Product with Accumulate on Vector Unsigned Byte Elements
7583MIPS_dpsu_h_obr, // Dot Product with Subtract on Vector Unsigned Byte Elements
7584MIPS_maq_s_w_qhrr, // Multiply with Accumulate Single Vector Fractional Halfword Element
7585MIPS_dmsubu, // Multiply Vector Unsigned Words And Subtract From Accumulator
7586MIPS_extr_w, // Extract Word Value With Right Shift From Accumulator to GPR
7587MIPS_extrv_w, // Extract Word Value With Variable Right Shift From Accumulator to GPR
7588MIPS_extp, // Extract Fixed Bitfield From Arbitrary Position in Accumulator to GPR
7589MIPS_extpdp, // Extract Fixed Bitfield From Arbitrary Position in Accumulator to GPR and Decrement Pos
7590MIPS_rddsp, // Read DSPControl Register Fields to a GPR
7591MIPS_shilo, // Shift an Accumulator Value Leaving the Result in the Same Accumulator
7592MIPS_extpv, // Extract Variable Bitfield From Arbitrary Position in Accumulator to GPR
7593MIPS_extpdpv, // Extract Variable Bitfield From Arbitrary Position in Accumulator to GPR and Decrement Pos
7594MIPS_wrdsp, // Write Fields to DSPControl Register from a GPR
7595MIPS_shilov, // Variable Shift of Accumulator Value Leaving the Result in the Same Accumulator
7596MIPS_extr_r_w, // Extract Word Value With Right Shift And Rounding From Accumulator to GPR
7597MIPS_extrv_r_w, // Extract Word Value With Variable Right Shift And Rounding From Accumulator to GPR
7598MIPS_extr_rs_w, // Extract Word Value With Right Shift From Accumulator to GPR
7599MIPS_extr_s_h, // Extract Halfword Value From Accumulator to GPR With Right Shift and Saturate
7600MIPS_extrv_rs_w, // Extract Word Value With Variable Right Shift From Accumulator to GPR
7601MIPS_extrv_s_h, // Extract Halfword Value Variable From Accumulator to GPR With Right Shift and Saturate
7602MIPS_mthlip, // Copy LO to HI and a GPR to LO and Increment Pos by 32
7603MIPS_dextr_w, // Extract Word Value With Right Shift From Accumulator to GPR
7604MIPS_dextr_l, // Extract Doubleword Value With Right Shift From Accumulator to GPR
7605MIPS_dextrv_w, // Extract Word Value With Variable Right Shift From Accumulator to GPR
7606MIPS_dextrv_l, // Extract Doubleword Value With Variable Right Shift From Accumulator to GPR
7607MIPS_dextp, // Extract Fixed Bitfield From Arbitrary Position in Accumulator to GPR
7608MIPS_dextpdp, // Extract Fixed Bitfield From Arbitrary Position in Accumulator to GPR and Decrement Pos
7609MIPS_dshilo, // Shift an Accumulator Value Leaving the Result in the Same Accumulator
7610MIPS_dextpv, // Extract Variable Bitfield From Arbitrary Position in Accumulator to GPR
7611MIPS_dextpdpv, // Extract Variable Bitfield From Arbitrary Position in Accumulator to GPR and Decrement Pos
7612MIPS_dshilov, // Variable Shift of Accumulator Value Leaving the Result in the Same Accumulator
7613MIPS_dextr_r_w, // Extract Word Value With Right Shift And Rounding From Accumulator to GPR
7614MIPS_dextr_r_l, // Extract Doubleword Value With Right Shift And Rounding From Accumulator to GPR
7615MIPS_dextrv_r_w, // Extract Word Value With Variable Right Shift And Rounding From Accumulator to GPR
7616MIPS_dextrv_r_l, // Extract Doubleword Value With Variable Right Shift And Rounding From Accumulator to GPR
7617MIPS_dextr_rs_w, // Extract Word Value With Right Shift From Accumulator to GPR
7618MIPS_dextr_s_h, // Extract Halfword Value From Accumulator to GPR With Right Shift and Saturate
7619MIPS_dextr_rs_l, // Extract Doubleword Value With Right Shift From Accumulator to GPR
7620MIPS_dextrv_rs_w, // Extract Word Value With Variable Right Shift From Accumulator to GPR
7621MIPS_dextrv_s_h, // Extract Halfword Value Variable From Accumulator to GPR With Right Shift and Saturate
7622MIPS_dextrv_rs_l, // Extract Doubleword Value With Variable Right Shift From Accumulator to GPR
7623MIPS_dmthlip, // Copy LO to HI and a GPR to LO and Increment Pos by 64
7624MIPS_adduh_qb, // Unsigned Add Vector Quad-Bytes And Right Shift to Halve Results
7625MIPS_addqh_ph, // Add Fractional Halfword Vectors And Shift Right to Halve Results
7626MIPS_addqh_w, // Add Fractional Words And Shift Right to Halve Results
7627MIPS_subuh_qb, // Subtract Unsigned Bytes And Right Shift to Halve Results
7628MIPS_subqh_ph, // Subtract Fractional Halfword Vectors And Shift Right to Halve Results
7629MIPS_subqh_w, // Subtract Fractional Words And Shift Right to Halve Results
7630MIPS_adduh_r_qb, // Unsigned Add Vector Quad-Bytes And Right Shift to Halve Results
7631MIPS_addqh_r_ph, // Add Fractional Halfword Vectors And Shift Right to Halve Results
7632MIPS_addqh_r_w, // Add Fractional Words And Shift Right to Halve Results
7633MIPS_subuh_r_qb, // Subtract Unsigned Bytes And Right Shift to Halve Results
7634MIPS_subqh_r_ph, // Subtract Fractional Halfword Vectors And Shift Right to Halve Results
7635MIPS_subqh_r_w, // Subtract Fractional Words And Shift Right to Halve Results
7636MIPS_mul_ph, // Multiply Vector Integer HalfWords to Same Size Products
7637MIPS_mul_s_ph, // Multiply Vector Integer HalfWords to Same Size Products
7638MIPS_mulq_s_w, // Multiply Fractional Words to Same Size Product with Saturation
7639MIPS_mulq_rs_w, // Multiply Fractional Words to Same Size Product with Saturation and Rounding
7640MIPS_append, // Left Shift and Append Bits to the LSB
7641MIPS_balign, // Byte Align Contents from Two Registers
7642MIPS_prepend, // Right Shift and Prepend Bits to the MSB
7643// Cavium Octeon II instructions
7644MIPS_laa, // Load Atomic Add Word
7645MIPS_laad, // Load Atomic Add Doubleword
7646MIPS_lac, // Load Atomic Clear Word
7647MIPS_lacd, // Load Atomic Clear Doubleword
7648MIPS_lad, // Load Atomic Decrement Word
7649MIPS_ladd, // Load Atomic Decrement Doubleword
7650MIPS_lai, // Load Atomic Increment Word
7651MIPS_laid, // Load Atomic Increment Doubleword
7652MIPS_las, // Load Atomic Set Word
7653MIPS_lasd, // Load Atomic Set Doubleword
7654MIPS_law, // Load Atomic Swap Word
7655MIPS_lawd, // Load Atomic Swap Doubleword
7656// we don't know the following mnemonics for sure
7657MIPS_lbx, // Load Byte Indexed
7658MIPS_lhux, // Load Halfword Unsigned Indexed
7659MIPS_lwux, // Load Word Unsigned Indexed
7660MIPS_qmac_00, // Q15 Multiply Accumulate
7661MIPS_qmac_01, // Q15 Multiply Accumulate
7662MIPS_qmac_02, // Q15 Multiply Accumulate
7663MIPS_qmac_03, // Q15 Multiply Accumulate
7664MIPS_qmacs_00, // Q15 Multiply Accumulate
7665MIPS_qmacs_01, // Q15 Multiply Accumulate
7666MIPS_qmacs_02, // Q15 Multiply Accumulate
7667MIPS_qmacs_03, // Q15 Multiply Accumulate
7668MIPS_zcb, // Zero Cache Block
7669MIPS_zcbt, // Zero Cache Block
7670// MSA ASE
7671// some of these have the same name as existing mnemonics; to avoid ambiguity
7672// we use an msa_ prefix on all of them
7673MIPS_msa_sll_b, // Vector Shift Left
7674MIPS_msa_sll_h, // Vector Shift Left
7675MIPS_msa_sll_w, // Vector Shift Left
7676MIPS_msa_sll_d, // Vector Shift Left
7677MIPS_msa_slli_b, // Immediate Shift Left
7678MIPS_msa_slli_h, // Immediate Shift Left
7679MIPS_msa_slli_w, // Immediate Shift Left
7680MIPS_msa_slli_d, // Immediate Shift Left
7681MIPS_msa_sra_b, // Vector Shift Right Arithmetic
7682MIPS_msa_sra_h, // Vector Shift Right Arithmetic
7683MIPS_msa_sra_w, // Vector Shift Right Arithmetic
7684MIPS_msa_sra_d, // Vector Shift Right Arithmetic
7685MIPS_msa_srai_b, // Immediate Shift Right Arithmetic
7686MIPS_msa_srai_h, // Immediate Shift Right Arithmetic
7687MIPS_msa_srai_w, // Immediate Shift Right Arithmetic
7688MIPS_msa_srai_d, // Immediate Shift Right Arithmetic
7689MIPS_msa_srl_b, // Vector Shift Right Logical
7690MIPS_msa_srl_h, // Vector Shift Right Logical
7691MIPS_msa_srl_w, // Vector Shift Right Logical
7692MIPS_msa_srl_d, // Vector Shift Right Logical
7693MIPS_msa_srli_b, // Immediate Shift Right Logical
7694MIPS_msa_srli_h, // Immediate Shift Right Logical
7695MIPS_msa_srli_w, // Immediate Shift Right Logical
7696MIPS_msa_srli_d, // Immediate Shift Right Logical
7697MIPS_msa_bclr_b, // Vector Bit Clear
7698MIPS_msa_bclr_h, // Vector Bit Clear
7699MIPS_msa_bclr_w, // Vector Bit Clear
7700MIPS_msa_bclr_d, // Vector Bit Clear
7701MIPS_msa_bclri_b, // Immediate Bit Clear
7702MIPS_msa_bclri_h, // Immediate Bit Clear
7703MIPS_msa_bclri_w, // Immediate Bit Clear
7704MIPS_msa_bclri_d, // Immediate Bit Clear
7705MIPS_msa_bset_b, // Vector Bit Set
7706MIPS_msa_bset_h, // Vector Bit Set
7707MIPS_msa_bset_w, // Vector Bit Set
7708MIPS_msa_bset_d, // Vector Bit Set
7709MIPS_msa_bseti_b, // Immediate Bit Set
7710MIPS_msa_bseti_h, // Immediate Bit Set
7711MIPS_msa_bseti_w, // Immediate Bit Set
7712MIPS_msa_bseti_d, // Immediate Bit Set
7713MIPS_msa_bneg_b, // Vector Bit Negate
7714MIPS_msa_bneg_h, // Vector Bit Negate
7715MIPS_msa_bneg_w, // Vector Bit Negate
7716MIPS_msa_bneg_d, // Vector Bit Negate
7717MIPS_msa_bnegi_b, // Immediate Bit Negate
7718MIPS_msa_bnegi_h, // Immediate Bit Negate
7719MIPS_msa_bnegi_w, // Immediate Bit Negate
7720MIPS_msa_bnegi_d, // Immediate Bit Negate
7721MIPS_msa_binsl_b, // Vector Bit Insert Left
7722MIPS_msa_binsl_h, // Vector Bit Insert Left
7723MIPS_msa_binsl_w, // Vector Bit Insert Left
7724MIPS_msa_binsl_d, // Vector Bit Insert Left
7725MIPS_msa_binsli_b, // Immediate Bit Insert Left
7726MIPS_msa_binsli_h, // Immediate Bit Insert Left
7727MIPS_msa_binsli_w, // Immediate Bit Insert Left
7728MIPS_msa_binsli_d, // Immediate Bit Insert Left
7729MIPS_msa_binsr_b, // Vector Bit Insert Right
7730MIPS_msa_binsr_h, // Vector Bit Insert Right
7731MIPS_msa_binsr_w, // Vector Bit Insert Right
7732MIPS_msa_binsr_d, // Vector Bit Insert Right
7733MIPS_msa_binsri_b, // Immediate Bit Insert Right
7734MIPS_msa_binsri_h, // Immediate Bit Insert Right
7735MIPS_msa_binsri_w, // Immediate Bit Insert Right
7736MIPS_msa_binsri_d, // Immediate Bit Insert Right
7737MIPS_msa_addv_b, // Vector Add
7738MIPS_msa_addv_h, // Vector Add
7739MIPS_msa_addv_w, // Vector Add
7740MIPS_msa_addv_d, // Vector Add
7741MIPS_msa_addvi_b, // Immediate Add
7742MIPS_msa_addvi_h, // Immediate Add
7743MIPS_msa_addvi_w, // Immediate Add
7744MIPS_msa_addvi_d, // Immediate Add
7745MIPS_msa_subv_b, // Vector Subtract
7746MIPS_msa_subv_h, // Vector Subtract
7747MIPS_msa_subv_w, // Vector Subtract
7748MIPS_msa_subv_d, // Vector Subtract
7749MIPS_msa_subvi_b, // Immediate Subtract
7750MIPS_msa_subvi_h, // Immediate Subtract
7751MIPS_msa_subvi_w, // Immediate Subtract
7752MIPS_msa_subvi_d, // Immediate Subtract
7753MIPS_msa_max_s_b, // Vector Signed Maximum
7754MIPS_msa_max_s_h, // Vector Signed Maximum
7755MIPS_msa_max_s_w, // Vector Signed Maximum
7756MIPS_msa_max_s_d, // Vector Signed Maximum
7757MIPS_msa_maxi_s_b, // Immediate Signed Maximum
7758MIPS_msa_maxi_s_h, // Immediate Signed Maximum
7759MIPS_msa_maxi_s_w, // Immediate Signed Maximum
7760MIPS_msa_maxi_s_d, // Immediate Signed Maximum
7761MIPS_msa_max_u_b, // Vector Unsigned Maximum
7762MIPS_msa_max_u_h, // Vector Unsigned Maximum
7763MIPS_msa_max_u_w, // Vector Unsigned Maximum
7764MIPS_msa_max_u_d, // Vector Unsigned Maximum
7765MIPS_msa_maxi_u_b, // Immediate Unsigned Maximum
7766MIPS_msa_maxi_u_h, // Immediate Unsigned Maximum
7767MIPS_msa_maxi_u_w, // Immediate Unsigned Maximum
7768MIPS_msa_maxi_u_d, // Immediate Unsigned Maximum
7769MIPS_msa_min_s_b, // Vector Signed Minimum
7770MIPS_msa_min_s_h, // Vector Signed Minimum
7771MIPS_msa_min_s_w, // Vector Signed Minimum
7772MIPS_msa_min_s_d, // Vector Signed Minimum
7773MIPS_msa_mini_s_b, // Immediate Signed Minimum
7774MIPS_msa_mini_s_h, // Immediate Signed Minimum
7775MIPS_msa_mini_s_w, // Immediate Signed Minimum
7776MIPS_msa_mini_s_d, // Immediate Signed Minimum
7777MIPS_msa_min_u_b, // Vector Unsigned Minimum
7778MIPS_msa_min_u_h, // Vector Unsigned Minimum
7779MIPS_msa_min_u_w, // Vector Unsigned Minimum
7780MIPS_msa_min_u_d, // Vector Unsigned Minimum
7781MIPS_msa_mini_u_b, // Immediate Unsigned Minimum
7782MIPS_msa_mini_u_h, // Immediate Unsigned Minimum
7783MIPS_msa_mini_u_w, // Immediate Unsigned Minimum
7784MIPS_msa_mini_u_d, // Immediate Unsigned Minimum
7785MIPS_msa_max_a_b, // Vector Maximum Based on Absolute Values
7786MIPS_msa_max_a_h, // Vector Maximum Based on Absolute Values
7787MIPS_msa_max_a_w, // Vector Maximum Based on Absolute Values
7788MIPS_msa_max_a_d, // Vector Maximum Based on Absolute Values
7789MIPS_msa_min_a_b, // Vector Minimum Based on Absolute Value
7790MIPS_msa_min_a_h, // Vector Minimum Based on Absolute Value
7791MIPS_msa_min_a_w, // Vector Minimum Based on Absolute Value
7792MIPS_msa_min_a_d, // Vector Minimum Based on Absolute Value
7793MIPS_msa_ceq_b, // Vector Compare Equal
7794MIPS_msa_ceq_h, // Vector Compare Equal
7795MIPS_msa_ceq_w, // Vector Compare Equal
7796MIPS_msa_ceq_d, // Vector Compare Equal
7797MIPS_msa_ceqi_b, // Immediate Compare Equal
7798MIPS_msa_ceqi_h, // Immediate Compare Equal
7799MIPS_msa_ceqi_w, // Immediate Compare Equal
7800MIPS_msa_ceqi_d, // Immediate Compare Equal
7801MIPS_msa_clt_s_b, // Vector Compare Signed Less Than
7802MIPS_msa_clt_s_h, // Vector Compare Signed Less Than
7803MIPS_msa_clt_s_w, // Vector Compare Signed Less Than
7804MIPS_msa_clt_s_d, // Vector Compare Signed Less Than
7805MIPS_msa_clti_s_b, // Immediate Compare Signed Less Than
7806MIPS_msa_clti_s_h, // Immediate Compare Signed Less Than
7807MIPS_msa_clti_s_w, // Immediate Compare Signed Less Than
7808MIPS_msa_clti_s_d, // Immediate Compare Signed Less Than
7809MIPS_msa_clt_u_b, // Vector Compare Unsigned Less Than
7810MIPS_msa_clt_u_h, // Vector Compare Unsigned Less Than
7811MIPS_msa_clt_u_w, // Vector Compare Unsigned Less Than
7812MIPS_msa_clt_u_d, // Vector Compare Unsigned Less Than
7813MIPS_msa_clti_u_b, // Immediate Compare Unsigned Less Than
7814MIPS_msa_clti_u_h, // Immediate Compare Unsigned Less Than
7815MIPS_msa_clti_u_w, // Immediate Compare Unsigned Less Than
7816MIPS_msa_clti_u_d, // Immediate Compare Unsigned Less Than
7817MIPS_msa_cle_s_b, // Vector Compare Signed Less Than or Equal
7818MIPS_msa_cle_s_h, // Vector Compare Signed Less Than or Equal
7819MIPS_msa_cle_s_w, // Vector Compare Signed Less Than or Equal
7820MIPS_msa_cle_s_d, // Vector Compare Signed Less Than or Equal
7821MIPS_msa_clei_s_b, // Immediate Compare Signed Less Than or Equal
7822MIPS_msa_clei_s_h, // Immediate Compare Signed Less Than or Equal
7823MIPS_msa_clei_s_w, // Immediate Compare Signed Less Than or Equal
7824MIPS_msa_clei_s_d, // Immediate Compare Signed Less Than or Equal
7825MIPS_msa_cle_u_b, // Vector Compare Unsigned Less Than or Equal
7826MIPS_msa_cle_u_h, // Vector Compare Unsigned Less Than or Equal
7827MIPS_msa_cle_u_w, // Vector Compare Unsigned Less Than or Equal
7828MIPS_msa_cle_u_d, // Vector Compare Unsigned Less Than or Equal
7829MIPS_msa_clei_u_b, // Immediate Compare Unsigned Less Than or Equal
7830MIPS_msa_clei_u_h, // Immediate Compare Unsigned Less Than or Equal
7831MIPS_msa_clei_u_w, // Immediate Compare Unsigned Less Than or Equal
7832MIPS_msa_clei_u_d, // Immediate Compare Unsigned Less Than or Equal
7833MIPS_msa_ld_b, // Vector Load
7834MIPS_msa_ld_h, // Vector Load
7835MIPS_msa_ld_w, // Vector Load
7836MIPS_msa_ld_d, // Vector Load
7837MIPS_msa_st_b, // Vector Store
7838MIPS_msa_st_h, // Vector Store
7839MIPS_msa_st_w, // Vector Store
7840MIPS_msa_st_d, // Vector Store
7841MIPS_msa_sat_s_b, // Immediate Signed Saturate
7842MIPS_msa_sat_s_h, // Immediate Signed Saturate
7843MIPS_msa_sat_s_w, // Immediate Signed Saturate
7844MIPS_msa_sat_s_d, // Immediate Signed Saturate
7845MIPS_msa_sat_u_b, // Immediate Unsigned Saturate
7846MIPS_msa_sat_u_h, // Immediate Unsigned Saturate
7847MIPS_msa_sat_u_w, // Immediate Unsigned Saturate
7848MIPS_msa_sat_u_d, // Immediate Unsigned Saturate
7849MIPS_msa_add_a_b, // Vector Add Absolute Values
7850MIPS_msa_add_a_h, // Vector Add Absolute Values
7851MIPS_msa_add_a_w, // Vector Add Absolute Values
7852MIPS_msa_add_a_d, // Vector Add Absolute Values
7853MIPS_msa_adds_a_b, // Vector Saturated Add of Absolute Values
7854MIPS_msa_adds_a_h, // Vector Saturated Add of Absolute Values
7855MIPS_msa_adds_a_w, // Vector Saturated Add of Absolute Values
7856MIPS_msa_adds_a_d, // Vector Saturated Add of Absolute Values
7857MIPS_msa_adds_s_b, // Vector Signed Saturated Add of Signed Values
7858MIPS_msa_adds_s_h, // Vector Signed Saturated Add of Signed Values
7859MIPS_msa_adds_s_w, // Vector Signed Saturated Add of Signed Values
7860MIPS_msa_adds_s_d, // Vector Signed Saturated Add of Signed Values
7861MIPS_msa_adds_u_b, // Vector Unsigned Saturated Add of Unsigned Values
7862MIPS_msa_adds_u_h, // Vector Unsigned Saturated Add of Unsigned Values
7863MIPS_msa_adds_u_w, // Vector Unsigned Saturated Add of Unsigned Values
7864MIPS_msa_adds_u_d, // Vector Unsigned Saturated Add of Unsigned Values
7865MIPS_msa_ave_s_b, // Vector Signed Average
7866MIPS_msa_ave_s_h, // Vector Signed Average
7867MIPS_msa_ave_s_w, // Vector Signed Average
7868MIPS_msa_ave_s_d, // Vector Signed Average
7869MIPS_msa_ave_u_b, // Vector Unsigned Average
7870MIPS_msa_ave_u_h, // Vector Unsigned Average
7871MIPS_msa_ave_u_w, // Vector Unsigned Average
7872MIPS_msa_ave_u_d, // Vector Unsigned Average
7873MIPS_msa_aver_s_b, // Vector Signed Average Rounded
7874MIPS_msa_aver_s_h, // Vector Signed Average Rounded
7875MIPS_msa_aver_s_w, // Vector Signed Average Rounded
7876MIPS_msa_aver_s_d, // Vector Signed Average Rounded
7877MIPS_msa_aver_u_b, // Vector Unsigned Average Rounded
7878MIPS_msa_aver_u_h, // Vector Unsigned Average Rounded
7879MIPS_msa_aver_u_w, // Vector Unsigned Average Rounded
7880MIPS_msa_aver_u_d, // Vector Unsigned Average Rounded
7881MIPS_msa_subs_s_b, // Vector Signed Saturated Subtract of Signed Values
7882MIPS_msa_subs_s_h, // Vector Signed Saturated Subtract of Signed Values
7883MIPS_msa_subs_s_w, // Vector Signed Saturated Subtract of Signed Values
7884MIPS_msa_subs_s_d, // Vector Signed Saturated Subtract of Signed Values
7885MIPS_msa_subs_u_b, // Vector Unsigned Saturated Subtract of Unsigned Values
7886MIPS_msa_subs_u_h, // Vector Unsigned Saturated Subtract of Unsigned Values
7887MIPS_msa_subs_u_w, // Vector Unsigned Saturated Subtract of Unsigned Values
7888MIPS_msa_subs_u_d, // Vector Unsigned Saturated Subtract of Unsigned Values
7889MIPS_msa_subsus_u_b, // Vector Unsigned Saturated Subtract of Signed from Unsigned
7890MIPS_msa_subsus_u_h, // Vector Unsigned Saturated Subtract of Signed from Unsigned
7891MIPS_msa_subsus_u_w, // Vector Unsigned Saturated Subtract of Signed from Unsigned
7892MIPS_msa_subsus_u_d, // Vector Unsigned Saturated Subtract of Signed from Unsigned
7893MIPS_msa_subsuu_s_b, // Vector Signed Saturated Subtract of Unsigned Values
7894MIPS_msa_subsuu_s_h, // Vector Signed Saturated Subtract of Unsigned Values
7895MIPS_msa_subsuu_s_w, // Vector Signed Saturated Subtract of Unsigned Values
7896MIPS_msa_subsuu_s_d, // Vector Signed Saturated Subtract of Unsigned Values
7897MIPS_msa_asub_s_b, // Vector Absolute Values of Signed Subtract
7898MIPS_msa_asub_s_h, // Vector Absolute Values of Signed Subtract
7899MIPS_msa_asub_s_w, // Vector Absolute Values of Signed Subtract
7900MIPS_msa_asub_s_d, // Vector Absolute Values of Signed Subtract
7901MIPS_msa_asub_u_b, // Vector Absolute Values of Unsigned Subtract
7902MIPS_msa_asub_u_h, // Vector Absolute Values of Unsigned Subtract
7903MIPS_msa_asub_u_w, // Vector Absolute Values of Unsigned Subtract
7904MIPS_msa_asub_u_d, // Vector Absolute Values of Unsigned Subtract
7905MIPS_msa_mulv_b, // Vector Multiply
7906MIPS_msa_mulv_h, // Vector Multiply
7907MIPS_msa_mulv_w, // Vector Multiply
7908MIPS_msa_mulv_d, // Vector Multiply
7909MIPS_msa_maddv_b, // Vector Multiply and Add
7910MIPS_msa_maddv_h, // Vector Multiply and Add
7911MIPS_msa_maddv_w, // Vector Multiply and Add
7912MIPS_msa_maddv_d, // Vector Multiply and Add
7913MIPS_msa_msubv_b, // Vector Multiply and Subtract
7914MIPS_msa_msubv_h, // Vector Multiply and Subtract
7915MIPS_msa_msubv_w, // Vector Multiply and Subtract
7916MIPS_msa_msubv_d, // Vector Multiply and Subtract
7917MIPS_msa_div_s_b, // Vector Signed Divide
7918MIPS_msa_div_s_h, // Vector Signed Divide
7919MIPS_msa_div_s_w, // Vector Signed Divide
7920MIPS_msa_div_s_d, // Vector Signed Divide
7921MIPS_msa_div_u_b, // Vector Unsigned Divide
7922MIPS_msa_div_u_h, // Vector Unsigned Divide
7923MIPS_msa_div_u_w, // Vector Unsigned Divide
7924MIPS_msa_div_u_d, // Vector Unsigned Divide
7925MIPS_msa_mod_s_b, // Vector Signed Modulo
7926MIPS_msa_mod_s_h, // Vector Signed Modulo
7927MIPS_msa_mod_s_w, // Vector Signed Modulo
7928MIPS_msa_mod_s_d, // Vector Signed Modulo
7929MIPS_msa_mod_u_b, // Vector Unsigned Modulo
7930MIPS_msa_mod_u_h, // Vector Unsigned Modulo
7931MIPS_msa_mod_u_w, // Vector Unsigned Modulo
7932MIPS_msa_mod_u_d, // Vector Unsigned Modulo
7933MIPS_msa_dotp_s_h, // Vector Signed Dot Product
7934MIPS_msa_dotp_s_w, // Vector Signed Dot Product
7935MIPS_msa_dotp_s_d, // Vector Signed Dot Product
7936MIPS_msa_dotp_u_h, // Vector Unsigned Dot Product
7937MIPS_msa_dotp_u_w, // Vector Unsigned Dot Product
7938MIPS_msa_dotp_u_d, // Vector Unsigned Dot Product
7939MIPS_msa_dpadd_s_h, // Vector Signed Dot Product and Add
7940MIPS_msa_dpadd_s_w, // Vector Signed Dot Product and Add
7941MIPS_msa_dpadd_s_d, // Vector Signed Dot Product and Add
7942MIPS_msa_dpadd_u_h, // Vector Unsigned Dot Product and Add
7943MIPS_msa_dpadd_u_w, // Vector Unsigned Dot Product and Add
7944MIPS_msa_dpadd_u_d, // Vector Unsigned Dot Product and Add
7945MIPS_msa_dpsub_s_h, // Vector Signed Dot Product and Subtract
7946MIPS_msa_dpsub_s_w, // Vector Signed Dot Product and Subtract
7947MIPS_msa_dpsub_s_d, // Vector Signed Dot Product and Subtract
7948MIPS_msa_dpsub_u_h, // Vector Unsigned Dot Product and Subtract
7949MIPS_msa_dpsub_u_w, // Vector Unsigned Dot Product and Subtract
7950MIPS_msa_dpsub_u_d, // Vector Unsigned Dot Product and Subtract
7951MIPS_msa_sld_b, // GPR Columns Slide
7952MIPS_msa_sld_h, // GPR Columns Slide
7953MIPS_msa_sld_w, // GPR Columns Slide
7954MIPS_msa_sld_d, // GPR Columns Slide
7955MIPS_msa_sldi_b, // Immediate Columns Slide
7956MIPS_msa_sldi_h, // Immediate Columns Slide
7957MIPS_msa_sldi_w, // Immediate Columns Slide
7958MIPS_msa_sldi_d, // Immediate Columns Slide
7959MIPS_msa_splat_b, // GPR Element Splat
7960MIPS_msa_splat_h, // GPR Element Splat
7961MIPS_msa_splat_w, // GPR Element Splat
7962MIPS_msa_splat_d, // GPR Element Splat
7963MIPS_msa_splati_b, // Immediate Element Splat
7964MIPS_msa_splati_h, // Immediate Element Splat
7965MIPS_msa_splati_w, // Immediate Element Splat
7966MIPS_msa_splati_d, // Immediate Element Splat
7967MIPS_msa_pckev_b, // Vector Pack Even
7968MIPS_msa_pckev_h, // Vector Pack Even
7969MIPS_msa_pckev_w, // Vector Pack Even
7970MIPS_msa_pckev_d, // Vector Pack Even
7971MIPS_msa_pckod_b, // Vector Pack Odd
7972MIPS_msa_pckod_h, // Vector Pack Odd
7973MIPS_msa_pckod_w, // Vector Pack Odd
7974MIPS_msa_pckod_d, // Vector Pack Odd
7975MIPS_msa_ilvl_b, // Vector Interleave Left
7976MIPS_msa_ilvl_h, // Vector Interleave Left
7977MIPS_msa_ilvl_w, // Vector Interleave Left
7978MIPS_msa_ilvl_d, // Vector Interleave Left
7979MIPS_msa_ilvr_b, // Vector Interleave Right
7980MIPS_msa_ilvr_h, // Vector Interleave Right
7981MIPS_msa_ilvr_w, // Vector Interleave Right
7982MIPS_msa_ilvr_d, // Vector Interleave Right
7983MIPS_msa_ilvev_b, // Vector Interleave Even
7984MIPS_msa_ilvev_h, // Vector Interleave Even
7985MIPS_msa_ilvev_w, // Vector Interleave Even
7986MIPS_msa_ilvev_d, // Vector Interleave Even
7987MIPS_msa_ilvod_b, // Vector Interleave Odd
7988MIPS_msa_ilvod_h, // Vector Interleave Odd
7989MIPS_msa_ilvod_w, // Vector Interleave Odd
7990MIPS_msa_ilvod_d, // Vector Interleave Odd
7991MIPS_msa_vshf_b, // Vector Data Preserving Shuffle
7992MIPS_msa_vshf_h, // Vector Data Preserving Shuffle
7993MIPS_msa_vshf_w, // Vector Data Preserving Shuffle
7994MIPS_msa_vshf_d, // Vector Data Preserving Shuffle
7995MIPS_msa_srar_b, // Vector Shift Right Arithmetic Rounded
7996MIPS_msa_srar_h, // Vector Shift Right Arithmetic Rounded
7997MIPS_msa_srar_w, // Vector Shift Right Arithmetic Rounded
7998MIPS_msa_srar_d, // Vector Shift Right Arithmetic Rounded
7999MIPS_msa_srari_b, // Immediate Shift Right Arithmetic Rounded
8000MIPS_msa_srari_h, // Immediate Shift Right Arithmetic Rounded
8001MIPS_msa_srari_w, // Immediate Shift Right Arithmetic Rounded
8002MIPS_msa_srari_d, // Immediate Shift Right Arithmetic Rounded
8003MIPS_msa_srlr_b, // Vector Shift Right Logical Rounded
8004MIPS_msa_srlr_h, // Vector Shift Right Logical Rounded
8005MIPS_msa_srlr_w, // Vector Shift Right Logical Rounded
8006MIPS_msa_srlr_d, // Vector Shift Right Logical Rounded
8007MIPS_msa_srlri_b, // Immediate Shift Right Logical Rounded
8008MIPS_msa_srlri_h, // Immediate Shift Right Logical Rounded
8009MIPS_msa_srlri_w, // Immediate Shift Right Logical Rounded
8010MIPS_msa_srlri_d, // Immediate Shift Right Logical Rounded
8011MIPS_msa_hadd_s_h, // Vector Signed Horizontal Add
8012MIPS_msa_hadd_s_w, // Vector Signed Horizontal Add
8013MIPS_msa_hadd_s_d, // Vector Signed Horizontal Add
8014MIPS_msa_hadd_u_h, // Vector Unsigned Horizontal Add
8015MIPS_msa_hadd_u_w, // Vector Unsigned Horizontal Add
8016MIPS_msa_hadd_u_d, // Vector Unsigned Horizontal Add
8017MIPS_msa_hsub_s_h, // Vector Signed Horizontal Subtract
8018MIPS_msa_hsub_s_w, // Vector Signed Horizontal Subtract
8019MIPS_msa_hsub_s_d, // Vector Signed Horizontal Subtract
8020MIPS_msa_hsub_u_h, // Vector Unsigned Horizontal Subtract
8021MIPS_msa_hsub_u_w, // Vector Unsigned Horizontal Subtract
8022MIPS_msa_hsub_u_d, // Vector Unsigned Horizontal Subtract
8023MIPS_msa_and_v, // Vector Logical And
8024MIPS_msa_andi_b, // Immediate Logical And
8025MIPS_msa_or_v, // Vector Logical Or
8026MIPS_msa_ori_b, // Immediate Logical Or
8027MIPS_msa_nor_v, // Vector Logical Negated Or
8028MIPS_msa_nori_b, // Immediate Logical Negated Or
8029MIPS_msa_xor_v, // Vector Logical Exclusive Or
8030MIPS_msa_xori_b, // Immediate Logical Exclusive Or
8031MIPS_msa_bmnz_v, // Vector Bit Move If Not Zero
8032MIPS_msa_bmnzi_b, // Immediate Bit Move If Not Zero
8033MIPS_msa_bmz_v, // Vector Bit Move If Zero
8034MIPS_msa_bmzi_b, // Immediate Bit Move If Zero
8035MIPS_msa_bsel_v, // Vector Bit Select
8036MIPS_msa_bseli_b, // Immediate Bit Select
8037MIPS_msa_shf_b, // Immediate Set Shuffle Elements
8038MIPS_msa_shf_h, // Immediate Set Shuffle Elements
8039MIPS_msa_shf_w, // Immediate Set Shuffle Elements
8040MIPS_msa_bnz_v, // Immediate Branch If Not Zero (At Least One Element of Any Format Is Not Zero)
8041MIPS_msa_bz_v, // Immediate Branch If Zero (All Elements of Any Format Are Zero)
8042MIPS_msa_fill_b, // Vector Fill from GPR
8043MIPS_msa_fill_h, // Vector Fill from GPR
8044MIPS_msa_fill_w, // Vector Fill from GPR
8045MIPS_msa_fill_d, // Vector Fill from GPR
8046MIPS_msa_pcnt_b, // Vector Population Count
8047MIPS_msa_pcnt_h, // Vector Population Count
8048MIPS_msa_pcnt_w, // Vector Population Count
8049MIPS_msa_pcnt_d, // Vector Population Count
8050MIPS_msa_nloc_b, // Vector Leading Ones Count
8051MIPS_msa_nloc_h, // Vector Leading Ones Count
8052MIPS_msa_nloc_w, // Vector Leading Ones Count
8053MIPS_msa_nloc_d, // Vector Leading Ones Count
8054MIPS_msa_nlzc_b, // Vector Leading Zeros Count
8055MIPS_msa_nlzc_h, // Vector Leading Zeros Count
8056MIPS_msa_nlzc_w, // Vector Leading Zeros Count
8057MIPS_msa_nlzc_d, // Vector Leading Zeros Count
8058MIPS_msa_copy_s_b, // Element Copy to GPR Signed
8059MIPS_msa_copy_s_h, // Element Copy to GPR Signed
8060MIPS_msa_copy_s_w, // Element Copy to GPR Signed
8061MIPS_msa_copy_s_d, // Element Copy to GPR Signed
8062MIPS_msa_copy_u_b, // Element Copy to GPR Unsigned
8063MIPS_msa_copy_u_h, // Element Copy to GPR Unsigned
8064MIPS_msa_copy_u_w, // Element Copy to GPR Unsigned
8065MIPS_msa_copy_u_d, // Element Copy to GPR Unsigned
8066MIPS_msa_insert_b, // GPR Insert Element
8067MIPS_msa_insert_h, // GPR Insert Element
8068MIPS_msa_insert_w, // GPR Insert Element
8069MIPS_msa_insert_d, // GPR Insert Element
8070MIPS_msa_insve_b, // Element Insert Element
8071MIPS_msa_insve_h, // Element Insert Element
8072MIPS_msa_insve_w, // Element Insert Element
8073MIPS_msa_insve_d, // Element Insert Element
8074MIPS_msa_bnz_b, // Immediate Branch If All Elements Are Not Zero
8075MIPS_msa_bnz_h, // Immediate Branch If All Elements Are Not Zero
8076MIPS_msa_bnz_w, // Immediate Branch If All Elements Are Not Zero
8077MIPS_msa_bnz_d, // Immediate Branch If All Elements Are Not Zero
8078MIPS_msa_bz_b, // Immediate Branch If At Least One Element Is Zero
8079MIPS_msa_bz_h, // Immediate Branch If At Least One Element Is Zero
8080MIPS_msa_bz_w, // Immediate Branch If At Least One Element Is Zero
8081MIPS_msa_bz_d, // Immediate Branch If At Least One Element Is Zero
8082MIPS_msa_ldi_b, // Immediate Load
8083MIPS_msa_ldi_h, // Immediate Load
8084MIPS_msa_ldi_w, // Immediate Load
8085MIPS_msa_ldi_d, // Immediate Load
8086MIPS_msa_fcaf_w, // Vector Floating-Point Quiet Compare Always False
8087MIPS_msa_fcaf_d, // Vector Floating-Point Quiet Compare Always False
8088MIPS_msa_fcun_w, // Vector Floating-Point Quiet Compare Unordered
8089MIPS_msa_fcun_d, // Vector Floating-Point Quiet Compare Unordered
8090MIPS_msa_fceq_w, // Vector Floating-Point Quiet Compare Equal
8091MIPS_msa_fceq_d, // Vector Floating-Point Quiet Compare Equal
8092MIPS_msa_fcueq_w, // Vector Floating-Point Quiet Compare Unordered or Equal
8093MIPS_msa_fcueq_d, // Vector Floating-Point Quiet Compare Unordered or Equal
8094MIPS_msa_fclt_w, // Vector Floating-Point Quiet Compare Less Than
8095MIPS_msa_fclt_d, // Vector Floating-Point Quiet Compare Less Than
8096MIPS_msa_fcult_w, // Vector Floating-Point Quiet Compare Unordered or Less Than
8097MIPS_msa_fcult_d, // Vector Floating-Point Quiet Compare Unordered or Less Than
8098MIPS_msa_fcle_w, // Vector Floating-Point Quiet Compare Less or Equal
8099MIPS_msa_fcle_d, // Vector Floating-Point Quiet Compare Less or Equal
8100MIPS_msa_fcule_w, // Vector Floating-Point Quiet Compare Unordered or Less or Equal
8101MIPS_msa_fcule_d, // Vector Floating-Point Quiet Compare Unordered or Less or Equal
8102MIPS_msa_fsaf_w, // Vector Floating-Point Signaling Compare Always False
8103MIPS_msa_fsaf_d, // Vector Floating-Point Signaling Compare Always False
8104MIPS_msa_fsun_w, // Vector Floating-Point Signaling Compare Unordered
8105MIPS_msa_fsun_d, // Vector Floating-Point Signaling Compare Unordered
8106MIPS_msa_fseq_w, // Vector Floating-Point Signaling Compare Equal
8107MIPS_msa_fseq_d, // Vector Floating-Point Signaling Compare Equal
8108MIPS_msa_fsueq_w, // Vector Floating-Point Signaling Compare Unordered or Equal
8109MIPS_msa_fsueq_d, // Vector Floating-Point Signaling Compare Unordered or Equal
8110MIPS_msa_fslt_w, // Vector Floating-Point Signaling Compare Less Than
8111MIPS_msa_fslt_d, // Vector Floating-Point Signaling Compare Less Than
8112MIPS_msa_fsult_w, // Vector Floating-Point Signaling Compare Unordered or Less Than
8113MIPS_msa_fsult_d, // Vector Floating-Point Signaling Compare Unordered or Less Than
8114MIPS_msa_fsle_w, // Vector Floating-Point Signaling Compare Less or Equal
8115MIPS_msa_fsle_d, // Vector Floating-Point Signaling Compare Less or Equal
8116MIPS_msa_fsule_w, // Vector Floating-Point Signaling Compare Unordered or Less or Equal
8117MIPS_msa_fsule_d, // Vector Floating-Point Signaling Compare Unordered or Less or Equal
8118MIPS_msa_fadd_w, // Vector Floating-Point Addition
8119MIPS_msa_fadd_d, // Vector Floating-Point Addition
8120MIPS_msa_fsub_w, // Vector Floating-Point Subtraction
8121MIPS_msa_fsub_d, // Vector Floating-Point Subtraction
8122MIPS_msa_fmul_w, // Vector Floating-Point Multiplication
8123MIPS_msa_fmul_d, // Vector Floating-Point Multiplication
8124MIPS_msa_fdiv_w, // Vector Floating-Point Division
8125MIPS_msa_fdiv_d, // Vector Floating-Point Division
8126MIPS_msa_fmadd_w, // Vector Floating-Point Multiply-Add
8127MIPS_msa_fmadd_d, // Vector Floating-Point Multiply-Add
8128MIPS_msa_fmsub_w, // Vector Floating-Point Multiply-Sub
8129MIPS_msa_fmsub_d, // Vector Floating-Point Multiply-Sub
8130MIPS_msa_fexp2_w, // Vector Floating-Point Base 2 Exponentiation
8131MIPS_msa_fexp2_d, // Vector Floating-Point Base 2 Exponentiation
8132MIPS_msa_fexdo_h, // Vector Floating-Point Down-Convert Interchange Format
8133MIPS_msa_fexdo_w, // Vector Floating-Point Down-Convert Interchange Format
8134MIPS_msa_ftq_h, // Vector Floating-Point Convert to Fixed-Point
8135MIPS_msa_ftq_w, // Vector Floating-Point Convert to Fixed-Point
8136MIPS_msa_fmin_w, // Vector Floating-Point Minimum
8137MIPS_msa_fmin_d, // Vector Floating-Point Minimum
8138MIPS_msa_fmin_a_w, // Vector Floating-Point Minimum Based on Absolute Values
8139MIPS_msa_fmin_a_d, // Vector Floating-Point Minimum Based on Absolute Values
8140MIPS_msa_fmax_w, // Vector Floating-Point Maximum
8141MIPS_msa_fmax_d, // Vector Floating-Point Maximum
8142MIPS_msa_fmax_a_w, // Vector Floating-Point Maximum Based on Absolute Values
8143MIPS_msa_fmax_a_d, // Vector Floating-Point Maximum Based on Absolute Values
8144MIPS_msa_fcor_w, // Vector Floating-Point Quiet Compare Ordered
8145MIPS_msa_fcor_d, // Vector Floating-Point Quiet Compare Ordered
8146MIPS_msa_fcune_w, // Vector Floating-Point Quiet Compare Unordered or Not Equal
8147MIPS_msa_fcune_d, // Vector Floating-Point Quiet Compare Unordered or Not Equal
8148MIPS_msa_fcne_w, // Vector Floating-Point Quiet Compare Not Equal
8149MIPS_msa_fcne_d, // Vector Floating-Point Quiet Compare Not Equal
8150MIPS_msa_mul_q_h, // Vector Fixed-Point Multiply
8151MIPS_msa_mul_q_w, // Vector Fixed-Point Multiply
8152MIPS_msa_madd_q_h, // Vector Fixed-Point Multiply and Add
8153MIPS_msa_madd_q_w, // Vector Fixed-Point Multiply and Add
8154MIPS_msa_msub_q_h, // Vector Fixed-Point Multiply and Subtract
8155MIPS_msa_msub_q_w, // Vector Fixed-Point Multiply and Subtract
8156MIPS_msa_fsor_w, // Vector Floating-Point Signaling Compare Ordered
8157MIPS_msa_fsor_d, // Vector Floating-Point Signaling Compare Ordered
8158MIPS_msa_fsune_w, // Vector Floating-Point Signaling Compare Unordered or Not Equal
8159MIPS_msa_fsune_d, // Vector Floating-Point Signaling Compare Unordered or Not Equal
8160MIPS_msa_fsne_w, // Vector Floating-Point Signaling Compare Not Equal
8161MIPS_msa_fsne_d, // Vector Floating-Point Signaling Compare Not Equal
8162MIPS_msa_mulr_q_h, // Vector Fixed-Point Multiply Rounded
8163MIPS_msa_mulr_q_w, // Vector Fixed-Point Multiply Rounded
8164MIPS_msa_maddr_q_h, // Vector Fixed-Point Multiply and Add Rounded
8165MIPS_msa_maddr_q_w, // Vector Fixed-Point Multiply and Add Rounded
8166MIPS_msa_msubr_q_h, // Vector Fixed-Point Multiply and Subtract Rounded
8167MIPS_msa_msubr_q_w, // Vector Fixed-Point Multiply and Subtract Rounded
8168MIPS_msa_fclass_w, // Vector Floating-Point Class Mask
8169MIPS_msa_fclass_d, // Vector Floating-Point Class Mask
8170MIPS_msa_ftrunc_s_w, // Vector Floating-Point Truncate and Convert to Signed Integer
8171MIPS_msa_ftrunc_s_d, // Vector Floating-Point Truncate and Convert to Signed Integer
8172MIPS_msa_ftrunc_u_w, // Vector Floating-Point Truncate and Convert to Unsigned Integer
8173MIPS_msa_ftrunc_u_d, // Vector Floating-Point Truncate and Convert to Unsigned Integer
8174MIPS_msa_fsqrt_w, // Vector Floating-Point Square Root
8175MIPS_msa_fsqrt_d, // Vector Floating-Point Square Root
8176MIPS_msa_frsqrt_w, // Vector Approximate Floating-Point Reciprocal of Square Root
8177MIPS_msa_frsqrt_d, // Vector Approximate Floating-Point Reciprocal of Square Root
8178MIPS_msa_frcp_w, // Vector Approximate Floating-Point Reciprocal
8179MIPS_msa_frcp_d, // Vector Approximate Floating-Point Reciprocal
8180MIPS_msa_frint_w, // Vector Floating-Point Round to Integer
8181MIPS_msa_frint_d, // Vector Floating-Point Round to Integer
8182MIPS_msa_flog2_w, // Vector Floating-Point Base 2 Logarithm
8183MIPS_msa_flog2_d, // Vector Floating-Point Base 2 Logarithm
8184MIPS_msa_fexupl_w, // Vector Floating-Point Up-Convert Interchange Format Left
8185MIPS_msa_fexupl_d, // Vector Floating-Point Up-Convert Interchange Format Left
8186MIPS_msa_fexupr_w, // Vector Floating-Point Up-Convert Interchange Format Right
8187MIPS_msa_fexupr_d, // Vector Floating-Point Up-Convert Interchange Format Right
8188MIPS_msa_ffql_w, // Vector Floating-Point Convert from Fixed-Point Left
8189MIPS_msa_ffql_d, // Vector Floating-Point Convert from Fixed-Point Left
8190MIPS_msa_ffqr_w, // Vector Floating-Point Convert from Fixed-Point Right
8191MIPS_msa_ffqr_d, // Vector Floating-Point Convert from Fixed-Point Right
8192MIPS_msa_ftint_s_w, // Vector Floating-Point Convert to Signed Integer
8193MIPS_msa_ftint_s_d, // Vector Floating-Point Convert to Signed Integer
8194MIPS_msa_ftint_u_w, // Vector Floating-Point Round and Convert to Unsigned Integer
8195MIPS_msa_ftint_u_d, // Vector Floating-Point Round and Convert to Unsigned Integer
8196MIPS_msa_ffint_s_w, // Vector Floating-Point Round and Convert from Signed Integer
8197MIPS_msa_ffint_s_d, // Vector Floating-Point Round and Convert from Signed Integer
8198MIPS_msa_ffint_u_w, // Vector Floating-Point Convert from Unsigned Integer
8199MIPS_msa_ffint_u_d, // Vector Floating-Point Convert from Unsigned Integer
8200MIPS_msa_ctcmsa, // GPR Copy to MSA Control Register
8201MIPS_msa_cfcmsa, // GPR Copy from MSA Control Register
8202MIPS_msa_move_v, // Vector Move
8203// MIPS R6 (LSA is also part of MSA)
8204MIPS_lsa, // Left Shift Add
8205MIPS_dlsa, // Doubleword Left Shift Add
8206// MIPS R3 EVA
8207MIPS_lbe, // Load Byte EVA
8208MIPS_lbue, // Load Byte Unsigned EVA
8209MIPS_lhe, // Load Halfword EVA
8210MIPS_lhue, // Load Halfword Unsigned EVA
8211MIPS_lwe, // Load Word EVA
8212MIPS_sbe, // Store Byte EVA
8213MIPS_she, // Store Halfword EVA
8214MIPS_swe, // Store Word EVA
8215MIPS_lle, // Load Linked Word EVA
8216MIPS_sce, // Store Conditional Word EVA
8217MIPS_cachee, // Perform Cache Operation EVA
8218MIPS_prefe, // Prefetch EVA
8219MIPS_lwle, // Load Word Left EVA
8220MIPS_lwre, // Load Word Right EVA
8221MIPS_swle, // Store Word Left EVA
8222MIPS_swre, // Store Word Right EVA
8223// new MIPS16e2 instructions
8224MIPS_movtz, // Move Conditional on T Equal to Zero
8225MIPS_movtn, // Move Zero Conditional on T Not Equal to Zero
8226// interAptiv core custom instructions
8227MIPS_copyw, // Copy Data to Aligned Memory Location
8228MIPS_ucopyw, // Copy Data to Unaligned Memory Location
8229// MIPSr6 instructions for NanoMIPS
8230MIPS_muh, // Multiply High
8231MIPS_mulu, // Multiply Unsigned
8232MIPS_muhu, // Multiply High Unsigned
8233MIPS_mod, // Modulo
8234MIPS_modu, // Modulo Unsigned
8235MIPS_sov, // Set on Overflow
8236MIPS_crc32b, // CRC32 Byte
8237MIPS_crc32h, // CRC32 Half
8238MIPS_crc32w, // CRC32 Word
8239MIPS_crc32cb, // CRC32 Castagnoli Byte
8240MIPS_crc32ch, // CRC32 Castagnoli Half
8241MIPS_crc32cw, // CRC32 Castagnoli Word
8242MIPS_sbx, // Store Byte indeXed
8243MIPS_shx, // Store Half indeXed
8244MIPS_shxs, // Store Half indeXed Scaled
8245MIPS_swx, // Store Word indeXed
8246MIPS_swxs, // Store Word indeXed Scaled
8247MIPS_lhxs, // Load Half indeXed Scaled
8248MIPS_lhuxs, // Load Half Unsigned indeXed Scaled
8249MIPS_mfhc0, // Move From High Coprocessor 0
8250MIPS_mthc0, // Move To High Coprocessor 0
8251MIPS_extw, // Extend Word
8252MIPS_tlbinv, // TLB Invalidate
8253MIPS_tlbinvf, // TLB Invalidate Flush
8254MIPS_ginvt, // Globally Invalidate TLBs
8255MIPS_ginvi, // Globally Invalidate Instruction caches
8256MIPS_eretnc, // Exception Return Not Clearing LLBit
8257MIPS_lwpc, // Load Word PC relative
8258MIPS_swpc, // Store Word PC relative
8259MIPS_rotx, // Rotate and eXchange
8260MIPS_llwp, // Load Linked Word Pair
8261MIPS_llwpe, // Load Linked Word Pair using EVA addressing
8262MIPS_scwp, // Load Linked Word Pair
8263MIPS_scwpe, // Load Linked Word Pair using EVA addressing
8264MIPS_ualwm, // Unaligned Load Word Multiple
8265MIPS_uaswm, // Unaligned Store Word Multiple
8266MIPS_ualh, // Unaligned Load Half
8267MIPS_uash, // Unaligned Store Half
8268MIPS_syncie, // SYNChronize Instruction cache using EVA addressing
8269MIPS_dvp, // Disable Virtual Processor
8270MIPS_evp, // Enable Virtual Processor
8271MIPS_sigrie, // Signal Reserved Instruction Exception
8272MIPS_bc, // Branch Always, Compact
8273MIPS_balc, // Branch Always and Link, Compact
8274MIPS_restore_jrc, // Restore callee saved registers and Jump to Return address, Compact
8275MIPS_move_balc, // Move and Branch and Link, Compact
8276MIPS_addiupc, // Add Immediate (Untrapped) to PC
8277MIPS_jalrc_hb, // Jump And Link Register, Compact, with Hazard Barrier
8278MIPS_aluipc, // Add aLigned Upper Immediate to PC
8279MIPS_beqic, // Branch if Equal to Immediate, Compact
8280MIPS_bbeqzc, // Branch if Bit Equals Zero, Compact
8281MIPS_bgeic, // Branch if Greater than or Equal to Immediate, Compact
8282MIPS_bgeiuc, // Branch if Greater than or Equal to Immediate Unsigned, Compact
8283MIPS_bneic, // Branch if Not Equal to Immediate, Compact
8284MIPS_bbnezc, // Branch if Bit Not Equal to Zero, Compact
8285MIPS_bltic, // Branch if Less Than Immediate, Compact
8286MIPS_bltiuc, // Branch if Less Than Immediate Unsigned Compact
8287MIPS_bnec, // Branch Not Equal, Compact
8288MIPS_bltc, // Branch if Less Than, Compact
8289MIPS_bltuc, // Branch if Less Than Unsigned, Compact
8290MIPS_beqc, // Branch if Equal, Compact
8291MIPS_bgec, // Branch if Greater than or Equal, Compact
8292MIPS_bgeuc, // Branch if Greater than or Equal to Unsigned, Compact
8293MIPS_brsc, // Branch Register Scaled, Compact
8294MIPS_balrsc, // Branch And Link Register Scaled, Compact
8295MIPS_bitrevw, // Reverse all bits
8296MIPS_bitrevh, // Reverse bits in halfs
8297MIPS_bitrevb, // Reverse bits in bytes
8298MIPS_byterevw, // Reverse all bytes
8299MIPS_byterevh, // Reverse bytes in halfs
8300MIPS_lwm2, // Load Word Multiple (w/o reglist)
8301MIPS_swm2, // Store Word Multiple (w/o reglist)
8303};
8304/*
8305 * Interactive disassembler (IDA).
8306 * Copyright (c) 1990-2026 Hex-Rays
8307 * ALL RIGHTS RESERVED.
8308 *
8309 */
8310enum
8311{
8312H8_null = 0, // Unknown Operation
8313H8_add, // Add binary
8314H8_adds, // Add with sign extension
8315H8_addx, // Add with extend carry
8316H8_and, // Logical AND
8317H8_andc, // Logical AND with control register
8318H8_band, // Bit AND
8319H8_bra, // Branch always
8320H8_brn, // Branch never
8321H8_bhi, // Branch if higher
8322H8_bls, // Branch if lower or same
8323H8_bcc, // Branch if carry clear (higher or same)
8324H8_bcs, // Branch if carry set (lower)
8325H8_bne, // Branch if not equal
8326H8_beq, // Branch if equal
8327H8_bvc, // Branch if overflow clear
8328H8_bvs, // Branch if overflow set
8329H8_bpl, // Branch if plus
8330H8_bmi, // Branch if minus
8331H8_bge, // Branch if greates or equal
8332H8_blt, // Branch if less
8333H8_bgt, // Branch if greater
8334H8_ble, // Branch if less or equal
8335H8_bclr, // Bit clear
8336H8_biand, // Bit invert AND
8337H8_bild, // Bit invert load
8338H8_bior, // Bit invert OR
8339H8_bist, // Bit invert store
8340H8_bixor, // Bit invert XOR
8341H8_bld, // Bit load
8342H8_bnot, // Bit NOT
8343H8_bor, // Bit OR
8344H8_bset, // Bit set
8345H8_bsr, // Branch to subroutine
8346H8_bst, // Bit store
8347H8_btst, // Bit test
8348H8_bxor, // Bit XOR
8349H8_clrmac, // Clear MAC register
8350H8_cmp, // Compare
8351H8_daa, // Decimal adjust add
8352H8_das, // Decimal adjust subtract
8353H8_dec, // Decrement
8354H8_divxs, // Divide extended as signed
8355H8_divxu, // Divide extended as unsigned
8356H8_eepmov, // Move data to EEPROM
8357H8_exts, // Extend as signed
8358H8_extu, // Extend as unsigned
8359H8_inc, // Increment
8360H8_jmp, // Jump
8361H8_jsr, // Jump to subroutine
8362H8_ldc, // Load to control register
8363H8_ldm, // Load to multiple registers
8364H8_ldmac, // Load to MAC register
8365H8_mac, // Multiply and accumulate
8366H8_mov, // Move data
8367H8_movfpe, // Move from peripheral with E clock
8368H8_movtpe, // Move to peripheral with E clock
8369H8_mulxs, // Multiply extend as signed
8370H8_mulxu, // Multiply extend as unsigned
8371H8_neg, // Negate
8372H8_nop, // No operation
8373H8_not, // Logical complement
8374H8_or, // Logical OR
8375H8_orc, // Logical OR with control register
8376H8_pop, // Pop data from stack
8377H8_push, // Push data on stack
8378H8_rotl, // Rotate left
8379H8_rotr, // Rotate right
8380H8_rotxl, // Rotate with extend carry left
8381H8_rotxr, // Rotate with extend carry right
8382H8_rte, // Return from exception
8383H8_rts, // Return from subroutine
8384H8_shal, // Shift arithmetic left
8385H8_shar, // Shift arithmetic right
8386H8_shll, // Shift logical left
8387H8_shlr, // Shift logical right
8388H8_sleep, // Power down mode
8389H8_stc, // Store from control register
8390H8_stm, // Store from multiple registers
8391H8_stmac, // Store from MAC register
8392H8_sub, // Subtract binary
8393H8_subs, // Subtract with sign extension
8394H8_subx, // Subtract with extend carry
8395H8_tas, // Test and set
8396H8_trapa, // Trap always
8397H8_xor, // Logical XOR
8398H8_xorc, // Logical XOR with control register
8399// H8SX
8400H8_rtel, // Returns from an exception, restoring data to multiple general registers
8401H8_rtsl, // Returns from a subroutine, restoring data to multiple general registers
8402H8_movmd, // Transfers a data block
8403H8_movsd, // Transfers a data block with zero detection
8404H8_bras, // Branch always after the next instruction (delay slot)
8405H8_movab, // MOVe effective Address/B
8406H8_movaw, // MOVe effective Address/W
8407H8_moval, // MOVe effective Address/L
8408H8_bsetne, // Bit SET if Not Equal
8409H8_bseteq, // Bit SET if EQual
8410H8_bclrne, // Bit CLeaR if Not Equal
8411H8_bclreq, // Bit CLeaR if Equal
8412H8_bstz, // Bit STore Zero flag
8413H8_bistz, // Bit Invert STore Zero flag
8414H8_bfld, // Bit Field LoaD
8415H8_bfst, // Bit Field STore
8416H8_muls, // MULtiply as Signed
8417H8_divs, // DIVide as Signed
8418H8_mulu, // MULtiply as Unsigned
8419H8_divu, // DIVide as Unsigned
8420H8_mulsu, // MULtiply as Signed
8421H8_muluu, // MULtiply as Unsigned
8422H8_brabc, // BRAnch if Bit Cleared
8423H8_brabs, // BRAnch if Bit Set
8424H8_bsrbc, // Branch to SubRoutine if Bit Cleared
8425H8_bsrbs, // Branch to SubRoutine if Bit Set
8427};
8428/*
8429 * Interactive disassembler (IDA).
8430 * Copyright (c) 1990-2026 Hex-Rays
8431 * ALL RIGHTS RESERVED.
8432 *
8433 */
8434enum
8435{
8436PIC_null = 0, // Unknown Operation
8437// BYTE-ORIENTED FILE REGISTER OPERATIONS
8438PIC_addwf, // Add W and f
8439PIC_andwf, // AND W with f
8440PIC_clrf, // Clear f
8441PIC_clrw, // Clear W
8442PIC_comf, // Complement f
8443PIC_decf, // Decrement f
8444PIC_decfsz, // Decrement f, Skip if 0
8445PIC_incf, // Increment f
8446PIC_incfsz, // Increment f, Skip if 0
8447PIC_iorwf, // Inclusive OR W with f
8448PIC_movf, // Move f
8449PIC_movwf, // Move W to f
8450PIC_nop, // No Operation
8451PIC_rlf, // Rotate Left f through Carry
8452PIC_rrf, // Rotate Right f through Carry
8453PIC_subwf, // Subtract W from f
8454PIC_swapf, // Swap nibbles in f
8455PIC_xorwf, // Exclusive OR W with f
8456// BIT-ORIENTED FILE REGISTER OPERATIONS
8457PIC_bcf, // Bit Clear f
8458PIC_bsf, // Bit Set f
8459PIC_btfsc, // Bit Test f, Skip if Clear
8460PIC_btfss, // Bit Test f, Skip if Set
8461// LITERAL AND CONTROL OPERATIONS
8462PIC_addlw, // Add literal and W
8463PIC_andlw, // AND literal with W
8464PIC_call, // Call subroutine
8465PIC_clrwdt, // Clear Watchdog Timer
8466PIC_goto, // Go to address
8467PIC_iorlw, // Inclusive OR literal with W
8468PIC_movlw, // Move literal to W
8469PIC_retfie, // Return from interrupt
8470PIC_retlw, // Return with literal in W
8471PIC_return, // Return from Subroutine
8472PIC_sleep, // Go into standby mode
8473PIC_sublw, // Subtract W from literal
8474PIC_xorlw, // Exclusive OR literal with W
8475// ADDITIONAL INSTRUCTIONS TO MAINTAIN COMPITIBILITY WITH 12C5xx,16C5x
8476PIC_option, // Load OPTION register
8477PIC_tris, // Load TRIS Register
8478// MACROS
8479PIC_movfw, // Move Contents of File Reg to W
8480PIC_tstf, // Test Contents of File Register
8481PIC_negf, // Negate File Register Contents
8482PIC_b, // Branch to Address
8483PIC_clrc, // Clear Carry
8484PIC_clrdc, // Clear Digit Carry
8485PIC_clrz, // Clear Zero
8486PIC_setc, // Set Carry
8487PIC_setdc, // Set Digit Carry
8488PIC_setz, // Set Zero
8489PIC_skpc, // Skip on Carry
8490PIC_skpdc, // Skip on Digit Carry
8491PIC_skpnc, // Skip on No Carry
8492PIC_skpndc, // Skip on No Digit Carry
8493PIC_skpnz, // Skip on No Zero
8494PIC_skpz, // Skip on Zero
8495PIC_bc, // Branch on Carry to Address k
8496PIC_bdc, // Branch on Digit Carry to k
8497PIC_bnc, // Branch on No Carry to k
8498PIC_bndc, // Branch on No Digit Carry to k
8499PIC_bnz, // Branch on No Zero to Address
8500PIC_bz, // Branch on Zero to Address k
8501PIC_addcf, // Add Carry to File Register
8502PIC_adddcf, // Add Digit to File Register
8503PIC_subcf, // Subtract Carry from File Reg
8504// ADDITIONAL INSTRUCTIONS FOR 18Cxx
8505// BYTE-ORIENTED FILE REGISTER OPERATIONS
8506PIC_addwf3, // Add W and f
8507PIC_addwfc3, // Add W and Carry to f
8508PIC_andwf3, // AND W with f
8509PIC_clrf2, // Clear f
8510PIC_comf3, // Complement f
8511PIC_cpfseq2, // Compare f with W, Skip if ==
8512PIC_cpfsgt2, // Compare f with W, Skip if >
8513PIC_cpfslt2, // Compare f with W, Skip if <
8514PIC_decf3, // Decrement f
8515PIC_decfsz3, // Decrement f, Skip if 0
8516PIC_dcfsnz3, // Decrement f, Skip if not 0
8517PIC_incf3, // Increment f
8518PIC_incfsz3, // Increment f, Skip if 0
8519PIC_infsnz3, // Increment f, Skip if not 0
8520PIC_iorwf3, // Inclusive OR W with f
8521PIC_movf3, // Move f
8522PIC_movff2, // Move fs to fd
8523PIC_movwf2, // Move W to f
8524PIC_mulwf2, // Multiply W with f
8525PIC_negf2, // Negate f
8526PIC_rlcf3, // Rotate Left f through Carry
8527PIC_rlncf3, // Rotate Left f
8528PIC_rrcf3, // Rotate Right f through Carry
8529PIC_rrncf3, // Rotate Right f
8530PIC_setf2, // Set f
8531PIC_subfwb3, // Substract f from W with borrow
8532PIC_subwf3, // Substract W from f
8533PIC_subwfb3, // Substract W from f with borrow
8534PIC_swapf3, // Swap nibbles in f
8535PIC_tstfsz2, // Test f, Skip if 0
8536PIC_xorwf3, // Exclusive OR W with f
8537// BIT-ORIENTED FILE REGISTER OPERATIONS
8538PIC_bcf3, // Bit Clear f
8539PIC_bsf3, // Bit Set f
8540PIC_btfsc3, // Bit Test f, Skip if Clear
8541PIC_btfss3, // Bit Test f, Skip if Set
8542PIC_btg3, // Bit Toggle f
8543// CONTROL OPERATIONS
8544PIC_bc1, // Branch if Carry
8545PIC_bn1, // Branch if Negative
8546PIC_bnc1, // Branch if not Carry
8547PIC_bnn1, // Branch if not Negative
8548PIC_bnov1, // Branch if not Overflow
8549PIC_bnz1, // Branch if not Zero
8550PIC_bov1, // Branch if Overflow
8551PIC_bra1, // Branch unconditionally
8552PIC_bz1, // Branch if Zero
8553PIC_call2, // Call subroutine
8554// PIC_clrwdt
8555PIC_daw0, // Decimal Adjust W
8556// PIC_goto
8557// PIC_nop
8558// PIC_nop
8559PIC_pop0, // Pop top of return stack
8560PIC_push0, // Push top of return stack
8561PIC_rcall1, // Relative Call subroutine
8562PIC_reset0, // Software device Reset
8563PIC_retfie1, // Return from interrupt enable
8564// PIC_retlw
8565PIC_return1, // Return from Subroutine
8566// PIC_sleep
8567// LITERAL OPERATIONS
8568// PIC_addlw
8569// PIC_andlw
8570// PIC_iorlw
8571PIC_lfsr2, // Move literal to FSR
8572PIC_movlb1, // Move literal to BSR
8573// PIC_movlw
8574PIC_mullw1, // Multiply literal with W
8575// PIC_retlw
8576// PIC_sublw
8577// PIC_xorlw
8578// DATA MEMORY <-> PROGRAM MEMORY OPERATIONS
8579PIC_tblrd0, // Table Read
8580PIC_tblrd0p, // Table Read with post-increment
8581PIC_tblrd0m, // Table Read with post-decrement
8582PIC_tblrdp0, // Table Read with pre-increment
8583PIC_tblwt0, // Table Write
8584PIC_tblwt0p, // Table Write with post-increment
8585PIC_tblwt0m, // Table Write with post-decrement
8586PIC_tblwtp0, // Table Write with pre-increment
8587// ADDITIONAL INSTRUCTIONS FOR 16F1x and 12F1x
8588PIC_addwfc, // Add W and Carry to f
8589PIC_movlp, // Move literal to PCLATH
8590PIC_movlb, // Move literal to BSR
8591PIC_addfsr, // Add Literal to FSRn
8592PIC_asrf, // Arithmetic Right Shift
8593PIC_lslf, // Logical Left Shift
8594PIC_lsrf, // Logical Right Shift
8595PIC_subwfb, // Subtract with Borrow W from f
8596PIC_bra, // Relative Branch
8597PIC_brw, // Relative Branch with W
8598PIC_callw, // Call Subroutine with W
8599PIC_reset, // Software device Reset
8600PIC_moviw, // Move INDFn to W
8601PIC_movwi, // Move W to INDFn
8603 };
8604/*
8605 * Interactive disassembler (IDA).
8606 * Copyright (c) 1990-2026 Hex-Rays
8607 * ALL RIGHTS RESERVED.
8608 *
8609 */
8610enum
8611{
8612PIC16_null = 0, // Unknown Operation
8613// Move Instructions
8614PIC16_EXCH, // Exchange Wns and Wnd
8616PIC16_SWAP, // Byte or Nibble Swap Wn
8617PIC16_TBLRDH, // Table Read High
8618PIC16_TBLRDL, // Table Read Low
8619PIC16_TBLWTH, // Table Write High
8620PIC16_TBLWTL, // Table Write Low
8621// Only for PIC24E and dsPIC33E
8622PIC16_MOVPAG, // Move to Page Register
8623// Math Instructions
8625PIC16_ADDC, // Add with carry
8626PIC16_DAWB, // Decimal Adjust Wn
8627PIC16_DEC, // Decrement
8628PIC16_DEC2, // Decrement by 2
8629PIC16_DIV, // Signed/Unsigned Integer Divide
8630PIC16_INC, // Increment
8631PIC16_INC2, // Increment by 2
8632PIC16_MUL, // Integer Multiply
8633PIC16_SE, // Sign-Extend Ws
8634PIC16_SUB, // Subtract
8635PIC16_SUBB, // Subtract with Borrow
8636PIC16_SUBBR, // Subtract with Borrow
8637PIC16_SUBR, // Subtract
8638PIC16_ZE, // Zero - Extend Ws
8639// Only for PIC24E and dsPIC33E
8640PIC16_MULW, // Integer Multiply with 16-bit Result
8641// Only for dsPIC
8642PIC16_DIVF, // Fractional Divide
8643// Logic Instructions
8645PIC16_CLR, // Clear f or WREG | Clear Wd
8646PIC16_COM, // Complement f | Complement Ws
8647PIC16_IOR, // Inclusive OR
8648PIC16_NEG, // Negate f | Negate Ws
8649PIC16_SETM, // Set f or WREG | Set Ws
8650PIC16_XOR, // Exclusive OR
8651// Rotate/Shift Instructions
8652PIC16_ASR, // Arithmetic Shift Right
8653PIC16_LSR, // Logical Shift Right
8654PIC16_RLC, // Rotate Left through Carry
8655PIC16_RLNC, // Rotate Left without Carry
8656PIC16_RRC, // Rotate Right through Carry
8657PIC16_RRNC, // Rotate Right without Carry
8658PIC16_SL, // Shift Left
8659// Bit Instructions
8660PIC16_BCLR, // Bit Clear f | Bit Clear in Ws
8661PIC16_BSET, // Bit Set f | Bit Set in Ws
8662PIC16_BSW, // Bit Write in Ws
8663PIC16_BTG, // Bit Toggle f | Bit Toggle in Ws
8664PIC16_BTST, // Bit Test f | Bit Test in Ws
8665PIC16_BTSTS, // Bit Test/Set f | Bit Test/Set in Ws
8666PIC16_FBCL, // Find First Bit Change from Left
8667PIC16_FF1L, // Find First One from Left
8668PIC16_FF1R, // Find First One from Right
8669// Compare/Skip and Compare/Branch Instructions
8670PIC16_BTSC, // Bit Test, Skip if Clear
8671PIC16_BTSS, // Bit Test, Skip if Set
8672PIC16_CP, // Compare, Set Status Flags
8673PIC16_CP0, // Compare, Set Status Flags
8674PIC16_CPB, // Compare using Borrow, set Status Flags
8675PIC16_CPSEQ, // Compare Wb with Wn, Skip if Equal (Wb = Wn)
8676PIC16_CPSGT, // Signed Compare Wb with Wn, Skip if Greater Than (Wb > Wn)
8677PIC16_CPSLT, // Signed Compare Wb with Wn, Skip if Less Than (Wb < Wn)
8678PIC16_CPSNE, // Signed Compare Wb with Wn, Skip if Not Equal (Wb != Wn)
8679// Only for PIC24E and dsPIC33E
8680PIC16_CPBEQ, // Compare Wb with Wn, branch if =
8681PIC16_CPBNE, // Compare Wb with Wn, Branch if Not Equal (Wb != Wn)
8682PIC16_CPBGT, // Signed Compare Wb with Wn, Branch if Greater Than (Wb > Wn)
8683PIC16_CPBLT, // Signed Compare Wb with Wn, Branch if Less Than (Wb < Wn)
8684// Program Flow Instructions
8685PIC16_BRA, // Branch unconditionally/conditionally
8686PIC16_CALL, // Call Subroutine | Call Indirect Subroutine
8687PIC16_GOTO, // Unconditional Jump
8688PIC16_RCALL, // Relative Call | Relative Call
8689PIC16_REPEAT, // Repeat next instruction
8690PIC16_RETFIE, // Return from Interrupt
8691PIC16_RETLW, // Return with Literal in Wn
8693// Only for dsPIC
8694PIC16_DO, // Initialize Hardware Loop
8695// Shadow/Stack Instructions
8696PIC16_LNK, // Allocate Stack Frame
8697PIC16_POP, // Pop TOS | Pop Shadow Registers
8698PIC16_PUSH, // Push to TOS | Push Shadow Registers
8699PIC16_ULNK, // De-allocate Stack Frame
8700// Control Instructions
8701PIC16_CLRWDT, // Clear Watchdog Timer
8702PIC16_DISI, // Disable Interrupts Temporarily
8703PIC16_NOP, // No operation
8704PIC16_NOPR, // No operation
8705PIC16_PWRSAV, // Enter Power Saving Mode
8707// DSP Instructions [Only for dsPIC30F, dsPIC33F and dsPIC33E]
8708PIC16_LAC, // Load Accumulator
8709PIC16_SAC, // Store Accumulator
8710PIC16_SFTAC, // Arithmetic Shift Accumulator
8711PIC16_CLR1, // Clear Accumulator, Prefetch Operands
8712PIC16_ED, // Euclidean Distance (No Accumulate)
8713PIC16_EDAC, // Euclidean Distance
8714PIC16_MAC, // Multiply and Accumulate
8715PIC16_MOVSAC, // Prefetch Operands and Store Accumulator
8716PIC16_MPY, // Multiply to Accumulator
8717PIC16_MSC, // Multiply and Subtract from Accumulator
8718// ICD instructions
8719PIC16_BREAK, // ICD Break
8720PIC16_URUN, // ICD Run
8721PIC16_SSTEP, // ICD Single Step
8722PIC16_FEX, // ICD Execute
8724 };
8725/*
8726 * Interactive disassembler (IDA).
8727 * Copyright (c) 1990-2026 Hex-Rays
8728 * ALL RIGHTS RESERVED.
8729 *
8730 */
8731enum
8732{
8733SPARC_null = 0, // Unknown Operation
8734// SPARC V9 instructions
8736SPARC_addcc, // Add and modify condition codes
8737SPARC_addc, // Add with carry
8738SPARC_addccc, // Add with carry and modify condition codes
8740SPARC_andcc, // And and modify condition codes
8741SPARC_andn, // And not
8742SPARC_andncc, // And not (and modify condition codes)
8743SPARC_b, // Branch on integer condition codes
8744SPARC_bp, // Branch on integer condition codes with prediction
8745SPARC_bpr, // Branch on contents of integer register with prediction
8746SPARC_call, // Call and link
8747SPARC_casa, // Compare and swap word in alternate space
8748SPARC_casxa, // Compare and swap doubleword in alternate space
8749SPARC_done, // Return from trap
8750SPARC_fabs, // Floating-point absolute value
8751SPARC_fadd, // Floating-point add
8752SPARC_fbp, // Branch on floating-point condition codes with prediction
8753SPARC_fb, // Branch on floating-point condition codes
8754SPARC_fcmp, // Floating-point compare
8755SPARC_fcmpe, // Floating-point compare (exception if unordered)
8756SPARC_fdiv, // Floating-point divide
8757SPARC_fdmulq, // Floating-point multiply double to quad
8758SPARC_flush, // Flush instruction memory
8759SPARC_flushw, // Flush register windows
8760SPARC_fmov, // Floating-point move
8761SPARC_fmovcc, // Conditional floating-point move
8762SPARC_fmovr, // Move floating-point register if integer register contents satisfy condition
8763SPARC_fmul, // Floating-point multiply
8764SPARC_fneg, // Floating-point negate
8765SPARC_fsmuld, // Floating-point multiply single to double
8766SPARC_fsqrt, // Floating-point square root
8767SPARC_fsub, // Floating-point subtract
8768SPARC_fstox, // Convert single floating point to 64-bit integer
8769SPARC_fdtox, // Convert doublee floating point to 64-bit integer
8770SPARC_fqtox, // Convert quad floating point to 64-bit integer
8771SPARC_fxtos, // Convert 64-bit integer to single floating point
8772SPARC_fxtod, // Convert 64-bit integer to double floating point
8773SPARC_fxtoq, // Convert 64-bit integer to quad floating point
8774SPARC_fitos, // Convert 32-bit integer to single floating point
8775SPARC_fdtos, // Convert single floating point to single floating point
8776SPARC_fqtos, // Convert quade floating point to single floating point
8777SPARC_fitod, // Convert 32-bit integer to double floating point
8778SPARC_fstod, // Convert single floating point to double floating point
8779SPARC_fqtod, // Convert quade floating point to double floating point
8780SPARC_fitoq, // Convert 32-bit integer to quad floating point
8781SPARC_fstoq, // Convert single floating point to quad floating point
8782SPARC_fdtoq, // Convert quade floating point to quad floating point
8783SPARC_fstoi, // Convert single floating point to 32-bit integer
8784SPARC_fdtoi, // Convert doublee floating point to 32-bit integer
8785SPARC_fqtoi, // Convert quad floating point to 32-bit integer
8786SPARC_illtrap, // Illegal instruction
8787SPARC_impdep1, // Implementation-dependent instruction
8788SPARC_impdep2, // Implementation-dependent instruction
8789SPARC_jmpl, // Jump and link
8790SPARC_ldd, // Load doubleword
8791SPARC_ldda, // Load doubleword from alternate space
8792SPARC_lddf, // Load double floating-point
8793SPARC_lddfa, // Load double floating-point from alternate space
8794SPARC_ldf, // Load floating-point
8795SPARC_ldfa, // Load floating-point from alternate space
8796SPARC_ldfsr, // Load floating-point state register lower
8797SPARC_ldqf, // Load quad floating-point
8798SPARC_ldqfa, // Load quad floating-point from alternate space
8799SPARC_ldsb, // Load signed byte
8800SPARC_ldsba, // Load signed byte from alternate space
8801SPARC_ldsh, // Load signed halfword
8802SPARC_ldsha, // Load signed halfword from alternate space
8803SPARC_ldstub, // Load-store unsigned byte
8804SPARC_ldstuba, // Load-store unsigned byte in alternate space
8805SPARC_ldsw, // Load signed word
8806SPARC_ldswa, // Load signed word from alternate space
8807SPARC_ldub, // Load unsigned byte
8808SPARC_lduba, // Load unsigned byte from alternate space
8809SPARC_lduh, // Load unsigned halfword
8810SPARC_lduha, // Load unsigned halfword from alternate space
8811SPARC_lduw, // Load unsigned word
8812SPARC_lduwa, // Load unsigned word from alternate space
8813SPARC_ldx, // Load extended
8814SPARC_ldxa, // Load extended from alternate space
8815SPARC_ldxfsr, // Load extended floating-point state register
8816SPARC_membar, // Memory barrier
8817SPARC_mov, // Move integer register if condition is satisfied
8818SPARC_movr, // Move integer register on contents of integer register
8819SPARC_mulscc, // Multiply step and modify condition codes
8820SPARC_mulx, // Multiply 64-bit integers
8821SPARC_nop, // No operation
8822SPARC_or, // Inclusive-or
8823SPARC_orcc, // Inclusive-or (and modify condition codes)
8824SPARC_orn, // Inclusive-or not
8825SPARC_orncc, // Inclusive-or not (and modify condition codes)
8826SPARC_popc, // Population count
8827SPARC_prefetch, // Prefetch data
8828SPARC_prefetcha, // Prefetch data from alternate space
8829SPARC_rd, // Read state register
8830SPARC_rdpr, // Read privileged register
8831SPARC_restore, // Restore caller's window
8832SPARC_restored, // Window has been restored
8833SPARC_retry, // Return from trap and retry
8835SPARC_save, // Save caller's window
8836SPARC_saved, // Window has been saved
8837SPARC_sdiv, // 32-bit signed integer divide
8838SPARC_sdivcc, // 32-bit signed integer divide and modify condition codes
8839SPARC_sdivx, // 64-bit signed integer divide
8840SPARC_sethi, // Set high 22 bits of low word of integer register
8841SPARC_sir, // Software-initiated reset
8842SPARC_sll, // Shift left logical
8843SPARC_sllx, // Shift left logical, extended
8844SPARC_smul, // Signed integer multiply
8845SPARC_smulcc, // Signed integer multiply (and modify condition codes)
8846SPARC_sra, // Shift right arithmetic
8847SPARC_srax, // Shift right arithmetic, extended
8848SPARC_srl, // Shift right logical
8849SPARC_srlx, // Shift right logical, extended
8850SPARC_stb, // Store byte
8851SPARC_stba, // Store byte into alternate space
8852SPARC_stbar, // Store barrier
8853SPARC_std, // Store doubleword
8854SPARC_stda, // Store doubleword into alternate space
8855SPARC_stdf, // Store double floating-point
8856SPARC_stdfa, // Store double floating-point into alternate space
8857SPARC_stf, // Store floating-point
8858SPARC_stfa, // Store floating-point into alternate space
8859SPARC_stfsr, // Store floating-point state register
8860SPARC_sth, // Store halfword
8861SPARC_stha, // Store halfword into alternate space
8862SPARC_stqf, // Store quad floating-point
8863SPARC_stqfa, // Store quad floating-point into alternate space
8864SPARC_stw, // Store word
8865SPARC_stwa, // Store word into alternate space
8866SPARC_stx, // Store extended
8867SPARC_stxa, // Store extended into alternate space
8868SPARC_stxfsr, // Store extended floating-point state register
8869SPARC_sub, // Subtract
8870SPARC_subcc, // Subtract and modify condition codes
8871SPARC_subc, // Subtract with carry
8872SPARC_subccc, // Subtract with carry and modify condition codes
8873SPARC_swap, // Swap integer register with memory
8874SPARC_swapa, // Swap integer register with memory in alternate space
8875SPARC_taddcc, // Tagged add and modify condition codes
8876SPARC_taddcctv, // Tagged add and modify condition codes (trap on overflow)
8877SPARC_tsubcc, // Tagged subtract and modify condition codes
8878SPARC_tsubcctv, // Tagged subtract and modify condition codes (trap on overflow)
8879SPARC_t, // Trap on integer condition codes
8880SPARC_udiv, // Unsigned integer divide
8881SPARC_udivcc, // Unsigned integer divide and modify condition codes
8882SPARC_udivx, // 64-bit unsigned integer divide
8883SPARC_umul, // Unsigned integer multiply
8884SPARC_umulcc, // Unsigned integer multiply and modify condition codes
8885SPARC_wr, // Write Y register
8886SPARC_wrpr, // Write privileged register
8887SPARC_xnor, // Exclusive-nor
8888SPARC_xnorcc, // Exclusive-nor (and modify condition codes)
8889SPARC_xor, // Exclusive-or
8890SPARC_xorcc, // Exclusive-or (and modify condition codes)
8891// Synthetic instructions
8892SPARC_cmp, // Compare
8894SPARC_iprefetch, // Instruction prefetch
8896SPARC_ret, // Return from subroutine
8897SPARC_retl, // Return from leaf subroutine
8898SPARC_setuw, // Load unsigned constant
8899SPARC_setsw, // Load signed constant
8900SPARC_setx, // Load 64-bit constant
8901SPARC_signx, // Sign-extend 32-bit value to 64 bits
8902SPARC_not, // One's complement
8903SPARC_neg, // Two's complement
8904SPARC_cas, // Compare and swap
8905SPARC_casl, // Compare and swap, little endian
8906SPARC_casx, // Compare and swap extended
8907SPARC_casxl, // Compare and swap extended, little endian
8908SPARC_inc, // Increment
8909SPARC_inccc, // Increment and modify condition codes
8910SPARC_dec, // Deccrement
8911SPARC_deccc, // Decrement and modify condition codes
8912SPARC_btst, // Bit test
8913SPARC_bset, // Bit set
8914SPARC_bclr, // Bit clear
8915SPARC_btog, // Bit toggle
8916SPARC_clr, // Clear
8917SPARC_clrb, // Clear byte
8918SPARC_clrh, // Clear halfword
8919SPARC_clrx, // Clear extended word
8920SPARC_clruw, // Clear upper word
8921SPARC_pseudo_mov, // Move register
8922// UtlraSPARC II extensions
8923SPARC_alignaddress, // Calculate address for misaligned data access
8924SPARC_array, // 3-D address to blocked byte address conversion
8925SPARC_edge, // Edge boundary processing {little-endian}
8926SPARC_faligndata, // Perform data alignment for misaligned data
8927SPARC_fandnot1, // Negated src1 AND src2 (single precision)
8928SPARC_fandnot2, // src1 AND negated src2 (single precision)
8929SPARC_fand, // Logical AND (single precision)
8930SPARC_fcmpeq, // Four 16-bit/two 32-bit compare; set integer dest if src1 = src2
8931SPARC_fcmpgt, // Four 16-bit/two 32-bit compare; set integer dest if src1 > src2
8932SPARC_fcmple, // Four 16-bit/two 32-bit compare; set integer dest if src1 <= src2
8933SPARC_fcmpne, // Four 16-bit/two 32-bit compare; set integer dest if src1 != src2
8934SPARC_fexpand, // Four 8-bit to 16-bit expands
8935SPARC_fmul8sux16, // Signed upper 8/16-bit partitioned product of corresponding components
8936SPARC_fmul8ulx16, // Unsigned lower 8/16-bit partitioned product of corresponding components
8937SPARC_fmul8x16, // 8/16-bit partitioned product of corresponding components
8938SPARC_fmul8x16al, // 8/16-bit lower a partitioned product of 4 components
8939SPARC_fmul8x16au, // 8/16-bit upper a partitioned product of 4 components
8940SPARC_fmuld8sux16, // Signed upper 8/16-bit multiply 32-bit partitioned product of components
8941SPARC_fmuld8ulx16, // Unsigned lower 8/16-bit multiply 32-bit partitioned product of components
8942SPARC_fnand, // Logical NAND (single precision)
8943SPARC_fnor, // Logical NOR (single precision)
8944SPARC_fnot1, // Negate (1's complement) src1 (single precision)
8945SPARC_fnot2, // Negate (1's complement) src2 (single precision)
8946SPARC_fone, // One fill (single precision)
8947SPARC_fornot1, // Negated src1 OR src2 (single precision)
8948SPARC_fornot2, // src1 OR negated src2 (single precision)
8949SPARC_for, // Logical OR (single precision)
8950SPARC_fpackfix, // Two 32-bit to 16-bit fixed pack
8951SPARC_fpack, // Four 16-bit/two 32-bit pixel pack
8952SPARC_fpadd, // Four 16-bit/two 32-bit partitioned add (single precision)
8953SPARC_fpmerge, // Two 32-bit pixel to 64-bit pixel merge
8954SPARC_fpsub, // Four 16-bit/two 32-bit partitioned subtract (single precision)
8955SPARC_fsrc1, // Copy src1 (single precision)
8956SPARC_fsrc2, // Copy src2 (single precision)
8957SPARC_fxnor, // Logical XNOR (single precision)
8958SPARC_fxor, // Logical XOR (single precision)
8959SPARC_fzero, // Zero fill (single precision)
8960SPARC_pdist, // Distance between 8 8-bit components
8961SPARC_shutdown, // Power-down support
8962// SPARC_stdfa, // 8/16-bit store from a double precision FP register
8963// V8 only instructions
8964SPARC_rett, // Return from trap
8965// UA 2005 instructions
8966SPARC_bmask, // Byte Mask
8967SPARC_bshuffle, // Byte Shuffle
8968SPARC_edgen, // Edge boundary processing (no CC) {little-endian}
8969SPARC_rdhpr, // Read Hyperprivileged Register
8970SPARC_wrhpr, // Write Hyperprivileged Register
8971SPARC_siam, // Set Interval Arithmetic Mode
8973};
8974/*
8975 * Interactive disassembler (IDA).
8976 * Copyright (c) 1990-2026 Hex-Rays
8977 * ALL RIGHTS RESERVED.
8978 *
8979 */
8980enum
8981{
8982HPPA_null = 0, // Unknown Operation
8984HPPA_addb, // Add and Branch
8985HPPA_addi, // Add to Immediate
8986HPPA_addib, // Add Immediate and Branch
8987HPPA_addil, // Add to Immediate Left
8989HPPA_andcm, // AND complement
8990HPPA_b, // Branch
8991HPPA_bb, // Branch on Bit
8992HPPA_be, // Branch External
8993HPPA_blr, // Branch and Link Register
8994HPPA_break, // Break
8995HPPA_bv, // Branch Vectored
8996HPPA_bve, // Branch Vectored External
8997HPPA_cldd, // Coprocessor Load Doubleword
8998HPPA_cldw, // Coprocessor Load Word
8999HPPA_clrbts, // Clear Branch Target Stack
9000HPPA_cmpb, // Compare and Branch
9001HPPA_cmpclr, // Compare and Clear
9002HPPA_cmpib, // Compare Immediate and Branch
9003HPPA_cmpiclr, // Compare Immediate and Clear
9004HPPA_copr, // Coprocessor Operation
9005HPPA_cstd, // Coprocessor Store Doubleword
9006HPPA_cstw, // Coprocessor Store Word
9007HPPA_dcor, // Decimal Correct
9008HPPA_depd, // Deposit Doubleword
9009HPPA_depdi, // Deposit Doubleword Immediate
9010HPPA_depw, // Deposit Word
9011HPPA_depwi, // Deposit Word Immediate
9012HPPA_diag, // Diagnose
9013HPPA_ds, // Divide Step
9014HPPA_extrd, // Extract Doubleword
9015HPPA_extrw, // Extract Word
9016HPPA_fdc, // Flush Data Cache
9017HPPA_fdce, // Flush Data Cache Entry
9018HPPA_fic, // Flush Instruction Cache
9019HPPA_fice, // Flush Instruction Cache Entry
9020HPPA_hadd, // Halfword Parallel Add
9021HPPA_havg, // Halfword Parallel Average
9022HPPA_hshl, // Halfword Parallel Shift Left
9023HPPA_hshladd, // Halfword Parallel Shift Left and Add
9024HPPA_hshr, // Halfword Parallel Shift Right
9025HPPA_hshradd, // Halfword Parallel Shift Right and Add
9026HPPA_hsub, // Halfword Parallel Subtract
9027HPPA_idtlbt, // Insert Data TLB Translation
9028HPPA_iitlbt, // Insert Instruction TLB Translation
9029HPPA_lci, // Load Coherence Index
9030HPPA_ldb, // Load Byte
9031HPPA_ldcd, // Load and Clear Doubleword
9032HPPA_ldcw, // Load and Clear Word
9033HPPA_ldd, // Load Doubleword
9034HPPA_ldda, // Load Doubleword Absolute
9035HPPA_ldh, // Load Halfword
9036HPPA_ldil, // Load Immediate Left
9037HPPA_ldo, // Load Offset
9038HPPA_ldsid, // Load Space Identifier
9039HPPA_ldw, // Load Word
9040HPPA_ldwa, // Load Word Absolute
9041HPPA_lpa, // Load Physical Address
9042HPPA_mfctl, // Move From Control Register
9043HPPA_mfia, // Move From Instruction Address
9044HPPA_mfsp, // Move From Space Register
9045HPPA_mixh, // Mix Halfwords
9046HPPA_mixw, // Mix Words
9047HPPA_movb, // Move and Branch
9048HPPA_movib, // Move Immediate and Branch
9049HPPA_mtctl, // Move To Control Register
9050HPPA_mtsarcm, // Move To Shift Amount Register Complement
9051HPPA_mtsm, // Move To System Mask
9052HPPA_mtsp, // Move To Space Register
9053HPPA_or, // Inclusive OR
9054HPPA_pdc, // Purge Data Cache
9055HPPA_pdtlb, // Purge Data TLB
9056HPPA_pdtlbe, // Purge Data TLB Entry
9057HPPA_permh, // Permute Halfwords
9058HPPA_pitlb, // Purge Instruction TLB
9059HPPA_pitlbe, // Purge Instruction TLB Entry
9060HPPA_popbts, // Pop Branch Target Stack
9061HPPA_probe, // Probe Access
9062HPPA_probei, // Probe Access Immediate
9063HPPA_pushbts, // Push Branch Target Stack
9064HPPA_pushnom, // Push Nominated
9065HPPA_rfi, // Return From Interruption
9066HPPA_rsm, // Reset System Mask
9067HPPA_shladd, // Shift Left and Add
9068HPPA_shrpd, // Sihft Right Pair Doubleword
9069HPPA_shrpw, // Sihft Right Pair Word
9070HPPA_spop0, // Special Operation Zero
9071HPPA_spop1, // Special Operation One
9072HPPA_spop2, // Special Operation Two
9073HPPA_spop3, // Special Operation Three
9074HPPA_ssm, // Set System Mask
9075HPPA_stb, // Store Byte
9076HPPA_stby, // Store Bytes
9077HPPA_std, // Store Doubleword
9078HPPA_stda, // Store Doubleword Absolute
9079HPPA_stdby, // Store Doubleword Bytes
9080HPPA_sth, // Store Halfword
9081HPPA_stw, // Store Word
9082HPPA_stwa, // Store Word Absolute
9083HPPA_sub, // Subtract
9084HPPA_subi, // Subtract from Immediate
9085HPPA_sync, // Synchronize Caches
9086HPPA_syncdma, // Synchronize DMA
9087HPPA_uaddcm, // Unit Add Complement
9088HPPA_uxor, // Unit XOR
9089HPPA_xor, // Exclusive OR
9090// Floating point instructions
9091HPPA_fabs, // Floating-Point Absolute Value
9092HPPA_fadd, // Floating-Point Add
9093HPPA_fcmp, // Floating-Point Compare
9094HPPA_fcnv, // Floating-Point Convert
9095HPPA_fcpy, // Floating-Point Copy
9096HPPA_fdiv, // Floating-Point Divide
9097HPPA_fid, // Floating-Point Identity
9098HPPA_fldd, // Floating-Point Load Doubleword
9099HPPA_fldw, // Floating-Point Load Word
9100HPPA_fmpy, // Floating-Point Multiply
9101HPPA_fmpyadd, // Floating-Point Multiply/Add
9102HPPA_fmpyfadd, // Floating-Point Multiply Fused Add
9103HPPA_fmpynfadd, // Floating-Point Multiply Negate Fused Add
9104HPPA_fmpysub, // Floating-Point Multiply/Subtract
9105HPPA_fneg, // Floating-Point Negate
9106HPPA_fnegabs, // Floating-Point Negate Absolute Value
9107HPPA_frem, // Floating-Point Remainder
9108HPPA_frnd, // Floating-Point Round to Integer
9109HPPA_fsqrt, // Floating-Point Square Root
9110HPPA_fstd, // Floating-Point Store Doubleword
9111HPPA_fstw, // Floating-Point Store Word
9112HPPA_fsub, // Floating-Point Subtract
9113HPPA_ftest, // Floating-Point Test
9114HPPA_xmpyu, // Fixed-Point Multiply Unsigned
9115// Performance Monitor Coprocessor
9116HPPA_pmdis, // Performance Monitor Disable
9117HPPA_pmenb, // Performance Monitor Enable
9118// Macros
9119HPPA_call, // Call Subroutine
9120HPPA_ret, // Return From Subroutine
9121HPPA_shld, // Shift Left Doubleword
9122HPPA_shlw, // Shift Left Word
9123HPPA_shrd, // Shift Right Doubleword
9124HPPA_shrw, // Shift Right Word
9125HPPA_ldi, // Load Immediate
9126HPPA_copy, // Copy Register
9127HPPA_mtsar, // Move To %SAR
9128HPPA_nop, // No Operation
9130};
9131/*
9132 * Interactive disassembler (IDA).
9133 * Copyright (c) 1990-2026 Hex-Rays
9134 * ALL RIGHTS RESERVED.
9135 *
9136 */
9137enum
9138{
9139H8500_null = 0, // Unknown Operation
9140// Data transfer
9141H8500_mov_g, // B/W Move data
9142H8500_mov_e, // B Move data
9143H8500_mov_i, // W Move data
9144H8500_mov_f, // B/W Move data
9145H8500_mov_l, // B/W Move data
9146H8500_mov_s, // B/W Move data
9147H8500_ldm, // W Pop data from the stack to one or more registers
9148H8500_stm, // W Push data from one or more registers onto the stack
9149H8500_xch, // W Exchange data between two general registers
9150H8500_swap, // B Exchange the upper and lower bytes in a general register
9151H8500_movtpe, // B Transfer data from a general register to memory
9152H8500_movfpe, // B Transfer data from memory to a general register
9153// Arithmetic operations
9154H8500_add_g, // B/W Addition
9155H8500_add_q, // B/W Addition
9156H8500_sub, // B/W Subtraction
9157H8500_adds, // B/W Addition
9158H8500_subs, // B/W Subtraction
9159H8500_addx, // B/W Addition with carry
9160H8500_subx, // B/W Subtraction with borrow
9161H8500_dadd, // B Decimal addition
9162H8500_dsub, // B Decimal subtraction
9163H8500_mulxu, // B/W Unsigned multiplication
9164H8500_divxu, // B/W Unsigned division
9165H8500_cmp_g, // B/W Compare data
9166H8500_cmp_e, // B Compare data
9167H8500_cmp_i, // W Compare data
9168H8500_exts, // B Convert byte to word by extending the sign bit
9169H8500_extu, // B Convert byte to word data by padding with zero bits
9170H8500_tst, // B/W Compare with 0
9171H8500_neg, // B/W Negate
9172H8500_clr, // B/W Make zero
9173H8500_tas, // B Test and set
9174// Logic Operations
9175H8500_and, // B/W Logical AND
9176H8500_or, // B/W Logical OR
9177H8500_xor, // B/W Exclusive OR
9178H8500_not, // B/W Bitwise NOT
9179// Shift Operations
9180H8500_shal, // B/W Arithmetic shift left
9181H8500_shar, // B/W Arithmetic shift right
9182H8500_shll, // B/W Logical shift left
9183H8500_shlr, // B/W Logical shift right
9184H8500_rotl, // B/W Rotate left
9185H8500_rotr, // B/W Rotate right
9186H8500_rotxl, // B/W Rotate through carry left
9187H8500_rotxr, // B/W Rotate through carry right
9188// Bit Manipulations
9189H8500_bset, // B/W Test bit and set
9190H8500_bclr, // B/W Test bit and clear
9191H8500_bnot, // B/W Test bit and invert
9192H8500_btst, // B/W Test bit
9193// Branching Instructions
9194H8500_bra, // Branch Always
9195H8500_brn, // Branch Never
9196H8500_bhi, // Branch if High (C|Z = 0)
9197H8500_bls, // Branch if Low or Same (C|Z = 1)
9198H8500_bcc, // Branch if Carry Clear (C = 0)
9199H8500_bcs, // Branch if Carry Set (C = 1)
9200H8500_bne, // Branch if Not Equal (Z = 0)
9201H8500_beq, // Branch if Equal (Z = 1)
9202H8500_bvc, // Branch if Overflow Clear (V = 0)
9203H8500_bvs, // Branch if Overflow Set (V = 1)
9204H8500_bpl, // Branch if Plus (N = 0)
9205H8500_bmi, // Branch if Minus (N = 1)
9206H8500_bge, // Branch if Greater or Equal (N^V = 0)
9207H8500_blt, // Branch if Less Than (N^V = 1)
9208H8500_bgt, // Branch if Greater Than (Z|(N^V) = 0)
9209H8500_ble, // Branch if Less or Equal (Z|(N^V) = 1)
9210H8500_jmp, // Branch unconditionally (same page)
9211H8500_pjmp, // Branch unconditionally (specified page)
9212H8500_bsr, // Branch to subroutine (same page)
9213H8500_jsr, // Branch to subroutine (same page)
9214H8500_pjsr, // Branch to subroutine (specified page)
9215H8500_rts, // Return from subroutine (same page)
9216H8500_prts, // Return from subroutine (different page)
9217H8500_rtd, // Return from subroutine (same page) and adjust SP
9218H8500_prtd, // Return from subroutine (different page) and adjust SP
9219H8500_scb, // Control loop
9220// System Control Instructions
9221H8500_trapa, // Generate trap exception
9222H8500_trap_vs, // Generate trap exception if the V bit is set
9223H8500_rte, // Return from exception-handling routine
9224H8500_link, // Create stack frame
9225H8500_unlk, // Deallocate stack frame
9226H8500_sleep, // Go to power-down state
9227H8500_ldc, // B/W Move to control register
9228H8500_stc, // B/W Move from control register
9229H8500_andc, // B/W Logically AND control register
9230H8500_orc, // B/W Logically OR control register
9231H8500_xorc, // B/W Logically exclusive-OR control register
9232H8500_nop, // No operation
9235 };
9236enum
9237{
9238DSP56_null = 0, // Unknown Operation
9239DSP56_abs, // Absolute Value
9240DSP56_adc, // Add Long with Carry
9241DSP56_add, // Addition
9242DSP56_addl, // Shift Left and Add
9243DSP56_addr, // Shift Right and Add
9244DSP56_and, // Logical AND
9245DSP56_andi, // AND Immediate to Control Register
9246DSP56_asl, // Arithmetic Shift Left
9247DSP56_asl4, // Arithmetic Shift Left 4
9248DSP56_asr, // Arithmetic Shift Right
9249DSP56_asr4, // Arithmetic Shift Right 4
9250DSP56_asr16, // Arithmetic Shift Right 16
9251DSP56_bfchg, // Test Bit Field and Change
9252DSP56_bfclr, // Clear Bit Field
9253DSP56_bfset, // Set Bit Field
9254DSP56_bftsth, // Test Bit Field High
9255DSP56_bftstl, // Test Bit Field Low
9256DSP56_bcc, // Branch Conditionaly
9257DSP56_bchg, // Bit Test and Change
9258DSP56_bclr, // Bit Test and Clear
9259DSP56_bra, // Branch Always
9260DSP56_brclr, // Branch if Bit Clear
9261DSP56_brkcc, // Exit Current DO Loop Conditionally
9262DSP56_brset, // Branch if Bit Set
9263DSP56_bscc, // Branch to Subroutine Conditionaly
9264DSP56_bsclr, // Branch to Subroutine if Bit Clear
9265DSP56_bset, // Bit Test and Set
9266DSP56_bsr, // Branch to Subroutine
9267DSP56_bsset, // Branch to Subroutine if Bit Set
9268DSP56_btst, // Bit Test on Memory and Registers
9269DSP56_chkaau, // Check address ALU result
9270DSP56_clb, // Count Leading Bits
9271DSP56_clr, // Clear an Operand
9272DSP56_clr24, // Clear 24 MS-bits of Accumulator
9273DSP56_cmp, // Compare
9274DSP56_cmpm, // Compare Magnitude
9275DSP56_cmpu, // Compare Unsigned
9276DSP56_debug, // Enter Debug Mode
9277DSP56_debugcc, // Enter Debug Mode Conditionally
9278DSP56_dec, // Decrement by One
9279DSP56_dec24, // Decrement 24 MS-bit of Accumulator
9280DSP56_div, // Divide Iteration
9281DSP56_dmac, // Double-Precision Multiply-Accumulate With Right Shift
9282DSP56_do, // Start Hardware Loop
9283DSP56_do_f, // Start Infinite Loop
9284DSP56_dor, // Start PC-Relative Hardware Loop
9285DSP56_dor_f, // Start PC-Relative Infinite Loop
9286DSP56_enddo, // Exit from Hardware Loop
9287DSP56_eor, // Logical Exclusive OR
9288DSP56_extract, // Extract Bit Field
9289DSP56_extractu, // Extract Unsigned Bit Field
9290DSP56_ext, // Sign Extend Accumulator
9291DSP56_ill, // Illegal Instruction
9292DSP56_imac, // Integer Multiply-Accumulate
9293DSP56_impy, // Integer Multiply
9294DSP56_inc, // Increment by One
9295DSP56_inc24, // Increment 24 MS-bit of Accumulator
9296DSP56_insert, // Insert Bit Field
9297DSP56_jcc, // Jump Conditionally
9298DSP56_jclr, // Jump if Bit Clear
9300DSP56_jscc, // Jump to Subroutine Conditionally
9301DSP56_jsclr, // Jump to Subroutine if Bit Clear
9302DSP56_jset, // Jump if Bit Set
9303DSP56_jsr, // Jump to Subroutine
9304DSP56_jsset, // Jump to Subroutine if Bit Set
9305DSP56_lra, // Load PC-Reliative Address
9306DSP56_lsl, // Logical Shift Left
9307DSP56_lsr, // Logical Shift Right
9308DSP56_lua, // Load Updated Address
9309DSP56_lea, // Load Updated Address
9310DSP56_mac, // Signed Multiply-Accumulate
9311DSP56_maci, // Signed Multiply-Accumulate With Immediate Operand
9312DSP56_mac_s_u, // Mixed Multiply-Accumulate
9313DSP56_macr, // Signed Multiply-Accumulate and Round
9314DSP56_macri, // Signed Multiply-Accumulate and Round With Immediate Operand
9315DSP56_max, // Transfer by Signed Value
9316DSP56_maxm, // Transfer by Magnitude
9317DSP56_merge, // Merge Two Half Words
9318DSP56_move, // Move Data
9319DSP56_movec, // Move Control Register
9320DSP56_movei, // Move Immediate Short
9321DSP56_movem, // Move Program Memory
9322DSP56_movep, // Move Peripheral Data
9323DSP56_moves, // Move Absolute Short
9324DSP56_mpy, // Signed Multiply
9325DSP56_mpyi, // Signed Multiply With Immediate Operand
9326DSP56_mpy_s_u, // Mixed Multiply
9327DSP56_mpyr, // Signed Multiply and Round
9328DSP56_mpyri, // Signed Multiply and Round With Immediate Operand
9329DSP56_neg, // Negate Accumulator
9330DSP56_negc, // Negate Accumulator
9331DSP56_nop, // No Operation
9332DSP56_norm, // Norm Accumulator Iteration
9333DSP56_normf, // Fast Accumulator Normalization
9334DSP56_not, // Logical Complement
9335DSP56_or, // Logical Inclusive OR
9336DSP56_ori, // OR Immediate to Control Register
9337DSP56_pflush, // Program Cache Flush
9338DSP56_pflushun, // Program Cache Flush Unlocked Sectors
9339DSP56_pfree, // Program Cache Global Unlock
9340DSP56_plock, // Lock Instruction Cache Sector
9341DSP56_plockr, // Lock Instruction Cache Relative Sector
9342DSP56_punlock, // Unlock Instruction Cache Sector
9343DSP56_punlockr, // Unlock Instruction Cache Relative Sector
9344DSP56_rep, // Repeat Next Instruction
9345DSP56_repcc, // Repeat Next Instruction
9346DSP56_reset, // Reset On-Chip Peripheral Devices
9347DSP56_rnd, // Round Accumulator
9348DSP56_rol, // Rotate Left
9349DSP56_ror, // Rotate Right
9350DSP56_rti, // Return from Interrupt
9351DSP56_rts, // Return from Subroutine
9352DSP56_sbc, // Subtract Long with Carry
9353DSP56_stop, // Stop Processing (Low-Power Standby)
9354DSP56_sub, // Subtract
9355DSP56_subl, // Shift Left and Subtract
9356DSP56_subr, // Shift Right and Subtract
9357DSP56_swap, // Swap Accumulator Words
9358DSP56_tcc, // Transfer Conditionally
9359DSP56_tfr, // Transfer Data ALU Register
9360DSP56_tfr2, // Transfer Data ALU Register
9361DSP56_tfr3, // Transfer Data ALU Register
9362DSP56_trap, // Software Interrupt
9363DSP56_trapcc, // Software Interrupt Conditionally
9364DSP56_tst, // Test an Operand
9365DSP56_tst2, // Test an Operand
9366DSP56_vsl, // Viterbi Shift Left
9367DSP56_wait, // Wait for Interrupt or DMA Request (Low-Power Standby)
9368DSP56_zero, // Zero Extend Accumulator
9369DSP56_swi, // Software Interrupt (only for 56000)
9370DSP56_pmov, // Pseudo insn
9372};
9373enum
9374{
9375DSP96_null = 0, // Unknown Operation
9376DSP96_abs, // Absolute Value
9377DSP96_add, // Addition
9378DSP96_addc, // Add with Carry
9379DSP96_and, // Logical AND
9380DSP96_andc, // AND Immediate with Complement
9381DSP96_andi, // AND Immediate to Control Register
9382DSP96_asl, // Arithmetic Shift Left
9383DSP96_asr, // Arithmetic Shift Right
9384DSP96_bcc, // Branch Conditionally (indirect)
9385DSP96_bccd, // Branch Conditionally (direct)
9386DSP96_bchg, // Bit Test and Change
9387DSP96_bclr, // Bit Test and Clear
9388DSP96_bfind, // Find Leading One
9389DSP96_bra, // Branch Always
9390DSP96_brclr, // Branch if Bit Clear
9391DSP96_brset, // Branch if Bit Set
9392DSP96_bscc, // Branch to Subroutine Conditionally (indirect)
9393DSP96_bsccd, // Branch to Subroutine Conditionally (direct)
9394DSP96_bsclr, // Branch to Subroutine if Bit Clear
9395DSP96_bset, // Bit Test and Set
9396DSP96_bsr, // Branch to Subroutine (indirect)
9397DSP96_bsrd, // Branch to Subroutine (direct)
9398DSP96_bsset, // Branch to Subroutine if Bit Set
9399DSP96_btst, // Bit Test on Memory and Registers
9400DSP96_clr, // Clear an Operand
9401DSP96_cmp, // Compare
9402DSP96_cmpg, // Graphics Compare with Trivial Accept.Reject Flags
9403DSP96_debugcc, // Enter Debug Mode Conditionally
9404DSP96_dec, // Decrement by One
9405DSP96_do, // Start Hardware Loop
9406DSP96_dor, // Start PC-Relative Hardware Loop
9407DSP96_enddo, // Exit from Hardware Loop
9408DSP96_eor, // Logical Exclusive OR
9409DSP96_ext, // Sign Extend 16-Bit To 32-Bit
9410DSP96_extb, // Sign Extend 8-Bit to 32-Bit
9411DSP96_fabs, // Absolute Value
9413DSP96_faddsub, // Add and Subtract
9414DSP96_fbcc, // Branch Conditionally (Floating-Point Condition) (indirect)
9415DSP96_fbccd, // Branch Conditionally (Floating-Point Condition) (direct)
9416DSP96_fbscc, // Branch to Subroutine Conditionally (Floating-Point Condition) (indirect)
9417DSP96_fbsccd, // Branch to Subroutine Conditionally (Floating-Point Condition) (direct)
9418DSP96_fclr, // Clear a Floating-Point Operand
9419DSP96_fcmp, // Compare
9420DSP96_fcmpg, // Graphics Compare with Trivial Accept.Reject Flags
9421DSP96_fcmpm, // Compare Magnitude
9422DSP96_fcopys, // Copy Sign
9423DSP96_fdebugcc, // Enter Debug Mode Conditionally
9424DSP96_fgetman, // Get Mantissa
9425DSP96_fint, // Convert to Floating-Point Integer
9426DSP96_fjcc, // Jump Conditionally (indirect)
9427DSP96_fjccd, // Jump Conditionally (direct)
9428DSP96_fjscc, // Jump to Subroutine Conditionally (indirect)
9429DSP96_fjsccd, // Jump to Subroutine Conditionally (direct)
9430DSP96_float, // Integer to Floating-Point Conversion
9431DSP96_floatu, // Unsigned Integer to SP Floating-Point Conversion
9432DSP96_floor, // Convert to Floating-Point Integer round to -Infinity
9433DSP96_fmove, // Move FP Data Register(s)
9434DSP96_fmpyfadd, // Multiply and Add
9435// DSP96_fmpyfaddx, // Multiply and Add (Single Extended Precision) (Handled with DSP96_fmpyfadd)
9436DSP96_fmpyfaddsub, // Multiply, Add and Subtract
9437// DSP96_fmpyfaddsubx, // Multiply, Add and Subtract (Single Extended Precision) (Handled with DSP96_fmpyfaddsub)
9438DSP96_fmpyfsub, // Multiply and Subtract
9439// DSP96_fmpyfsubx, // Multiply and Subtract (Single Extended Precision) (Handled with DSP96_fmpyfsub)
9440DSP96_fmpy, // Multiply
9441DSP96_fneg, // Change sign
9442DSP96_fscale, // Scale a Floating-Point Operand
9443DSP96_fseedd, // Reciprocal Approximation
9444DSP96_fseedr, // Square-Root Reciprocal Approximation
9445DSP96_fsub, // Subtract
9446DSP96_ftfr, // Transfer Floating-Point Register
9447DSP96_ftrapcc, // Conditional Software Interrupt
9448DSP96_ftst, // Test a floating-Point Operand
9449DSP96_getexp, // Get Exponent
9450DSP96_illegal, // Illegal Instruction
9451DSP96_inc, // Increment by One
9452DSP96_int, // Floating-Point to Integer Conversion
9453DSP96_intrz, // Floating-Point to Integer Conversion Round to Zero
9454DSP96_intu, // Floating-Point to Unsigned Integer Conversion
9455DSP96_inturz, // Floating-Point to Unsigned Integer Conversion Round to Zero
9456DSP96_jcc, // Jump Conditionally (indirect)
9457DSP96_jccd, // Jump Conditionally (direct)
9458DSP96_jclr, // Jump if Bit Clear
9459// DSP96_jmp, // Jump (The same as jcc with condition code = 11111)
9460DSP96_join, // Join two 16-Bit Integers
9461DSP96_joinb, // Join two 8-Bit Integers
9462DSP96_jscc, // Jump to Subroutine Conditionally
9463DSP96_jsccd, // Jump to Subroutine Conditionally
9464DSP96_jsclr, // Jump to Subroutine if Bit Clear
9465DSP96_jset, // Jump if Bit Set
9466// DSP96_jsr, // Jump to Subroutine ( The same as jscc with condition code = 11111)
9467DSP96_jsset, // Jump to Subroutine if Bit Set
9468DSP96_lea, // Load Effective Address
9469DSP96_lra, // Load PC Relative Address
9470DSP96_lsl, // Logical Shift Left
9471DSP96_lsr, // Logical Shift Right
9472DSP96_move, // Move Data Register(s)
9473DSP96_movec, // Move Control Register
9474DSP96_movei, // Move Immediate
9475DSP96_movem, // Move Program Memory
9476DSP96_movep, // Move Peripheral Data
9477DSP96_moves, // Move Absolute Short
9478DSP96_moveta, // Move Data Register(s) and Test Address
9479DSP96_mpys, // Signed Multiply
9480DSP96_mpyu, // Unsigned Multiply
9481DSP96_neg, // Negate Accumulator
9482DSP96_negc, // Negate with Carry
9483DSP96_nop, // No Operation
9484DSP96_not, // Logical Complement
9485DSP96_or, // Logical Inclusive OR
9486DSP96_orc, // OR With Compliment
9487DSP96_ori, // OR Immediate to Control Register
9488DSP96_rep, // Repeat Next Instruction
9489DSP96_reset, // Reset On-Chip Peripheral Devices
9490DSP96_rol, // Rotate Left
9491DSP96_ror, // Rotate Right
9492DSP96_rti, // Return from Interrupt
9493DSP96_rtr, // Return from Subroutine and Restore Status Register
9494DSP96_rts, // Return from Subroutine
9495DSP96_setw, // Set an Operand
9496DSP96_split, // Extract 16-Bit Integer
9497DSP96_splitb, // Extract 8-Bit Integer
9498DSP96_stop, // Stop Processing (Low Power Stand-by)
9499DSP96_sub, // Subtract
9500DSP96_subc, // Subtract with Carry
9501DSP96_tfr, // Transfer Data ALU Register
9502DSP96_trapcc, // Software Interrupt Conditionally
9503DSP96_tst, // Test an Operand
9504DSP96_wait, // Wait for Interrupt or DMA Request (Low Power Stand-by)
9506};
9507enum PMNum // Parallel Move enumeration
9508{
9510 PM96_R2R, // Register to register parallel move
9511 PM96_Update, // Move update
9512 PM96_XYMem, // X or Y memory move
9513 PM96_XYmemR, // X or Y memory and Registry move
9514 PM96_Long, // Long Memory move
9515 PM96_XY, // XY Memory move
9516 PM96_IFcc, // Integer if conditional Instruction without CCR update
9517 // All the following moves are handled by IFcc
9518 // PM96_FFcc, // Floating-Point if conditional Instruction without CCR, ER, IER update
9519 // PM96_FFccU, // Floating-Point if conditional Instruction with CCR, ER, IER update
9520 // PM96_IFccU, // Integer if conditional Instruction with CCR update
9521};
9522/*
9523 * Interactive disassembler (IDA).
9524 * Copyright (c) 1990-2026 Hex-Rays
9525 * ALL RIGHTS RESERVED.
9526 *
9527 */
9528enum
9529{
9530C166_null = 0, // Unknown Operation
9531C166_add, // Integer Addition
9532C166_addb, // Integer Addition Byte
9533C166_addc, // Integer Addition with Carry
9534C166_addcb, // Integer Addition with Carry Byte
9535C166_and, // Logical AND
9536C166_andb, // Logical AND Byte
9537C166_ashr, // Arithmetic Shift Right
9538C166_atomic, // Begin ATOMIC Sequence
9539C166_band, // Bit Logical AND
9540C166_bclr, // Bit Clear
9541C166_bcmp, // Bit to Bit Compare
9542C166_bfldh, // Bit Field High Byte
9543C166_bfldl, // Bit Field Low Byte
9544C166_bmov, // Bit to Bit Move
9545C166_bmovn, // Bit to Bit Move and Negate
9546C166_bor, // Bit Logical OR
9547C166_bset, // Bit Set
9548C166_bxor, // Bit Logical XOR
9549C166_calla, // Call Subroutine Absolute
9550C166_calli, // Call Subroutine Indirect
9551C166_callr, // Call Subroutine Relative
9552C166_calls, // Call Inter-Segment Subroutine
9553C166_cmp, // Integer Compare
9554C166_cmpb, // Integer Compare Byte
9555C166_cmpd1, // Integer Compare and Decrement by 1
9556C166_cmpd2, // Integer Compare and Decrement by 2
9557C166_cmpi1, // Integer Compare and Increment by 1
9558C166_cmpi2, // Integer Compare and Increment by 2
9559C166_cpl, // Integer One's Complement
9560C166_cplb, // Integer One's Complement Byte
9561C166_diswdt, // Disable Watchdog Timer
9562C166_div, // 16-by-16 Signed Division
9563C166_divl, // 32-by-16 Signed Division
9564C166_divlu, // 32-by-16 Unsigned Division
9565C166_divu, // 16-by-16 Unsigned Division
9566C166_einit, // End of Intialization
9567C166_extr, // Begin Extended Register Sequence
9568C166_extp, // Begin Extended Page Sequence
9569C166_extpr, // Begin Extended Page and Register Sequence
9570C166_exts, // Begin Extended Segment Sequence
9571C166_extsr, // Begin Extended Segment and Register Sequence
9572C166_idle, // Enter Idle Mode
9573C166_jb, // Relative Jump if Bit Set
9574C166_jbc, // Relative Jump if Bit Set and Clear Bit
9575C166_jmpa, // Absolute Conditional Jump
9576C166_jmpi, // Indirect Conditional Jump
9577C166_jmpr, // Relative Conditional Jump
9578C166_jmps, // Absolute Inter-Segment Jump
9579C166_jnb, // Relative Jump if Bit Clear
9580C166_jnbs, // Relative Jump if Bit Clear and Set Bit
9581C166_mov, // Move Word
9582C166_movb, // Move Byte
9583C166_movbs, // Move Byte Sign Extend
9584C166_movbz, // Move Byte Zero Extend
9585C166_mul, // Signed Multiplication
9586C166_mulu, // Unsigned Multiplication
9587C166_neg, // Integer Two's Complement
9588C166_negb, // Integer Two's Complement Byte
9589C166_nop, // No Operation
9590C166_or, // Logical OR
9591C166_orb, // Logical OR Byte
9592C166_pcall, // Push Word and Call Subroutine Absolute
9593C166_pop, // Pop Word from System Stack
9594C166_prior, // Prioritize Register
9595C166_push, // Push Word on System Stack
9596C166_pwrdn, // Enter Power Down Mode
9597C166_ret, // Return from Subroutine
9598C166_reti, // Return from Interrupt Routine
9599C166_retp, // Return from Subroutine and Pop Word
9600C166_rets, // Return from Inter-Segment Subroutine
9601C166_rol, // Rotate Left
9602C166_ror, // Rotate Right
9603C166_scxt, // Switch Context
9604C166_shl, // Shift Left
9605C166_shr, // Shift Rightt
9606C166_srst, // Software Reset
9607C166_srvwdt, // Service Watchdog Timer
9608C166_sub, // Integer Subtraction
9609C166_subb, // Integer Subtraction Byte
9610C166_subc, // Integer Subtraction with Carry
9611C166_subcb, // Integer Subtraction with Carry Byte
9612C166_trap, // Software Trap
9613C166_xor, // Logical Exclusive OR
9614C166_xorb, // Logical Exclusive OR Byte
9615// ST10 MAC instructions
9616ST10_CoABS, // Absolute Value
9618ST10_CoASHR, // Accumulator Arithmetic Shift Right with Optional Round
9619ST10_CoCMP, // Compare
9620ST10_CoLOAD, // Load Accumulator
9621ST10_CoMAC, // Multiply-Accumulate & Optional Round
9622ST10_CoMACM, // Multiply-Accumulate Parallel Data Move & Optional Round
9623ST10_CoMAX, // Maximum
9624ST10_CoMIN, // Minimum
9625ST10_CoMOV, // Memory to Memory Move
9626ST10_CoMUL, // Multiply & Optional Round
9627ST10_CoNEG, // Negate Accumulator with Optional Rounding
9628ST10_CoNOP, // No-Operation
9629ST10_CoRND, // Round Accumulator
9630ST10_CoSHL, // Accumulator Logical Shift Left
9631ST10_CoSHR, // Accumulator Logical Shift Right
9632ST10_CoSTORE, // Store a MAC-Unit Register
9633ST10_CoSUB, // Subtract
9634// missing C166v2/ST10 instructions
9635C166_enwdt, // Enable Watchdog Timer
9636C166_sbrk, // Software Break
9638 };
9639/*
9640 * Interactive disassembler (IDA).
9641 * Copyright (c) 1990-2026 Hex-Rays
9642 * ALL RIGHTS RESERVED.
9643 *
9644 */
9645enum
9646{
9647ST20_null = 0, // Unknown Operation
9648// C1 instructions
9649ST20_adc, // add constant
9651ST20_addc, // add with carry
9652ST20_ajw, // adjust work space
9654ST20_arot, // anti-rotate stack
9655ST20_ashr, // arithmetic shift right
9656ST20_biquad, // biquad IIR filter step
9657ST20_bitld, // load bit
9658ST20_bitmask, // create bit mask
9659ST20_bitst, // store bit
9660ST20_breakpoint, // breakpoint
9661ST20_cj, // conditional jump
9662ST20_dequeue, // dequeue a process
9663ST20_divstep, // divide step
9664ST20_dup, // duplicate
9665ST20_ecall, // exception call
9666ST20_enqueue, // enqueue a process
9667ST20_eqc, // equals constant
9668ST20_eret, // exception return
9669ST20_fcall, // function call
9670ST20_gajw, // general adjust workspace
9671ST20_gt, // greater than
9672ST20_gtu, // greater than unsigned
9673ST20_io, // input/output
9674ST20_j, // jump
9675ST20_jab, // jump absolute
9676ST20_lbinc, // load byte and increment
9677ST20_ldc, // load constant
9678ST20_ldl, // load local
9679ST20_ldlp, // load local pointer
9680ST20_ldnl, // load non-local
9681ST20_ldnlp, // load non-local pointer
9682ST20_ldpi, // load pointer to instruction
9683ST20_ldprodid, // load product identity
9684ST20_ldtdesc, // load task descriptor
9685ST20_lsinc, // load sixteen and increment
9686ST20_lsxinc, // load sixteen sign extended and increment
9687ST20_lwinc, // load word and increment
9688ST20_mac, // multiply accumulate
9689ST20_mul, // multiply
9690ST20_nfix, // negative prefix
9691ST20_nop, // no operation
9692ST20_not, // bitwise not
9693ST20_opr, // operate
9695ST20_order, // order
9696ST20_orderu, // unsigned order
9697ST20_pfix, // prefix
9698ST20_rev, // reverse
9699ST20_rmw, // read modify write
9700ST20_rot, // rotate stack
9701ST20_run, // run process
9702ST20_saturate, // saturate
9703ST20_sbinc, // store byte and increment
9704ST20_shl, // shift left
9705ST20_shr, // shift right
9706ST20_signal, // signal
9707ST20_smacinit, // initialize short multiply accumulate loop
9708ST20_smacloop, // short multiply accumulate loop
9709ST20_smul, // short multiply
9710ST20_ssinc, // store sixteen and increment
9711ST20_statusclr, // clear bits in status register
9712ST20_statusset, // set bits in status register
9713ST20_statustst, // test status register
9714ST20_stl, // store local
9715ST20_stnl, // store non-local
9716ST20_stop, // stop process
9717ST20_sub, // subtract
9718ST20_subc, // subtract with carry
9719ST20_swap32, // byte swap 32
9720ST20_swinc, // store word and increment
9721ST20_timeslice, // timeslice
9722ST20_umac, // unsigned multiply accumulate
9723ST20_unsign, // unsign argument
9725ST20_wsub, // word subscript
9726ST20_xbword, // sign extend byte to word
9727ST20_xor, // exclusive or
9728ST20_xsword, // sign extend sixteen to word
9729// C2-C4 instructions
9730ST20_alt, // alt start
9731ST20_altend, // alt end
9732ST20_altwt, // alt wait
9733ST20_bcnt, // byte count
9734ST20_bitcnt, // count bits set in word
9735ST20_bitrevnbits, // reverse bottom n bits in word
9736ST20_bitrevword, // reverse bits in word
9737ST20_bsub, // byte subscript
9739ST20_causeerror, // cause error
9740ST20_cb, // check byte
9741ST20_cbu, // check byte unsigned
9742ST20_ccnt1, // check count from 1
9743ST20_cflerr, // check floating point error
9744ST20_cir, // check in range
9745ST20_ciru, // check in range unsigned
9746ST20_clockdis, // clock disable
9747ST20_clockenb, // clock enable
9748ST20_clrhalterr, // clear halt-on error flag
9749ST20_crcbyte, // calculate CRC on byte
9750ST20_crcword, // calculate CRC on word
9751ST20_cs, // check sixteen
9752ST20_csngl, // check single
9753ST20_csu, // check sixteen unsigned
9754ST20_csub0, // check subscript from 0
9755ST20_cword, // check word
9756ST20_devlb, // device load byte
9757ST20_devls, // device load sixteen
9758ST20_devlw, // device load word
9759ST20_devmove, // device move
9760ST20_devsb, // device store byte
9761ST20_devss, // device store sixteen
9762ST20_devsw, // device store word
9763ST20_diff, // difference
9764ST20_disc, // disable channel
9765ST20_diss, // disable skip
9766ST20_dist, // disable timer
9767ST20_div, // divide
9768ST20_enbc, // enable channel
9769ST20_enbs, // enable skip
9770ST20_enbt, // enable timer
9771ST20_endp, // end process
9772ST20_fmul, // fractional multiply
9773ST20_fptesterr, // test for FPU error
9774ST20_gcall, // general call
9775ST20_gintdis, // general interrupt disable
9776ST20_gintenb, // general interrupt enable
9777ST20_in, // input message
9778ST20_insertqueue, // insert at front of scheduler queue
9779ST20_intdis, // (localised) interrupt disable
9780ST20_intenb, // (localised) interrupt enable
9781ST20_iret, // interrupt return
9782ST20_ladd, // long add
9783ST20_lb, // load byte
9784ST20_lbx, // load byte and sign extend
9785ST20_ldclock, // load clock
9786ST20_lddevid, // load device identity
9787ST20_ldiff, // long diff
9788ST20_ldinf, // load infinity
9789ST20_ldiv, // long divide
9790ST20_ldmemstartval, // load value of MemStart address
9791ST20_ldpri, // load current priority
9792ST20_ldshadow, // load shadow registers
9793ST20_ldtimer, // load timer
9794ST20_ldtraph, // load trap handler
9795ST20_ldtrapped, // load trapped process status
9796ST20_lend, // loop end
9797ST20_lmul, // long multiply
9798ST20_ls, // load sixteen
9799ST20_lshl, // long shift left
9800ST20_lshr, // long shift right
9801ST20_lsub, // long subtract
9802ST20_lsum, // long sum
9803ST20_lsx, // load sixteen and sign extend
9804ST20_mint, // minimum integer
9805ST20_move, // move message
9806ST20_move2dall, // 2D block copy
9807ST20_move2dinit, // initialize data for 2D block move
9808ST20_move2dnonzero, // 2D block copy non-zero bytes
9809ST20_move2dzero, // 2D block copy zero bytes
9810ST20_norm, // normalize
9811ST20_out, // output message
9812ST20_outbyte, // output byte
9813ST20_outword, // output word
9814ST20_pop, // pop processor stack
9815ST20_postnormsn, // post-normalize correction of single length fp number
9816ST20_prod, // product
9817ST20_reboot, // reboot
9818ST20_rem, // remainder
9819ST20_resetch, // reset channel
9820ST20_restart, // restart
9821ST20_ret, // return
9822ST20_roundsn, // round single length floating point number
9823ST20_runp, // run process
9824ST20_satadd, // saturating add
9825ST20_satmul, // saturating multiply
9826ST20_satsub, // saturating subtract
9827ST20_saveh, // save high priority queue registers
9828ST20_savel, // save low priority queue registers
9829ST20_sb, // store byte
9830ST20_seterr, // set error flags
9831ST20_sethalterr, // set halt-on error flag
9832ST20_settimeslice, // set timeslicing status
9833ST20_slmul, // signed long multiply
9834ST20_ss, // store sixteen
9835ST20_ssub, // sixteen subscript
9836ST20_startp, // start process
9837ST20_stclock, // store clock register
9838ST20_sthb, // store high priority back pointer
9839ST20_sthf, // store high priority front pointer
9840ST20_stlb, // store low priority back pointer
9841ST20_stlf, // store low priority front pointer
9842ST20_stoperr, // stop on error
9843ST20_stopp, // stop process
9844ST20_stshadow, // store shadow registers
9845ST20_sttimer, // store timer
9846ST20_sttraph, // store trap handler
9847ST20_sttrapped, // store trapped process
9848ST20_sulmul, // signed timer unsigned long multiply
9850ST20_swapqueue, // swap scheduler queue
9851ST20_swaptimer, // swap timer queue
9852ST20_talt, // timer alt start
9853ST20_taltwt, // timer alt wait
9854ST20_testerr, // test error flag
9855ST20_testhalterr, // test halt-on error flag
9856ST20_testpranal, // test processor analysing
9857ST20_tin, // timer input
9858ST20_trapdis, // trap disable
9859ST20_trapenb, // trap enable
9860ST20_tret, // trap return
9861ST20_unpacksn, // unpack single length fp number
9862ST20_wcnt, // word count
9863ST20_wsubdb, // form double word subscript
9864ST20_xdble, // extend to double
9865ST20_xword, // extend word
9867 };
9868/*
9869 * Interactive disassembler (IDA).
9870 * Copyright (c) 1990-2026 Hex-Rays
9871 * ALL RIGHTS RESERVED.
9872 *
9873 */
9874enum
9875{
9876ST7_null = 0, // Unknown Operation
9877ST7_adc, // Add with Carry
9878ST7_add, // Addition
9879ST7_and, // Logical And
9880ST7_bcp, // Bit compare
9881ST7_bres, // Bit Reset
9882ST7_bset, // Bit Set
9883ST7_btjf, // Jump if bit is false
9884ST7_btjt, // Jump if bit is true
9885ST7_call, // Call subroutine
9886ST7_callr, // Call subroutine relative
9887ST7_clr, // Clear
9888ST7_cp, // Arithmetic Compare
9889ST7_cpl, // One Complement
9890ST7_dec, // Decrement
9891ST7_halt, // Halt
9892ST7_iret, // Interrupt routine return
9893ST7_inc, // Increment
9894ST7_jp, // Absolute Jump
9895ST7_jra, // Jump relative always
9896ST7_jrt, // Jump relative
9897ST7_jrf, // Never jump
9898ST7_jrih, // Jump if Port INT pin = 1
9899ST7_jril, // Jump if Port INT pin = 0
9900ST7_jrh, // Jump if H = 1
9901ST7_jrnh, // Jump if H = 0
9902ST7_jrm, // Jump if I = 1
9903ST7_jrnm, // Jump if I = 0
9904ST7_jrmi, // Jump if N = 1 (minus)
9905ST7_jrpl, // Jump if N = 0 (plus)
9906ST7_jreq, // Jump if Z = 1 (equal)
9907ST7_jrne, // Jump if Z = 0 (not equal)
9908ST7_jrc, // Jump if C = 1
9909ST7_jrnc, // Jump if C = 0
9910ST7_jrult, // Jump if C = 1
9911ST7_jruge, // Jump if C = 0
9912ST7_jrugt, // Jump if (C + Z = 0)
9913ST7_jrule, // Jump if (C + Z = 1)
9914ST7_ld, // Load
9915ST7_mul, // Multiply
9916ST7_neg, // Negate
9917ST7_nop, // No Operation
9918ST7_or, // OR Operation
9919ST7_pop, // Pop from the Stack
9920ST7_push, // Push onto the Stack
9921ST7_rcf, // Reset carry flag
9922ST7_ret, // Subroutine Return
9923ST7_rim, // Enable Interrupts
9924ST7_rlc, // Rotate left true
9925ST7_rrc, // Rotate right true
9926ST7_rsp, // Reset Stack Pointer
9927ST7_sbc, // Subtract with Carry
9928ST7_scf, // Set carry flag
9929ST7_sim, // Disable Interrupts
9930ST7_sla, // Shift left Arithmetic
9931ST7_sll, // Shift left Logic
9932ST7_srl, // Shift right Logic
9933ST7_sra, // Shift right Arithmetic
9934ST7_sub, // Substraction
9935ST7_swap, // SWAP nibbles
9936ST7_tnz, // Test for Neg & Zero
9937ST7_trap, // S/W trap
9938ST7_wfi, // Wait for Interrupt
9939ST7_xor, // Exclusive OR
9941 };
9942/*
9943 * Interactive disassembler (IDA).
9944 * Copyright (c) 1990-2026 Hex-Rays
9945 * ALL RIGHTS RESERVED.
9946 *
9947 */
9948enum
9949{
9955IA64_add, // 5 Add
9957IA64_addp4, // 7 Add pointer
9959IA64_alloc, // 9 Allocate stack frame
9960IA64_and, // 10 Logical AND
9961IA64_andcm, // 11 And complement
9964IA64_br, // 14 Branch
9965IA64_break, // 15 Break
9966IA64_brl, // 16 Branch long
9967IA64_brp, // 17 Branch predict
9968IA64_bsw, // 18 Bank switch
9972IA64_chk, // 22 Speculation check
9975IA64_clrrrb, // 25 Clear RRB
9976IA64_cmp, // 26 Compare
9977IA64_cmp4, // 27 Compare word
9978IA64_cmpxchg1, // 28 Compare and exchange byte
9979IA64_cmpxchg2, // 29 Compare and exchange halfword
9980IA64_cmpxchg4, // 30 Compare and exchange word
9981IA64_cmpxchg8, // 31 Compare and exchange double word
9983IA64_cover, // 33 Cover stack frame
9985IA64_czx1, // 35 Compute zero index
9986IA64_czx2, // 36 Compute zero index
9988IA64_dep, // 38 Deposit
9992IA64_epc, // 42 Enter privileged code
9997IA64_extr, // 47 Extract
9999IA64_fabs, // 49 Floating point absolute value
10000IA64_fadd, // 50 Floating point add
10001IA64_famax, // 51 Floating point absolute maximum
10002IA64_famin, // 52 Floating point absolute minimum
10003IA64_fand, // 53 Floating point logical and
10004IA64_fandcm, // 54 Floating point and complement
10006IA64_fc, // 56 Flush cache
10007IA64_fchkf, // 57 Floating point check flags
10008IA64_fclass, // 58 Floating point class
10009IA64_fclrf, // 59 Floating point clear flags
10010IA64_fcmp, // 60 Floating point compare
10011IA64_fcvt, // 61 Convert floating point to/from integer
10012IA64_fetchadd4, // 62 Fetch word and add immediate
10013IA64_fetchadd8, // 63 Fetch double word and add immediate
10016IA64_flushrs, // 66 Flush register stack
10017IA64_fma, // 67 Floating point multiply add
10018IA64_fmax, // 68 Floating point maximum
10019IA64_fmerge, // 69 Floating point merge
10020IA64_fmin, // 70 Floating point minimum
10021IA64_fmix, // 71 Floating point mix
10022IA64_fmpy, // 72 Floating point multiply
10023IA64_fms, // 73 Floating point multiply subtract
10024IA64_fneg, // 74 Floating point negate
10025IA64_fnegabs, // 75 Floating point negate absolute value
10026IA64_fnma, // 76 Floating point negative multiply add
10027IA64_fnmpy, // 77 Floating point negative multiply
10028IA64_fnorm, // 78 Floating point normalize
10029IA64_for, // 79 Floating point logical or
10030IA64_fpabs, // 80 Floating point parallel absolute value
10031IA64_fpack, // 81 Floating point pack
10032IA64_fpamax, // 82 Floating point parallel absolute maximum
10033IA64_fpamin, // 83 Floating point parallel absolute minimum
10034IA64_fpcmp, // 84 Floating point parallel compare
10035IA64_fpcvt, // 85 Floating point parallel conversion
10036IA64_fpma, // 86 Floating point parallel multiply add
10037IA64_fpmax, // 87 Floating point parallel maximum
10038IA64_fpmerge, // 88 Floating point parallel merge
10039IA64_fpmin, // 89 Floating point parallel minimum
10040IA64_fpmpy, // 90 Floating point parallel multiply
10041IA64_fpms, // 91 Floating point parallel multiply subtract
10042IA64_fpneg, // 92 Floating point parallel negate
10043IA64_fpnegabs, // 93 Floating point parallel negate absolute value
10044IA64_fpnma, // 94 Floating point parallel negative multiply add
10045IA64_fpnmpy, // 95 Floating point parallel negative multiply
10046IA64_fprcpa, // 96 Floating point parallel reciprocal approximation
10047IA64_fprsqrta, // 97 Floating point parallel reciprocal square root approximation
10048IA64_frcpa, // 98 Floating point reciprocal approximation
10049IA64_frsqrta, // 99 Floating point reciprocal square root approximation
10050IA64_fselect, // 100 Floating point select
10051IA64_fsetc, // 101 Floating point set controls
10052IA64_fsub, // 102 Floating point subtract
10053IA64_fswap, // 103 Floating point swap
10054IA64_fsxt, // 104 Floating point sign extend
10055IA64_fwb, // 105 Flush write buffers
10056IA64_fx, // 106
10057IA64_fxor, // 107 Floating point exclusive or
10059IA64_g, // 109
10060IA64_ga, // 110
10061IA64_ge, // 111
10062IA64_getf, // 112 Get floating point value or exponent or significand
10064IA64_gt, // 114
10066IA64_h, // 116
10067IA64_hu, // 117
10068IA64_i, // 118
10069IA64_ia, // 119
10071IA64_invala, // 121 Invalidate ALAT
10072IA64_itc, // 122 Insert translation cache
10073IA64_itr, // 123 Insert translation register
10074IA64_l, // 124
10075IA64_ld1, // 125 Load byte
10076IA64_ld2, // 126 Load halfword
10077IA64_ld4, // 127 Load word
10078IA64_ld8, // 128 Load double word
10079IA64_ldf, // 129 Floating point load
10080IA64_ldf8, // 130 Floating point load
10081IA64_ldfd, // 131 Floating point load
10082IA64_ldfe, // 132 Floating point load
10083IA64_ldfp8, // 133 Floating point load pair
10084IA64_ldfpd, // 134 Floating point load pair
10085IA64_ldfps, // 135 Floating point load pair
10086IA64_ldfs, // 136 Floating point load
10087IA64_le, // 137
10089IA64_lfetch, // 139 Line prefetch
10090IA64_loadrs, // 140 Load register stack
10092IA64_lr, // 142
10093IA64_lt, // 143
10095IA64_lu, // 145
10096IA64_m, // 146
10098IA64_mf, // 148 Memory fence
10099IA64_mix1, // 149 Mix bytes
10100IA64_mix2, // 150 Mix halfwords
10101IA64_mix4, // 151 Mix words
10102IA64_mov, // 152 Move register
10103IA64_movl, // 153 Move long immediate
10104IA64_mux1, // 154 Mux byte
10105IA64_mux2, // 155 Mux halfword
10106IA64_nc, // 156
10107IA64_ne, // 157
10111IA64_nl, // 161
10114IA64_nm, // 164
10115IA64_nop, // 165 No operation
10116IA64_nr, // 166
10117IA64_ns, // 167
10121IA64_nz, // 171
10122IA64_or, // 172 Logical or
10125IA64_pack2, // 175 Pack
10126IA64_pack4, // 176 Pack
10127IA64_padd1, // 177 Parallel add bytes
10128IA64_padd2, // 178 Parallel add halfwords
10129IA64_padd4, // 179 Parallel add words
10130IA64_pavg1, // 180 Parallel average bytes
10131IA64_pavg2, // 181 Parallel average halfwords
10132IA64_pavgsub1, // 182 Parallel average subtract bytes
10133IA64_pavgsub2, // 183 Parallel average subtract halfwords
10134IA64_pcmp1, // 184 Parallel compare bytes
10135IA64_pcmp2, // 185 Parallel compare halfwords
10136IA64_pcmp4, // 186 Parallel compare words
10137IA64_pmax1, // 187 Parallel maxmimum bytes
10138IA64_pmax2, // 188 Parallel maxmimum halfwords
10139IA64_pmin1, // 189 Parallel minimum bytes
10140IA64_pmin2, // 190 Parallel minimum halfwords
10141IA64_pmpy2, // 191 Parallel multiply
10142IA64_pmpyshr2, // 192 Parallel multiply and shift right
10143IA64_popcnt, // 193 Population count
10144IA64_pr, // 194
10145IA64_probe, // 195 Probe address
10146IA64_psad1, // 196 Parallel sum of absolute difference
10147IA64_pshl2, // 197 Parallel shift left halfwords
10148IA64_pshl4, // 198 Parallel shift left words
10149IA64_pshladd2, // 199 Parallel shift left and Add
10150IA64_pshr2, // 200 Parallel shift right halfwords
10151IA64_pshr4, // 201 Parallel shift right words
10152IA64_pshradd2, // 202 Parallel shift right and Add
10153IA64_psub1, // 203 Parallel subtract bytes
10154IA64_psub2, // 204 Parallel subtract halfwords
10155IA64_psub4, // 205 Parallel subtract words
10156IA64_ptc, // 206 Purge translation cache
10157IA64_ptr, // 207 Purge translation register
10158IA64_r, // 208
10162IA64_rfi, // 212 Return from interruption
10163IA64_rsm, // 213 Reset system mask
10164IA64_rum, // 214 Reset user mask
10165IA64_rw, // 215
10166IA64_s, // 216
10167IA64_s0, // 217
10168IA64_s1, // 218
10169IA64_s2, // 219
10170IA64_s3, // 220
10171IA64_sa, // 221
10172IA64_se, // 222
10173IA64_setf, // 223 Set floating point value, exponent, or significand
10174IA64_shl, // 224 Shift left
10175IA64_shladd, // 225 Shift left and Add
10176IA64_shladdp4, // 226 Shift left and Add pointer
10177IA64_shr, // 227 Shift right
10178IA64_shrp, // 228 Shift right pair
10183IA64_srlz, // 233 Serialize
10184IA64_ssm, // 234 Set system mask
10186IA64_st1, // 236 Store byte
10187IA64_st2, // 237 Store halfword
10188IA64_st4, // 238 Store word
10189IA64_st8, // 239 Store double word
10190IA64_stf, // 240 Store floating point
10191IA64_stf8, // 241 Store floating point
10192IA64_stfd, // 242 Store floating point
10193IA64_stfe, // 243 Store floating point
10194IA64_stfs, // 244 Store floating point
10195IA64_sub, // 245 Subtract
10196IA64_sum, // 246 Set user mask
10197IA64_sxt1, // 247 Sign extend byte
10198IA64_sxt2, // 248 Sign extend halfword
10199IA64_sxt4, // 249 Sign extend word
10200IA64_sync, // 250 Memory synchronization
10201IA64_tak, // 251 Translation access key
10202IA64_tbit, // 252 Test bit
10203IA64_thash, // 253 Translation hashed entry address
10204IA64_tnat, // 254 Test NaT
10205IA64_tpa, // 255 Translate to physical address
10207IA64_ttag, // 257 Translation hashed entry tag
10208IA64_u, // 258
10211IA64_unpack1, // 261 Unpack byte
10212IA64_unpack2, // 262 Unpack halfword
10213IA64_unpack4, // 263 Unpack word
10217IA64_w, // 267
10220IA64_x, // 270
10221IA64_xchg1, // 271 Exchange bytes
10222IA64_xchg2, // 272 Exchange halfwords
10223IA64_xchg4, // 273 Exchange words
10224IA64_xchg8, // 274 Exchange double words
10225IA64_xf, // 275
10226IA64_xma, // 276 Fixed point multiply add
10227IA64_xmpy, // 277 Fixed point multiply
10228IA64_xor, // 278 Exclusive or
10230IA64_z, // 280
10231IA64_zxt1, // 281 Zero extend byte
10232IA64_zxt2, // 282 Zero extend halfword
10233IA64_zxt4, // 283 Zero extend word
10235 };
10236/*
10237 * Interactive disassembler (IDA).
10238 * Copyright (c) 1990-2026 Hex-Rays
10239 * ALL RIGHTS RESERVED.
10240 *
10241 */
10242enum
10243{
10244NET_null = 0, // Unknown Operation
10245NET_add, // Add two values, returning a new value
10246NET_add_ovf, // Add signed integer values with overflow check
10247NET_add_ovf_un, // Add unsigned integer values with overflow check
10248NET_and, // Bitwise AND of two integral values, returns an integral value
10250NET_ann_call, // Start of simple calling sequence
10251NET_ann_catch, // Start an exception filter or handler
10252NET_ann_data, // Multi-byte no operation
10253NET_ann_data_s, // Multi-byte no operation, short form
10254NET_ann_dead, // Stack location is no longer live
10255NET_ann_def, // SSA definition node
10256NET_ann_hoisted, // Start of the simple portion of a hoisted calling sequence
10257NET_ann_hoisted_call, // Start of complex argument evaluation
10259NET_ann_live, // Mark a stack location as live
10260NET_ann_phi, // SSA definition node
10261NET_ann_ref, // SSA reference node
10262NET_ann_ref_s, // SSA reference node, short form
10263NET_arglist, // Return argument list handle for the current method
10264NET_beq, // Branch to target if equal
10265NET_beq_s, // Branch to target if equal, short form
10266NET_bge, // Branch to target if greater than or equal to
10267NET_bge_s, // Branch to target if greater than or equal to, short form
10268NET_bge_un, // Branch to target if greater than or equal to (unsigned or unordered)
10269NET_bge_un_s, // Branch to target if greater than or equal to (unsigned or unordered), short form
10270NET_bgt, // Branch to target if greater than
10271NET_bgt_s, // Branch to target if greater than, short form
10272NET_bgt_un, // Branch to target if greater than (unsigned or unordered)
10273NET_bgt_un_s, // Branch to target if greater than (unsigned or unordered), short form
10274NET_ble, // Branch to target if less than or equal to
10275NET_ble_s, // Branch to target if less than or equal to, short form
10276NET_ble_un, // Branch to target if less than or equal to (unsigned or unordered)
10277NET_ble_un_s, // Branch to target if less than or equal to (unsigned or unordered), short form
10278NET_blt, // Branch to target if less than
10279NET_blt_s, // Branch to target if less than, short form
10280NET_blt_un, // Branch to target if less than (unsigned or unordered)
10281NET_blt_un_s, // Branch to target if less than (unsigned or unordered), short form
10282NET_bne_un, // Branch to target if unequal or unordered
10283NET_bne_un_s, // Branch to target if unequal or unordered, short form
10284NET_box, // Convert value type to object reference
10285NET_br, // Branch to target
10286NET_br_s, // Branch to target, short form
10287NET_break, // Inform a debugger that a breakpoint has been reached
10288NET_brfalse, // Branch to target if value is zero (false)
10289NET_brfalse_s, // Branch to target if value is zero (false), short form
10290NET_brtrue, // Branch to target if value is non-zero (true)
10291NET_brtrue_s, // Branch to target if value is non-zero (true), short form
10292NET_call, // Call a method
10293NET_calli, // Call an indirect method
10294NET_callvirt, // Call a method associated with obj
10295NET_castclass, // Cast object to class
10296NET_ceq, // Push 1 (of type I4) if value1 equals value2, else 0
10297NET_cgt, // Push 1 (of type I4) if value1 > value2, else 0
10298NET_cgt_un, // Push 1 (of type I4) if value1 > value2, unsigned or unordered, else 0
10299NET_ckfinite, // Throw ArithmeticException if value is not a finite number
10300NET_clt, // Push 1 (of type I4) if value1 < value2, else 0
10301NET_clt_un, // Push 1 (of type I4) if value1 < value2, unsigned or unordered, else 0
10302NET_conv_i, // Convert to I, pushing I on stack
10303NET_conv_i1, // Convert to I1, pushing I4 on stack
10304NET_conv_i2, // Convert to I2, pushing I4 on stack
10305NET_conv_i4, // Convert to I4, pushing I4 on stack
10306NET_conv_i8, // Convert to I8, pushing I8 on stack
10307NET_conv_ovf_i, // Convert to an I (on the stack as I) and throw an exception on overflow
10308NET_conv_ovf_i1, // Convert to an I1 (on the stack as I4) and throw an exception on overflow
10309NET_conv_ovf_i1_un, // Convert unsigned to an I1 (on the stack as I4) and throw an exception on overflow
10310NET_conv_ovf_i2, // Convert to an I2 (on the stack as I4) and throw an exception on overflow
10311NET_conv_ovf_i2_un, // Convert unsigned to an I2 (on the stack as I4) and throw an exception on overflow
10312NET_conv_ovf_i4, // Convert to an I4 (on the stack as I4) and throw an exception on overflow
10313NET_conv_ovf_i4_un, // Convert unsigned to an I4 (on the stack as I4) and throw an exception on overflow
10314NET_conv_ovf_i8, // Convert to an I8 (on the stack as I8) and throw an exception on overflow
10315NET_conv_ovf_i8_un, // Convert unsigned to an I8 (on the stack as I8) and throw an exception on overflow
10316NET_conv_ovf_i_un, // Convert to unsigned an I (on the stack as I) and throw an exception on overflow
10317NET_conv_ovf_u, // Convert to a U (on the stack as I) and throw an exception on overflow
10318NET_conv_ovf_u1, // Convert to a U1 (on the stack as I4) and throw an exception on overflow
10319NET_conv_ovf_u1_un, // Convert to unsigned a U1 (on the stack as I4) and throw an exception on overflow
10320NET_conv_ovf_u2, // Convert to a U2 (on the stack as I4) and throw an exception on overflow
10321NET_conv_ovf_u2_un, // Convert to unsigned a U2 (on the stack as I4) and throw an exception on overflow
10322NET_conv_ovf_u4, // Convert to a U4 (on the stack as I4) and throw an exception on overflow
10323NET_conv_ovf_u4_un, // Convert to unsigned a U3 (on the stack as I4) and throw an exception on overflow
10324NET_conv_ovf_u8, // Convert to a U8 (on the stack as I8) and throw an exception on overflow
10325NET_conv_ovf_u8_un, // Convert to unsigned a U8 (on the stack as I8) and throw an exception on overflow
10326NET_conv_ovf_u_un, // Convert to unsigned a U (on the stack as I) and throw an exception on overflow
10327NET_conv_r4, // Convert to R4, pushing F on stack
10328NET_conv_r8, // Convert to R8, pushing F on stack
10329NET_conv_r_un, // Convert unsigned integer to floating point, pushing F on stack
10330NET_conv_u, // Convert to U, pushing I on stack
10331NET_conv_u1, // Convert to U1, pushing I4 on stack
10332NET_conv_u2, // Convert to U2, pushing I4 on stack
10333NET_conv_u4, // Convert to U4, pushing I4 on stack
10334NET_conv_u8, // Convert to U8, pushing I8 on stack
10335NET_cpblk, // Copy data from memory to memory
10336NET_cpobj, // Copy a value type
10337NET_div, // Divide two values to return a quotient or floating point result
10338NET_div_un, // Divide two values, unsigned, returning a quotient
10339NET_dup, // Duplicate value on the top of the stack
10340NET_endfilter, // End filter clause of SEH exception handling
10341NET_endfinally, // End fault clause of an exception block
10342NET_initblk, // Set a block of memory to a given byte
10343NET_initobj, // Initialize a value type
10344NET_isinst, // Test if an object is an instance of a class or interface, returning NULL or an instance of that class or interface
10345NET_jmp, // Exit current method and jump to specified method
10346NET_ldarg, // Load argument numbered num onto stack
10347NET_ldarg_0, // Load argument 0 onto stack
10348NET_ldarg_1, // Load argument 1 onto stack
10349NET_ldarg_2, // Load argument 2 onto stack
10350NET_ldarg_3, // Load argument 3 onto stack
10351NET_ldarg_s, // Load argument numbered num onto stack, short form
10352NET_ldarga, // Fetch the address of argument
10353NET_ldarga_s, // Fetch the address of argument, short form
10354NET_ldc_i4, // Push num of type I4 onto the stack as I4
10355NET_ldc_i4_0, // Push 0 onto the stack as I4
10356NET_ldc_i4_1, // Push 1 onto the stack as I4
10357NET_ldc_i4_2, // Push 2 onto the stack as I4
10358NET_ldc_i4_3, // Push 3 onto the stack as I4
10359NET_ldc_i4_4, // Push 4 onto the stack as I4
10360NET_ldc_i4_5, // Push 5 onto the stack as I4
10361NET_ldc_i4_6, // Push 6 onto the stack as I4
10362NET_ldc_i4_7, // Push 7 onto the stack as I4
10363NET_ldc_i4_8, // Push 8 onto the stack as I4
10364NET_ldc_i4_m1, // Push -1 onto the stack as I4
10365NET_ldc_i4_s, // Push num onto the stack as I4, short form
10366NET_ldc_i8, // Push num of type I8 onto the stack as I8
10367NET_ldc_r4, // Push num of type R4 onto the stack as F
10368NET_ldc_r8, // Push num of type R8 onto the stack as F
10369NET_ldelem_i, // Load the element at index with type I onto the top of the stack as an I
10370NET_ldelem_i1, // Load the element at index with type I1 onto the top of the stack as an I4
10371NET_ldelem_i2, // Load the element at index with type I2 onto the top of the stack as an I4
10372NET_ldelem_i4, // Load the element at index with type I4 onto the top of the stack as an I4
10373NET_ldelem_i8, // Load the element at index with type I8 onto the top of the stack as an I8
10374NET_ldelem_r4, // Load the element at index with type R4 onto the top of the stack as an F
10375NET_ldelem_r8, // Load the element at index with type R8 onto the top of the stack as an F
10376NET_ldelem_ref, // Load the element at index, an object, onto the top of the stack as an O
10377NET_ldelem_u1, // Load the element at index with type U1 onto the top of the stack as an I4
10378NET_ldelem_u2, // Load the element at index with type U2 onto the top of the stack as an I4
10379NET_ldelem_u4, // Load the element at index with type U4 onto the top of the stack as an I4
10380NET_ldelema, // Load the address of element at index onto the top of the stack
10381NET_ldfld, // Push the value of field of object on the stack
10382NET_ldflda, // Push the address of field of object on the stack
10383NET_ldftn, // Push a pointer to a method referenced by method on the stack
10384NET_ldind_i, // Indirect load value of type I as I stack
10385NET_ldind_i1, // Indirect load value of type I1 as I4 on stack
10386NET_ldind_i2, // Indirect load value of type I2 as I4 on stack
10387NET_ldind_i4, // Indirect load value of type I4 as I4 on stack
10388NET_ldind_i8, // Indirect load value of type I8 as I8 on stack
10389NET_ldind_r4, // Indirect load value of type R4 as F stack
10390NET_ldind_r8, // Indirect load value of type R8 as F stack
10391NET_ldind_ref, // Indirect load value of type object ref as O on stack
10392NET_ldind_u1, // Indirect load value of type U1 as I4 stack
10393NET_ldind_u2, // Indirect load value of type U2 as I4 stack
10394NET_ldind_u4, // Indirect load value of type U4 as I4 stack
10395NET_ldlen, // Push the length (of type U) of array on the stack
10396NET_ldloc, // Load local variable of index indx onto stack
10397NET_ldloc_0, // Load local variable 0 onto stack
10398NET_ldloc_1, // Load local variable 1 onto stack
10399NET_ldloc_2, // Load local variable 2 onto stack
10400NET_ldloc_3, // Load local variable 3 onto stack
10401NET_ldloc_s, // Load local variable of index indx onto stack, short form
10402NET_ldloca, // Load address of local variable
10403NET_ldloca_s, // Load address of local variable, short form
10404NET_ldnull, // Push null GC reference on the stack
10405NET_ldobj, // Copy instance of value type to the stack.
10406NET_ldsfld, // Push the value of field on the stack
10407NET_ldsflda, // Push the address of the static field on the stack
10408NET_ldstr, // Push a string object for the literal string
10409NET_ldtoken, // Convert metadata token to its runtime representation
10410NET_ldvirtftn, // Push address of virtual method on the stack
10411NET_leave, // Exit a protected region of code
10412NET_leave_s, // Exit a protected region of code, short form
10413NET_localloc, // Allocate space from the local memory pool
10414NET_mkrefany, // Push a typed reference to pointer of type class onto the stack
10415NET_mul, // Multiply values
10416NET_mul_ovf, // Multiply signed integer values. Signed result must fit in same size
10417NET_mul_ovf_un, // Multiply unsigned integer values. Unsigned result must fit in same size
10418NET_neg, // Negate value
10419NET_newarr, // Create a zero-based, one-dimensional array
10420NET_newobj, // Create a new object
10421NET_nop, // Do nothing
10422NET_not, // Bitwise complement
10423NET_or, // Bitwise OR of two integer values, returns an integer
10424NET_pop, // Pop a value from the stack
10425NET_refanytype, // Push the type token stored in a typed reference
10426NET_refanyval, // Push the address stored in a typed reference
10427NET_rem, // Remainder of dividing value1 by value2
10428NET_rem_un, // Remainder of unsigned dividing value1 by value2
10429NET_ret, // Return from method, possibly returning a value
10430NET_rethrow, // Rethrow the current exception
10431NET_shl, // Shift an integer to the left (shifting in zeros)
10432NET_shr, // Shift an integer right, (shift in sign), return an integer
10433NET_shr_un, // Shift an integer right, (shift in zero), return an integer
10434NET_sizeof, // Push the size, in bytes, of a value type as a U4
10435NET_starg, // Store a value to argument
10436NET_starg_s, // Store a value to argument, short form
10437NET_stelem_i, // Replace array element at index with the I value on the stack
10438NET_stelem_i1, // Replace array element at index with the I1 value on the stack
10439NET_stelem_i2, // Replace array element at index with the I2 value on the stack
10440NET_stelem_i4, // Replace array element at index with the I4 value on the stack
10441NET_stelem_i8, // Replace array element at index with the I8 value on the stack
10442NET_stelem_r4, // Replace array element at index with the R4 value on the stack
10443NET_stelem_r8, // Replace array element at index with the R8 value on the stack
10444NET_stelem_ref, // Replace array element at index with the ref value on the stack
10445NET_stfld, // Store into a field of an object
10446NET_stind_i, // Store value of type I into memory at address
10447NET_stind_i1, // Store value of type I1 into memory at address
10448NET_stind_i2, // Store value of type I2 into memory at address
10449NET_stind_i4, // Store value of type I4 into memory at address
10450NET_stind_i8, // Store value of type I8 into memory at address
10451NET_stind_r4, // Store value of type R4 into memory at address
10452NET_stind_r8, // Store value of type R8 into memory at address
10453NET_stind_ref, // Store value of type object ref (type O) into memory at address
10454NET_stloc, // Pop value from stack into local variable
10455NET_stloc_0, // Pop value from stack into local variable 0
10456NET_stloc_1, // Pop value from stack into local variable 1
10457NET_stloc_2, // Pop value from stack into local variable 2
10458NET_stloc_3, // Pop value from stack into local variable 3
10459NET_stloc_s, // Pop value from stack into local variable, short form
10460NET_stobj, // Store a value type from the stack into memory
10461NET_stsfld, // Store a static field of a class
10462NET_sub, // Subtract value2 from value1, returning a new value
10463NET_sub_ovf, // Subtract I from an I. Signed result must fit in same size
10464NET_sub_ovf_un, // Subtract U from a U. Unsigned result must fit in same size
10465NET_switch, // Jump to one of N values
10466NET_tail_, // (prefix) subsequent call terminates current method
10467NET_throw, // Throw an exception
10468NET_unaligned_, // (prefix) subsequent pointer instruction may be unaligned
10469NET_unbox, // Convert boxed value type to its raw form
10470NET_volatile_, // (prefix) subsequent pointer reference is volatile
10471NET_xor, // Bitwise XOR of integer values, returns an integer
10472NET_ldelem, // Load the element at index onto the top of the stack
10473NET_stelem, // Replace array element at index with the ref value on the stack
10474// 2.0 instructions
10475NET_unbox_any, // Extract a value-type from obj, its boxed representation
10476NET_constrained_, // (prefix) invoke a member on a value of a variable type
10477NET_no_, // (prefix) possibly skip a fault check
10478NET_readonly_, // (prefix) following instruction returns a controlled-mutability managed pointer
10480 };
10481/*
10482 * Interactive disassembler (IDA).
10483 * Copyright (c) 1990-2026 Hex-Rays
10484 * ALL RIGHTS RESERVED.
10485 *
10486 * HCS12X opcodes added by alexbratovic@bratspeed.com 12/12/2007
10487 * XGATE opcodes added by alexbratovic@bratspeed.com 12/09/2009
10488 */
10489enum
10490{
10491MC12_null = 0, // Unknown Operation
10492MC12_aba, // Add B to A
10493MC12_abx, // Add B to X
10494MC12_aby, // Add B to Y
10495MC12_adca, // Add with carry to A
10496MC12_adcb, // Add with carry to B
10497MC12_adda, // Add memory to A
10498MC12_addb, // Add memory to B
10499MC12_addd, // Add to D
10500MC12_anda, // AND A with memory
10501MC12_andb, // AND B with memory
10502MC12_andcc, // Logical AND CCR with memory
10503MC12_asl, // Arithmetic shift left memory
10504MC12_asla, // Arithmetic shift left A
10505MC12_aslb, // Arithmetic shift left B
10506MC12_asld, // Arithmetic shift left D
10507MC12_asr, // Arithmetic shift right memory
10508MC12_asra, // Arithmetic shift right A
10509MC12_asrb, // Arithmetic shift right B
10510MC12_bcc, // Branch if carry clear
10511MC12_bclr, // Clear bits in memory
10512MC12_bcs, // Branch if carry set
10513MC12_beq, // Branch if equal
10514MC12_bge, // Branch if greater than or equal
10515MC12_bgnd, // Enter background debug mode
10516MC12_bgt, // Branch if greater than
10517MC12_bhi, // Branch if higher
10518MC12_bhs, // Branch if higher or same
10519MC12_bita, // Bit test A
10520MC12_bitb, // Bit test B
10521MC12_ble, // Branch if less than or equal
10522MC12_blo, // Branch if lower
10523MC12_bls, // Branch if lower or same
10524MC12_blt, // Branch if less than
10525MC12_bmi, // Branch if minus
10526MC12_bne, // Branch if not equal
10527MC12_bpl, // Branch if plus
10528MC12_bra, // Branch always
10529MC12_brclr, // Branch if selected bits clear
10530MC12_brn, // Branch never
10531MC12_brset, // Branch if selected bits set
10532MC12_bset, // Set bits in memory
10533MC12_bsr, // Branch to subroutine
10534MC12_bvc, // Branch if overflow clear
10535MC12_bvs, // Branch if overflow set
10536MC12_call, // Call subroutine in expanded memory
10537MC12_cba, // Compare A to B
10538MC12_clc, // Clear C bit
10539MC12_cli, // Clear I bit
10540MC12_clr, // Clear memory
10541MC12_clra, // Clear A
10542MC12_clrb, // Clear B
10543MC12_clv, // Clear V bit
10544MC12_cmpa, // Compare A to memory
10545MC12_cmpb, // Compare B to memory
10546MC12_com, // One's complement memory
10547MC12_coma, // One's complement A
10548MC12_comb, // One's complement B
10549MC12_cpd, // Compare D to memory (16-bit)
10550MC12_cps, // Compare SP to memory (16-bit)
10551MC12_cpx, // Compare X to memory (16-bit)
10552MC12_cpy, // Compare Y to memory (16-bit)
10553MC12_daa, // Decimal adjust A
10554MC12_dbeq, // Decrement counter and branch if = 0
10555MC12_dbne, // Decrement counter and branch if != 0
10556MC12_dec, // Decrement memory
10557MC12_deca, // Decrement A
10558MC12_decb, // Decrement B
10559MC12_des, // Decrement SP
10560MC12_dex, // Decrement X
10561MC12_dey, // Decrement Y
10562MC12_ediv, // 32 by 16 divide (unsigned) Quotient->Y Remainder->D
10563MC12_edivs, // 32 by 16 divide (signed) Quotient->Y Remainder->D
10564MC12_emacs, // Multiply and accumulate (signed)
10565MC12_emaxd, // MAX of two unsigned 16-bit values result to accumulator
10566MC12_emaxm, // MAX of two unsigned 16-bit values result to memory
10567MC12_emind, // MIN of two unsigned 16-bit values result to accumulator
10568MC12_eminm, // MIN of two unsigned 16-bit values result to memory
10569MC12_emul, // 16 by 16 multiply (unsigned)
10570MC12_emuls, // 16 by 16 multiply (signed)
10571MC12_eora, // Exclusive OR A with memory
10572MC12_eorb, // Exclusive OR B with memory
10573MC12_etbl, // 16-bit table lookup and interpolate
10574MC12_exg, // Exchange register to register
10575MC12_fdiv, // 16 by 16 fractional divide Remainder->D
10576MC12_ibeq, // Increment counter and branch if = 0
10577MC12_ibne, // Increment counter and branch if != 0
10578MC12_idiv, // 16 by 16 integer divide (unsigned) Remainder->D
10579MC12_idivs, // 16 by 16 integer divide (signed) Remainder->D
10580MC12_inc, // Increment memory
10581MC12_inca, // Increment A
10582MC12_incb, // Increment B
10583MC12_ins, // Increment SP
10584MC12_inx, // Increment X
10585MC12_iny, // Increment Y
10586MC12_jmp, // Jump Address
10587MC12_jsr, // Jump to subroutine
10588MC12_lbcc, // Long branch if carry clear
10589MC12_lbcs, // Long branch if carry set
10590MC12_lbeq, // Long branch if equal
10591MC12_lbge, // Long branch if greater than or equal
10592MC12_lbgt, // Long branch if greater than
10593MC12_lbhi, // Long branch if higher
10594MC12_lbhs, // Long branch if higher or same
10595MC12_lble, // Long branch if less than or equal
10596MC12_lblo, // Long branch if lower
10597MC12_lbls, // Long branch if lower or same
10598MC12_lblt, // Long branch if less than
10599MC12_lbmi, // Long branch if minus
10600MC12_lbne, // Long branch if not equal
10601MC12_lbpl, // Long branch if plus
10602MC12_lbra, // Long branch always
10603MC12_lbrn, // Long branch never
10604MC12_lbvc, // Long branch if overflow clear
10605MC12_lbvs, // Long branch if overflow set
10606MC12_ldaa, // Load A
10607MC12_ldab, // Load B
10608MC12_ldd, // Load D
10609MC12_lds, // Load SP
10610MC12_ldx, // Load X
10611MC12_ldy, // Load Y
10612MC12_leas, // Load effective address into SP
10613MC12_leax, // Load effective address into X
10614MC12_leay, // Load effective address into Y
10615MC12_lsl, // Logic shift left memory
10616MC12_lsla, // Logic shift left A
10617MC12_lslb, // Logic shift left B
10618MC12_lsld, // Logic shift left D
10619MC12_lsr, // Logic shift right memory
10620MC12_lsra, // Logic shift right A
10621MC12_lsrb, // Logic shift right B
10622MC12_lsrd, // Logic shift right D
10623MC12_maxa, // MAX of two unsigned 8-bit values result to accumulator
10624MC12_maxm, // MAX of two unsigned 8-bit values result to memory
10625MC12_mem, // Membership function
10626MC12_mina, // MIN of two unsigned 8-bit values result to accumulator
10627MC12_minm, // MIN of two unsigned 8-bit values result to memory
10628MC12_movb, // Move byte (8-bit)
10629MC12_movw, // Move word (16-bit)
10630MC12_mul, // 8 by 8 multiply (unsigned)
10631MC12_neg, // Two's complement memory
10632MC12_nega, // Two's complement A
10633MC12_negb, // Two's complement B
10634MC12_nop, // Null operation
10635MC12_oraa, // OR A with memory
10636MC12_orab, // OR B with memory
10637MC12_orcc, // Logical OR CCR with memory
10638MC12_psha, // Push A
10639MC12_pshb, // Push B
10640MC12_pshc, // Push CCR
10641MC12_pshd, // Push D
10642MC12_pshx, // Push X
10643MC12_pshy, // Push Y
10644MC12_pula, // Pull A
10645MC12_pulb, // Pull B
10646MC12_pulc, // Pull CCR
10647MC12_puld, // Pull D
10648MC12_pulx, // Pull X
10649MC12_puly, // Pull Y
10650MC12_rev, // MIN-MAX rule evaluation
10651MC12_revw, // MIN-MAX rule evaluation
10652MC12_rol, // Rotate left memory through carry
10653MC12_rola, // Rotate left A through carry
10654MC12_rolb, // Rotate left B through carry
10655MC12_ror, // Rotate right memory through carry
10656MC12_rora, // Rotate right A through carry
10657MC12_rorb, // Rotate right B through carry
10658MC12_rtc, // Return from call
10659MC12_rti, // Return from interrupt
10660MC12_rts, // Return from subroutine
10661MC12_sba, // Subtract B from A
10662MC12_sbca, // Subtract with borrow from A
10663MC12_sbcb, // Subtract with borrow from B
10664MC12_sec, // Set C bit
10665MC12_sei, // Set I bit
10666MC12_sev, // Set V bit
10667MC12_sex, // Sign extend 8-Bit operand
10668MC12_staa, // Store A
10669MC12_stab, // Store B
10670MC12_std, // Store D
10672MC12_sts, // Store SP
10673MC12_stx, // Store X
10674MC12_sty, // Store Y
10675MC12_suba, // Subtract memory from A
10676MC12_subb, // Subtract memory from B
10677MC12_subd, // Subtract memory from D
10678MC12_swi, // Software interrupt
10679MC12_tab, // Transfer A to B
10680MC12_tap, // Transfer A to CCR
10681MC12_tba, // Transfer B to A
10682MC12_tbeq, // Test counter and branch if = 0
10683MC12_tbl, // 8-bit table lookup and interpolate
10684MC12_tbne, // Test counter and branch if != 0
10685MC12_tfr, // Transfer register to register
10686MC12_tpa, // Transfer CCR to A
10687MC12_trap, // Unimplemented opcode interrupt
10688MC12_tst, // Test memory for zero or minus
10689MC12_tsta, // Test A for zero or minus
10690MC12_tstb, // Test B for zero or minus
10691MC12_tsx, // Transfer SP to X
10692MC12_tsy, // Transfer SP to Y
10693MC12_txs, // Transfer X to SP
10694MC12_tys, // Transfer Y to SP
10695MC12_wai, // Wait for interrupt
10696MC12_wav, // Calculates numerator and denominator for weighted average calculation
10697MC12_wavr, // Resumes execution of interrupted WAV instruction
10698MC12_xgdx, // Exchange D with X
10699MC12_xgdy, // Exchange D with Y
10700// Pseudoinstructions
10701MC12_skip1, // Skip one byte
10702MC12_skip2, // Skip two bytes
10703// hcs12x only instructions, 16-bit unless indicated
10704MC12X_addx, // Add without Carry to X
10705MC12X_addy, // Add without Carry to Y
10706MC12X_aded, // Add with Carry to D(A:B)
10707MC12X_adex, // Add with Carry to X
10708MC12X_adey, // Add with Carry to Y
10709MC12X_andx, // Logical AND X with Memory
10710MC12X_andy, // Logical AND Y with Memory
10711MC12X_aslw, // Arithmetic Shift Left
10712MC12X_aslx, // Arithmetic Shift Left X
10713MC12X_asly, // Arithmetic Shift Left Y
10714MC12X_asrw, // Arithmetic Shift Right
10715MC12X_asrx, // Arithmetic Shift Right X
10716MC12X_asry, // Arithmetic Shift Right Y
10717MC12X_bitx, // Logical AND X with Memory, does not change X or Memory
10718MC12X_bity, // Logical AND Y with Memory, does not change Y or Memory
10719MC12X_btas, // Bit(s) test and Set in Memory, Set CCR flags
10720MC12X_clrw, // Clear Memory Location
10721MC12X_clrx, // Clear X
10722MC12X_clry, // Clear Y
10723MC12X_comw, // One's Complement Memory
10724MC12X_comx, // One's Complement X
10725MC12X_comy, // One's Complement Y
10726MC12X_cped, // Compare D to Memory with Borrow
10727MC12X_cpes, // Compare SP to Memory with Borrow
10728MC12X_cpex, // Compare X to Memory with Borrow
10729MC12X_cpey, // Compare Y to Memory with Borrow
10730MC12X_decw, // Decrement Memory
10731MC12X_decx, // Decrement X
10732MC12X_decy, // Decrement Y
10733MC12X_eorx, // Exclusive OR X with Memory
10734MC12X_eory, // Exclusive OR Y with Memory
10735MC12X_gldaa, // Load A from Global Memory (8-bit)
10736MC12X_gldab, // Load B from Global Memory (8-bit)
10737MC12X_gldd, // Load D(A:B) from Global Memory
10738MC12X_glds, // Load SP from Global Memory
10739MC12X_gldx, // Load X from Global Memory
10740MC12X_gldy, // Load Y from Global Memory
10741MC12X_gstaa, // Store A to Global Memory (8-bit)
10742MC12X_gstab, // Store B to Global Memory (8-bit)
10743MC12X_gstd, // Store D(A:B) to Global Memory
10744MC12X_gsts, // Store SP to Global Memory
10745MC12X_gstx, // Store X to Global Memory
10746MC12X_gsty, // Store Y to Global Memory
10747MC12X_incw, // Increment Memory
10748MC12X_incx, // Increment X
10749MC12X_incy, // Increment Y
10750MC12X_lsrw, // Logical Shift Memory to Right
10751MC12X_lsrx, // Logical Shift X to Right
10752MC12X_lsry, // Logical Shift Y to Right
10753MC12X_negw, // Two's Complement Memory
10754MC12X_negx, // Two's Complement X
10755MC12X_negy, // Two's Complement Y
10756MC12X_orx, // Logical OR X with memory
10757MC12X_ory, // Logical OR Y with memory
10758MC12X_pshcw, // Push CCR onto Stack (16-bit)
10759MC12X_pulcw, // Pull CCR from Stack (16-bit)
10760MC12X_rolw, // Rotate Memory Left through Carry
10761MC12X_rolx, // Rotate X Left through Carry
10762MC12X_roly, // Rotate Y Left through Carry
10763MC12X_rorw, // Rotate Memory Right through Carry
10764MC12X_rorx, // Rotate X Right through Carry
10765MC12X_rory, // Rotate Y Right through Carry
10766MC12X_sbed, // Subtract with Borrow from D
10767MC12X_sbex, // Subtract with Borrow from X
10768MC12X_sbey, // Subtract with Borrow from Y
10769MC12X_subx, // Subtract Memory from X
10770MC12X_suby, // Subtract Memory from Y
10771MC12X_tstw, // Test Memory for Zero or Minus
10772MC12X_tstx, // Test X for Zero or Minus
10773MC12X_tsty, // Test Y for Zero or Minus
10774// hcs12x V2 cpu only instructions
10775MC12X_sys, // System call interrupt
10776// hcs12x XGATE co-processor instructions
10777MC12XGATE_adc, // Add with Carry
10778MC12XGATE_add, // Add without Carry
10779MC12XGATE_addh, // Add Immediate 8 bit Constant (High Byte)
10780MC12XGATE_addl, // Add Immediate 8 bit Constant (Low Byte)
10781MC12XGATE_and, // Logical AND
10782MC12XGATE_andh, // Logical AND Immediate 8 bit Constant (High Byte)
10783MC12XGATE_andl, // Logical AND Immediate 8 bit Constant (Low Byte)
10784MC12XGATE_asr, // Arithmetic Shift Right
10785MC12XGATE_bcc, // Branch if Carry Cleared (Same as BHS)
10786MC12XGATE_bcs, // Branch if Carry Set (Same as BLO)
10787MC12XGATE_beq, // Branch if Equal
10788MC12XGATE_bfext, // Bit Field Extract
10789MC12XGATE_bffo, // Bit Field Find First One
10790MC12XGATE_bfins, // Bit Field Insert
10791MC12XGATE_bfinsi, // Bit Field Insert and Invert
10792MC12XGATE_bfinsx, // Bit Field Insert and XNOR
10793MC12XGATE_bge, // Branch if Greater than or Equal to Zero
10794MC12XGATE_bgt, // Branch if Greater than Zero
10795MC12XGATE_bhi, // Branch if Higher
10796MC12XGATE_bhs, // Branch if Higher or Same (Same as BCC)
10797MC12XGATE_bith, // Bit Test Immediate 8 bit Constant (High Byte)
10798MC12XGATE_bitl, // Bit Test Immediate 8 bit Constant (Low Byte)
10799MC12XGATE_ble, // Branch if Less or Equal to Zero
10800MC12XGATE_blo, // Branch if Carry Set (Same as BCS)
10801MC12XGATE_bls, // Branch if Lower or Same
10802MC12XGATE_blt, // Branch if Lower than Zero
10803MC12XGATE_bmi, // Branch if Minus
10804MC12XGATE_bne, // Branch if Not Equal
10805MC12XGATE_bpl, // Branch if Plus
10806MC12XGATE_bra, // Branch Always
10808MC12XGATE_bvc, // Branch if Overflow Cleared
10809MC12XGATE_bvs, // Branch if Overflow Set
10810MC12XGATE_cmp, // Compare
10811MC12XGATE_cmpl, // Compare Immediate 8 bit Constant (Low Byte)
10812MC12XGATE_com, // One's Complement
10813MC12XGATE_cpc, // Compare with Carry
10814MC12XGATE_cpch, // Compare Immediate 8 bit Constant with Carry(High Byte)
10815MC12XGATE_csem, // Clear Semaphore
10816MC12XGATE_csl, // Logical Shift Left with Carry
10817MC12XGATE_csr, // Logical Shift Right with Carry
10818MC12XGATE_jal, // Jump and Link
10819MC12XGATE_ldb, // Load Byte from Memory (Low Byte)
10820MC12XGATE_ldh, // Load Immediate 8 bit Constant (High Byte)
10821MC12XGATE_ldl, // Load Immediate 8 bit Constant (Low Byte)
10822MC12XGATE_ldw, // Load Word from Memory
10823MC12XGATE_lsl, // Logical Shift Left
10824MC12XGATE_lsr, // Logical Shift Right
10825MC12XGATE_mov, // Move Register Content
10826MC12XGATE_neg, // Two's Complement
10827MC12XGATE_nop, // No Operation
10828MC12XGATE_or, // Logical OR
10829MC12XGATE_orh, // Logical OR Immediate 8 bit Constant (High Byte)
10830MC12XGATE_orl, // Logical OR Immediate 8 bit Constant (Low Byte)
10831MC12XGATE_par, // Calculate Parity
10832MC12XGATE_rol, // Rotate Left
10833MC12XGATE_ror, // Rotate Right
10834MC12XGATE_rts, // Return to Scheduler
10835MC12XGATE_sbc, // Subtract with Carry
10836MC12XGATE_sex, // Sign Extend Byte to Word
10837MC12XGATE_sif, // Set Interrupt Flag
10838MC12XGATE_ssem, // Set Semaphore
10839MC12XGATE_stb, // Store Byte to Memory (Low Byte)
10840MC12XGATE_stw, // Store Word to Memory
10841MC12XGATE_sub, // Subtract without Carry
10842MC12XGATE_subh, // Subtract Immediate 8 bit Constant (High Byte)
10843MC12XGATE_subl, // Subtract Immediate 8 bit Constant (Low Byte)
10844MC12XGATE_tfr, // Transfer from and to Special Registers
10845MC12XGATE_tst, // Test Register
10846MC12XGATE_xnor, // Logical Exclusive NOR
10847MC12XGATE_xnorh, // Logical Exclusive NOR Immediate 8 bit Constant (High Byte)
10848MC12XGATE_xnorl, // Logical Exclusive NOR Immediate 8 bit Constant (Low Byte)
10849// Pseudo instructions that combine two IMM8 into IMM16
10850MC12XGATE_add16, // Add Immediate 16 bit Constant
10851MC12XGATE_and16, // Logical AND Immediate 16 bit Constant
10852MC12XGATE_cmp16, // Compare Immediate 16 bit Constant
10853MC12XGATE_ldw16, // Load Immediate 16 bit Constant
10854MC12XGATE_or16, // Logical OR Immediate 16 bit Constant
10855MC12XGATE_sub16, // Subtract Immediate 16 bit Constant
10856MC12XGATE_xnor16, // Logical Exclusive NOR Immediate 16 bit Constant
10858 };
10859/*
10860 * Interactive disassembler (IDA).
10861 * Copyright (c) 1990-2026 Hex-Rays
10862 * ALL RIGHTS RESERVED.
10863 *
10864 */
10865enum
10866{
10867 MC6816_null = 0, // Unknown Operation
10868 // DATA MOVEMENT INSTRUCTIONS
10869 // --------------------------
10870 // LOAD INSTRUCTIONS
10871 MC6816_ldaa, // Load A
10872 MC6816_ldab, // Load B
10873 MC6816_ldd, // Load D
10874 MC6816_lde, // Load E
10875 MC6816_lded, // Load Concatenated D and E
10876 // MOVE INSTRUCTIONS
10877 MC6816_movb, // Move Byte
10878 MC6816_movw, // Move Word
10879 // STORE INSTRUCTIONS
10880 MC6816_staa, // Store A
10881 MC6816_stab, // Store B
10882 MC6816_std, // Store D
10883 MC6816_ste, // Store E
10884 MC6816_sted, // Store Concatenated D and E
10885 // TRANSFER INSTRUCTIONS
10886 MC6816_tab, // Transfer A to B
10887 MC6816_tba, // Transfer B to A
10888 MC6816_tde, // Transfer D to E
10889 MC6816_ted, // Transfer E to D
10890 // EXCHANGE INSTRUCTIONS
10891 MC6816_xgab, // Exchange A with B
10892 MC6816_xgde, // Exchange D with E
10893 // MATHEMATIC INSTRUCTIONS
10894 // -----------------------
10895 // ADDITION AND SUBSTRACTION INSTRUCTIONS
10896 MC6816_aba, // Add B to A
10897 MC6816_adca, // Add with Carry to A
10898 MC6816_adcb, // Add with Carry to B
10899 MC6816_adcd, // Add with Carry to D
10900 MC6816_adce, // Add with Carry to E
10901 MC6816_adda, // Add to A
10902 MC6816_addb, // Add to B
10903 MC6816_addd, // Add to D
10904 MC6816_adde, // Add to E
10905 MC6816_ade, // Add D to E
10906 MC6816_sba, // Subtract B from A
10907 MC6816_sbca, // Subtract with Carry from A
10908 MC6816_sbcb, // Subtract with Carry from B
10909 MC6816_sbcd, // Subtract with Carry from D
10910 MC6816_sbce, // Subtract with Carry from E
10911 MC6816_sde, // Subtract D from E
10912 MC6816_suba, // Subtract from A
10913 MC6816_subb, // Subtract from B
10914 MC6816_subd, // Subtract from D
10915 MC6816_sube, // Subtract from E
10916 // BINARY CODED DECIMAL INSTRUCTIONS
10917 MC6816_daa, // Decimal Adjust A
10918 MC6816_sxt, // Sign Extend B into A
10919 // COMPARE AND TEST INSTRUCTIONS
10920 MC6816_cba, // Compare A to B
10921 MC6816_cmpa, // Compare A to Memory
10922 MC6816_cmpb, // Compare B to Memory
10923 MC6816_cpd, // Compare D to Memory
10924 MC6816_cpe, // Compare E to Memory
10925 MC6816_tst, // Test for Zero or Minus
10926 MC6816_tsta, // Test A for Zero or Minus
10927 MC6816_tstb, // Test B for Zero or Minus
10928 MC6816_tstd, // Test D for Zero or Minus
10929 MC6816_tste, // Test E for Zero or Minus
10930 MC6816_tstw, // Test for Zero or Minus Word
10931 // MULTIPLICATION AND DIVISION INSTRUCTIONS
10932 MC6816_ediv, // Extended Unsigned Divide
10933 MC6816_edivs, // Extended Signed Divide
10934 MC6816_emul, // Extended Unsigned Multiply
10935 MC6816_emuls, // Extended Signed Multiply
10936 MC6816_fdiv, // Unsigned Fractional Divide
10937 MC6816_fmuls, // Signed Fractional Multiply
10938 MC6816_idiv, // Integer Divide
10939 MC6816_mul, // Multiply
10940 // DECREMENT AND INCREMENT INSTRUCTIONS
10941 MC6816_dec, // Decrement Memory
10942 MC6816_deca, // Decrement A
10943 MC6816_decb, // Decrement B
10944 MC6816_decw, // Decrement Memory Word
10945 MC6816_inc, // Increment Memory
10946 MC6816_inca, // Increment A
10947 MC6816_incb, // Increment B
10948 MC6816_incw, // Increment Memory Word
10949 // CLEAR, COMPLEMENT, AND NEGATE INSTRUCTIONS
10950 MC6816_clr, // Clear Memory
10951 MC6816_clra, // Clear A
10952 MC6816_clrb, // Clear B
10953 MC6816_clrd, // Clear D
10954 MC6816_clre, // Clear E
10955 MC6816_clrw, // Clear Memory Word
10956 MC6816_com, // One's Complement Byte
10957 MC6816_coma, // One's Complement A
10958 MC6816_comb, // One's Complement B
10959 MC6816_comd, // One's Complement D
10960 MC6816_come, // One's Complement E
10961 MC6816_comw, // One's Complement Word
10962 MC6816_neg, // Two's Complement Byte
10963 MC6816_nega, // Two's Complement A
10964 MC6816_negb, // Two's Complement B
10965 MC6816_negd, // Two's Complement D
10966 MC6816_nege, // Two's Complement E
10967 MC6816_negw, // Two's Complement Word
10968 // BOOLEAN LOGIC INSTRUCTIONS
10969 MC6816_anda, // AND A
10970 MC6816_andb, // AND B
10971 MC6816_andd, // AND D
10972 MC6816_ande, // AND E
10973 MC6816_eora, // Exclusive OR A
10974 MC6816_eorb, // Exclusive OR B
10975 MC6816_eord, // Exclusive OR D
10976 MC6816_eore, // Exclusive OR E
10979 MC6816_ord, // OR D
10980 MC6816_ore, // OR E
10981 // BIT TEST AND MANIPULATION INSTRUCTIONS
10982 // --------------------------------------
10983 MC6816_bita, // Bit Test A
10984 MC6816_bitb, // Bit Test B
10985 MC6816_bclr, // Clear Bit(s)
10986 MC6816_bclrw, // Clear Bit(s) Word
10987 MC6816_bset, // Set Bit(s)
10988 MC6816_bsetw, // Set Bit(s) Word
10989 // SHIFT AND ROTATE INSTRUCTIONS
10990 // -----------------------------
10991 MC6816_lsr, // Logic Shift Right
10992 MC6816_lsra, // Logic Shift Right A
10993 MC6816_lsrb, // Logic Shift Right B
10994 MC6816_lsrd, // Logic Shift Right D
10995 MC6816_lsre, // Logic Shift Right E
10996 MC6816_lsrw, // Logic Shift Right Word
10997 MC6816_asl, // Arithmetic Shift Left
10998 MC6816_asla, // Arithmetic Shift Left A
10999 MC6816_aslb, // Arithmetic Shift Left B
11000 MC6816_asld, // Arithmetic Shift Left D
11001 MC6816_asle, // Arithmetic Shift Left E
11002 MC6816_aslw, // Arithmetic Shift Left Word
11003 MC6816_asr, // Arithmetic Shift Right
11004 MC6816_asra, // Arithmetic Shift Right A
11005 MC6816_asrb, // Arithmetic Shift Right B
11006 MC6816_asrd, // Arithmetic Shift Right D
11007 MC6816_asre, // Arithmetic Shift Right E
11008 MC6816_asrw, // Arithmetic Shift Right Word
11009 MC6816_rol, // Rotate Left
11010 MC6816_rola, // Rotate Left A
11011 MC6816_rolb, // Rotate Left B
11012 MC6816_rold, // Rotate Left D
11013 MC6816_role, // Rotate Left E
11014 MC6816_rolw, // Rotate Left Word
11015 MC6816_ror, // Rotate Right
11016 MC6816_rora, // Rotate Right A
11017 MC6816_rorb, // Rotate Right B
11018 MC6816_rord, // Rotate Right D
11019 MC6816_rore, // Rotate Right E
11020 MC6816_rorw, // Rotate Right Word
11021 // PROGRAM CONTROL INSTRUCTIONS
11022 // ----------------------------
11023 // SHORT BRANCH INSTRUCTIONS
11024 MC6816_bra, // Branch Always
11025 MC6816_brn, // Branch Never
11026 MC6816_bcc, // Branch If Carry Clear
11027 MC6816_bcs, // Branch If Carry Set
11028 MC6816_beq, // Branch If Equal to Zero
11029 MC6816_bmi, // Branch If Minus
11030 MC6816_bne, // Branch If Not Equal to Zero
11031 MC6816_bpl, // Branch If Plus
11032 MC6816_bvc, // Branch If Overflow Clear
11033 MC6816_bvs, // Branch If Overflow Set
11034 MC6816_bhi, // Branch If Higher
11035 MC6816_bls, // Branch If Lower or Same
11036 MC6816_bge, // Branch If Greater than or Equal to Zero
11037 MC6816_bgt, // Branch If Greater than Zero
11038 MC6816_ble, // Branch If Less than or Equal to Zero
11039 MC6816_blt, // Branch If Less than Zero
11040 // LONG BRANCH INSTRUCTIONS
11041 MC6816_lbra, // Long Branch Always
11042 MC6816_lbrn, // Long Branch Never
11043 MC6816_lbcc, // Long Branch If Carry Clear
11044 MC6816_lbcs, // Long Branch If Carry Set
11045 MC6816_lbeq, // Long Branch If Equal to Zero
11046 MC6816_lbev, // Long Branch If EV Set
11047 MC6816_lbmi, // Long Branch If Minus
11048 MC6816_lbmv, // Long Branch If MV Set
11049 MC6816_lbne, // Long Branch If Not Equal to Zero
11050 MC6816_lbpl, // Long Branch If Plus
11051 MC6816_lbvc, // Long Branch If Overflow Clear
11052 MC6816_lbvs, // Long Branch If Overflow Set
11053 MC6816_lbhi, // Long Branch If Higher
11054 MC6816_lbls, // Long Branch If Lower or Same
11055 MC6816_lbge, // Long Branch If Greater than or Equal to Zero
11056 MC6816_lbgt, // Long Branch If Greater than Zero
11057 MC6816_lble, // Long Branch If Less than or Equal to Zero
11058 MC6816_lblt, // Long Branch If Less than Zero
11059 // BIT CONDITION BRANCH INSTRUCTIONS
11060 MC6816_brclr, // Branch if Bits Clear
11061 MC6816_brset, // Branch if Bits Set
11062 // JUMP INSTRUCTION
11063 MC6816_jmp, // Jump
11064 // SUBROUTINE INSTRUCTIONS
11065 MC6816_bsr, // Branch to Subroutine
11066 MC6816_jsr, // Jump to Subroutine
11067 MC6816_lbsr, // Long Branch to Subroutine
11068 MC6816_rts, // Return From Subroutine
11069 // INTERRUPT INSTRUCTIONS
11070 MC6816_rti, // Return from Interrupt
11071 MC6816_swi, // Software Interrupt
11072 // INDEXING AND ADDRESS EXTENSION INSTRUCTIONS
11073 // -------------------------------------------
11074 // INDEXING INSTRUCTIONS
11075 MC6816_abx, // Add B to IX
11076 MC6816_aby, // Add B to IY
11077 MC6816_abz, // Add B to IZ
11078 MC6816_adx, // Add D to IX
11079 MC6816_ady, // Add D to IY
11080 MC6816_adz, // Add D to IZ
11081 MC6816_aex, // Add E to IX
11082 MC6816_aey, // Add E to IY
11083 MC6816_aez, // Add E to IZ
11084 MC6816_aix, // Add Immediate Value to IX
11085 MC6816_aiy, // Add Immediate Value to IY
11086 MC6816_aiz, // Add Immediate Value to IZ
11087 MC6816_cpx, // Compare IX to Memory
11088 MC6816_cpy, // Compare IY to Memory
11089 MC6816_cpz, // Compare IZ to Memory
11090 MC6816_ldx, // Load IX
11091 MC6816_ldy, // Load IY
11092 MC6816_ldz, // Load IZ
11093 MC6816_stx, // Store IX
11094 MC6816_sty, // Store IY
11095 MC6816_stz, // Store IZ
11096 MC6816_tsx, // Transfer SP to IX
11097 MC6816_tsy, // Transfer SP to IY
11098 MC6816_tsz, // Transfer SP to IZ
11099 MC6816_txs, // Transfer IX to SP
11100 MC6816_txy, // Transfer IX to IY
11101 MC6816_txz, // Transfer IX to IZ
11102 MC6816_tys, // Transfer IY to SP
11103 MC6816_tyx, // Transfer IY to IX
11104 MC6816_tyz, // Transfer IY to IZ
11105 MC6816_tzs, // Transfer IZ to SP
11106 MC6816_tzx, // Transfer IZ to IX
11107 MC6816_tzy, // Transfer IZ to IY
11108 MC6816_xgdx, // Exchange D with IX
11109 MC6816_xgdy, // Exchange D with IY
11110 MC6816_xgdz, // Exchange D with IZ
11111 MC6816_xgex, // Exchange E with IX
11112 MC6816_xgey, // Exchange E with IY
11113 MC6816_xgez, // Exchange E with IZ
11114 // ADDRESS EXTENSION INSTRUCTIONS
11115 MC6816_tbek, // Transfer B to EK
11116 MC6816_tbsk, // Transfer B to SK
11117 MC6816_tbxk, // Transfer B to XK
11118 MC6816_tbyk, // Transfer B to YK
11119 MC6816_tbzk, // Transfer B to ZK
11120 MC6816_tekb, // Transfer EK to B
11121 MC6816_tskb, // Transfer SK to B
11122 MC6816_txkb, // Transfer XK to B
11123 MC6816_tykb, // Transfer YK to B
11124 MC6816_tzkb, // Transfer ZK to B
11125 // STACKING INSTRUCTIONS
11126 // ---------------------
11127 MC6816_ais, // Add Immediate Data to SP
11128 MC6816_cps, // Compare SP to Memory
11129 MC6816_lds, // Load SP
11130 MC6816_sts, // Store SP
11131 MC6816_psha, // Push A
11132 MC6816_pshb, // Push B
11133 MC6816_pshm, // Push Multiple Registers
11134 MC6816_pula, // Pull A
11135 MC6816_pulb, // Pull B
11136 MC6816_pulm, // Pull Multiple Registers
11137 // CONDITION CODE INSTRUCTIONS
11138 // ---------------------------
11139 MC6816_andp, // AND CCR
11140 MC6816_orp, // OR CCR
11141 MC6816_tap, // Transfer A to CCR
11142 MC6816_tdp, // Transfer D to CCR
11143 MC6816_tpa, // Transfer CCR MSB to A
11144 MC6816_tpd, // Transfer CCR to D
11145 // DIGITAL SIGNAL PROCESSING INSTRUCTIONS
11146 // --------------------------------------
11147 MC6816_ace, // Add E to AM[31:15]
11148 MC6816_aced, // Add concatenated E and D to AM
11149 MC6816_aslm, // Arithmetic Shift Left AM
11150 MC6816_asrm, // Arithmetic Shift Right AM
11151 MC6816_clrm, // Clear AM
11152 MC6816_ldhi, // Initialize HR and IR
11153 MC6816_mac, // Multiply and Accumulate
11154 MC6816_pshmac, // Push MAC State
11155 MC6816_pulmac, // Pull MAC State
11156 MC6816_rmac, // Repeating Multiply and Accumulate
11157 MC6816_tdmsk, // Transfer D to XMSK:YMSK
11158 MC6816_tedm, // Transfer E and T to AM[31:0]
11159 MC6816_tem, // Transfer E to AM[31:16]
11160 MC6816_tmer, // Transfer AM to E Rounded
11161 MC6816_tmet, // Transfer AM to E Truncated
11162 MC6816_tmxed, // Transfer AM t IX:E:D
11163 // STOP AND WAIT INSTRUCTIONS
11164 // --------------------------
11165 MC6816_lpstop, // Low Power Stop
11166 MC6816_wai, // Wait for Interrupt
11167 // BACKGROUND MODE AND NULL OPERATIONS
11168 // -----------------------------------
11169 MC6816_bgnd, // Enter Background Debugging Mode
11170 MC6816_nop, // Null operation
11172};
11173/*
11174 * Interactive disassembler (IDA).
11175 * Copyright (c) 1990-2026 Hex-Rays
11176 * ALL RIGHTS RESERVED.
11177 *
11178 */
11179enum
11180{
11181I960_null = 0, // Unknown Operation
11182I960_addc, // Add ordinal with carry
11183I960_addi, // Add integer
11184I960_addo, // Add ordinal
11185I960_alterbit, // Alter bit
11186I960_and, // Src2 AND src1
11187I960_andnot, // Src2 AND (NOT src1)
11188I960_atadd, // Atomic add
11189I960_atmod, // Atomic modify
11190I960_b, // Branch
11191I960_bal, // Branch and Link
11192I960_balx, // Branch and Link Extended
11193I960_bbc, // Check bit and branch if clear
11194I960_bbs, // Check bit and branch if set
11195I960_bno, // Branch if unordered/false
11196I960_bg, // Branch if greater
11197I960_be, // Branch if equal/true
11198I960_bge, // Branch if greater or equal
11199I960_bl, // Branch if less
11200I960_bne, // Branch if not equal
11201I960_ble, // Branch if less or equal
11202I960_bo, // Branch if ordered
11203I960_bx, // Branch Extended
11205I960_calls, // Call system
11206I960_callx, // Call extended
11207I960_chkbit, // Check bit
11208I960_clrbit, // Clear bit
11209I960_cmpdeci, // Compare and decrement integer
11210I960_cmpdeco, // Compare and decrement ordinal
11211I960_cmpi, // Compare integer
11212I960_cmpibno, // Compare integer and branch if unordered
11213I960_cmpibg, // Compare integer and branch if greater
11214I960_cmpibe, // Compare integer and branch if equal
11215I960_cmpibge, // Compare integer and branch if greater or equal
11216I960_cmpibl, // Compare integer and branch if less
11217I960_cmpibne, // Compare integer and branch if not equal
11218I960_cmpible, // Compare integer and branch if less or equal
11219I960_cmpibo, // Compare integer and branch if ordered
11220I960_cmpinci, // Compare and increment integer
11221I960_cmpinco, // Compare and increment ordinal
11222I960_cmpo, // Compare ordinal
11223I960_cmpobg, // Compare ordinal and branch if greater
11224I960_cmpobe, // Compare ordinal and branch if equal
11225I960_cmpobge, // Compare ordinal and branch if greater or equal
11226I960_cmpobl, // Compare ordinal and branch if less
11227I960_cmpobne, // Compare ordinal and branch if not equal
11228I960_cmpoble, // Compare ordinal and branch if less or equal
11229I960_concmpi, // Conditional compare integer
11230I960_concmpo, // Conditional compare ordinal
11231I960_divi, // Divide integer
11232I960_divo, // Divide ordinal
11233I960_ediv, // Extended divide
11234I960_emul, // Extended multiply
11235I960_eshro, // Extended shift right ordinal
11236I960_extract, // Extract
11237I960_faultno, // Fault if unordered
11238I960_faultg, // Fault if greater
11239I960_faulte, // Fault if equal
11240I960_faultge, // Fault if greater or equal
11241I960_faultl, // Fault if less
11242I960_faultne, // Fault if not equal
11243I960_faultle, // Fault if less or equal
11244I960_faulto, // Fault if ordered
11245I960_flushreg, // Flush cached local register sets to memory
11246I960_fmark, // Force mark
11247I960_ld, // Load word
11248I960_lda, // Load address
11249I960_ldib, // Load integer byte
11250I960_ldis, // Load integer short
11251I960_ldl, // Load long
11252I960_ldob, // Load ordinal byte
11253I960_ldos, // Load ordinal short
11254I960_ldq, // Load quad
11255I960_ldt, // Load triple
11257I960_modac, // Modify the AC register
11258I960_modi, // Modulo integer
11259I960_modify, // Modify
11260I960_modpc, // Modify the process controls register
11261I960_modtc, // Modify trace controls
11262I960_mov, // Move word
11263I960_movl, // Move long word
11264I960_movq, // Move quad word
11265I960_movt, // Move triple word
11266I960_muli, // Multiply integer
11267I960_mulo, // Multiply ordinal
11268I960_nand, // NOT (src2 AND src1)
11269I960_nor, // NOT (src2 OR src1)
11270I960_not, // NOT src1
11271I960_notand, // (NOT src2) AND src1
11272I960_notbit, // Not bit
11273I960_notor, // (NOT src2) or src1
11274I960_or, // Src2 OR src1
11275I960_ornot, // Src2 or (NOT src1)
11276I960_remi, // Remainder integer
11277I960_remo, // Remainder ordinal
11278I960_ret, // Return
11279I960_rotate, // Rotate left
11280I960_scanbit, // Scan for bit
11281I960_scanbyte, // Scan byte equal
11282I960_setbit, // Set bit
11283I960_shli, // Shift left integer
11284I960_shlo, // Shift left ordinal
11285I960_shrdi, // Shift right dividing integer
11286I960_shri, // Shift right integer
11287I960_shro, // Shift right ordinal
11288I960_spanbit, // Span over bit
11289I960_st, // Store word
11290I960_stib, // Store integer byte
11291I960_stis, // Store integer short
11292I960_stl, // Store long
11293I960_stob, // Store ordinal byte
11294I960_stos, // Store ordinal short
11295I960_stq, // Store quad
11296I960_stt, // Store triple
11297I960_subc, // Subtract ordinal with carry
11298I960_subi, // Subtract integer
11299I960_subo, // Subtract ordinal
11300I960_syncf, // Synchronize faults
11301I960_testno, // Test for unordered
11302I960_testg, // Test for greater
11303I960_teste, // Test for equal
11304I960_testge, // Test for greater or equal
11305I960_testl, // Test for less
11306I960_testne, // Test for not equal
11307I960_testle, // Test for less or equal
11308I960_testo, // Test for ordered
11309I960_xnor, // Src2 XNOR src1
11310I960_xor, // Src2 XOR src1
11311// Cx instructions
11312I960_sdma, // Set up a DMA controller channel
11313I960_sysctl, // Perform system control function
11314I960_udma, // Copy current DMA pointers to internal data RAM
11315// Unknown instructions
11392// Floating point instructions
11443 };
11444/*
11445 * Interactive disassembler (IDA).
11446 * Copyright (c) 1990-2026 Hex-Rays
11447 * ALL RIGHTS RESERVED.
11448 *
11449 */
11450enum
11451{
11452F2MC_null = 0, // Unknown Operation
11453// TRANSFER INSTRUCTIONS
11454F2MC_mov, // Move byte data from source to destination
11455F2MC_movn, // Move immediate nibble data to A
11456F2MC_movx, // Move byte data with sign extension from source to A
11457F2MC_xch, // Exchange byte data of source to destination
11458F2MC_movw, // Move word data from source to destination
11459F2MC_xchw, // Exchange word data of source to destination
11460F2MC_movl, // Move long word data from source to destination
11461// NUMERIC DATA OPERATIONS INSTRUCTIONS
11462F2MC_add, // Add byte data of destination and source to destination
11463F2MC_addc1, // Add byte data of AL and AH with Carry to AL
11464F2MC_addc2, // Add byte data of A and effective address with Carry to A
11465F2MC_adddc, // Add decimal data of AL and AH with Carry to AL
11466F2MC_sub, // Subtract byte data of source from festination to destination
11467F2MC_subc1, // Subtract byte data of AL from AH with Carry to AL
11468F2MC_subc2, // Subtract byte data of effective address from A with Carry to A
11469F2MC_subdc, // Subtract decimal data of AL from AH with Carry to AL
11470F2MC_addw1, // Add word data of AH and AL to AL
11471F2MC_addw2, // Add word data of destination and source to destination
11472F2MC_addcw, // Add word data of A and effective address from A with Carry to A
11473F2MC_subw1, // Subtract word data of AL from AH to AL
11474F2MC_subw2, // Subtract word data of source from festination to destination
11475F2MC_subcw, // Subtract word data of A and effective address from A with carry to A
11476F2MC_addl, // Add long word data of destination and source to destination
11477F2MC_subl, // Subtract long word data of source from festination to destination
11478F2MC_inc, // Increment byte data
11479F2MC_dec, // Decrement byte data
11480F2MC_incw, // Increment word data
11481F2MC_decw, // Decrement word data
11482F2MC_incl, // Increment long word data
11483F2MC_decl, // Decrement long word data
11484F2MC_cmp1, // Compare byte data of AH and AL
11485F2MC_cmp2, // Compare byte data of destination and source
11486F2MC_cmpw1, // Compare word data of AH and AL
11487F2MC_cmpw2, // Compare word data of destination and source
11488F2MC_cmpl, // Compare long word data of destination and source
11489F2MC_divu1, // Divide unsigned AH by AL
11490F2MC_divu2, // Divide unsigned word data by unsigned byte data
11491F2MC_divuw, // Divide unsigned long word data by unsigned word data
11492F2MC_mulu1, // Multiply unsigned byte AH by AL
11493F2MC_mulu2, // Multiply unsigned byte data
11494F2MC_muluw1, // Multiply unsigned word AH by AL
11495F2MC_muluw2, // Multiply unsigned word data
11496F2MC_div1, // Divide AH by AL
11497F2MC_div2, // Divide word data by byte data
11498F2MC_divw, // Divide long word data by word data
11499F2MC_mul1, // Multiply byte AH by AL
11500F2MC_mul2, // Multiply byte data
11501F2MC_mulw1, // Multiply word AH by AL
11502F2MC_mulw2, // Multiply word data
11503// LOGICAL DATA OPERATION INSTRUCTIONS
11504F2MC_and, // And byte data of destination and source to destination
11505F2MC_or, // Or byte data of destination and source to destination
11506F2MC_xor, // Exclusive or byte data of destination and source to destination
11507F2MC_not, // Not byte data of destination
11508F2MC_andw1, // And word data of AH and AL to AL
11509F2MC_andw2, // And word data of destination and source to destination
11510F2MC_orw1, // Or word data of AH and AL to AL
11511F2MC_orw2, // Or word data of destination and source to destination
11512F2MC_xorw1, // Exclusive or word data of AH and AL to AL
11513F2MC_xorw2, // Exclusive or word data of destination and source to destination
11514F2MC_notw, // Not word data of destination
11515F2MC_andl, // And long word data of destination and source to destination
11516F2MC_orl, // Or long word data of destination and source to destination
11517F2MC_xorl, // Exclusive or long word data of destination and source to destination
11518F2MC_neg, // Negate byte data of destination
11519F2MC_negw, // Negate word data of destination
11520F2MC_nrml, // Normalize long word
11521// SHIFT INSTRUCTIONS
11522F2MC_rorc, // Rotate byte data of A with Carry to right
11523F2MC_rolc, // Rotate byte data of A with Carry to left
11524F2MC_asr, // Arithmetic shift byte data of A to right
11525F2MC_lsr, // Logical shift byte data of A to right
11526F2MC_lsl, // Logical shift byte data of A to left
11527F2MC_asrw1, // Arithmetic shift word data of A to right
11528F2MC_asrw2, // Arithmetic shift word data of A to right
11529F2MC_lsrw1, // Logical shift word data of A to right
11530F2MC_lsrw2, // Logical shift word data of A to right
11531F2MC_lslw1, // Logical shift word data of A to left
11532F2MC_lslw2, // Logical shift word data of A to left
11533F2MC_asrl, // Arithmetic shift long word data of A to right
11534F2MC_lsrl, // Logical shift long word data of A to right
11535F2MC_lsll, // Logical shift long word data of A to left
11536// BRANCH INSTRUCTIONS
11537F2MC_bz, // Branch if Zero
11538F2MC_bnz, // Branch if Not Zero
11539F2MC_bc, // Branch if Carry
11540F2MC_bnc, // Branch if Not Carry
11541F2MC_bn, // Branch if Negative
11542F2MC_bp, // Branch if Not Negative
11543F2MC_bv, // Branch if Overflow
11544F2MC_bnv, // Branch if Not Overflow
11545F2MC_bt, // Branch if Sticky
11546F2MC_bnt, // Branch if Not Sticky
11547F2MC_blt, // Branch if Overflow or Negative
11548F2MC_bge, // Branch if Not (Overflow or Negative)
11549F2MC_ble, // Branch if (Overflow xor Negative) or Zero
11550F2MC_bgt, // Branch if Not ((Overflow xor Negative) or Zero)
11551F2MC_bls, // Branch if Carry or Zero
11552F2MC_bhi, // Branch if Not (Carry or Zero)
11553F2MC_bra, // Branch unconditionally
11554F2MC_jmp, // Jump destination address
11555F2MC_jmpp, // Jump destination physical address
11556F2MC_call, // Call subroutine
11557F2MC_callv, // Call vectored subroutine
11558F2MC_callp, // Call physical address
11559F2MC_cbne, // Compare byte data and branch if not Equal
11560F2MC_cwbne, // Compare word data and branch if not Equal
11561F2MC_dbnz, // Decrement byte data and branch if not Zero
11562F2MC_dwbnz, // Decrement word data and branch if not Zero
11563F2MC_int, // Software interrupt
11564F2MC_intp, // Software interrupt
11565F2MC_int9, // Software interrupt
11566F2MC_reti, // Return from interrupt
11567F2MC_link, // Link and create new stack frame
11568F2MC_unlink, // Unlink and create new stack frame
11569F2MC_ret, // Return from subroutine
11570F2MC_retp, // Return from physical address
11571// OTHER INSTRUCTIONS
11572F2MC_pushw, // Push to stack memory
11573F2MC_popw, // Pop from stack memory
11574F2MC_jctx, // Jump context
11575// F2MC_and,
11576// F2MC_or,
11577// F2MC_mov,
11578F2MC_movea, // Move effective address to destination
11579F2MC_addsp, // Add word data of SP and immediate data to SP
11580// F2MC_mov,
11581F2MC_nop, // No operation
11582F2MC_adb, // ADB register
11583F2MC_dtb, // DTB register
11584F2MC_pcb, // PCB register
11585F2MC_spb, // SPB register
11586F2MC_ncc, // Flag change inhibit
11587F2MC_cmr, // Common register bank
11588F2MC_movb, // Move bit data
11589F2MC_setb, // Set bit
11590F2MC_clrb, // Clear bit
11591F2MC_bbc, // Branch if bit condition satisfied
11592F2MC_bbs, // Branch if bit condition satisfied
11593F2MC_sbbs, // Set bit and branch if bit set
11594F2MC_wbts, // Wait until bit condition satisfied
11595F2MC_wbtc, // Wait until bit condition satisfied
11596F2MC_swap, // Swap byte data of A
11597F2MC_swapw, // Swap word data of A
11598F2MC_ext, // Sign extend from byte data to word data
11599F2MC_extw, // Sign extend from word data to long word data
11600F2MC_zext, // Zero extendfrom byte data to word data
11601F2MC_zextw, // Zero extendfrom word data to long word data
11602F2MC_movsi, // Move string byte with addresses incremented
11603F2MC_movsd, // Move string byte with addresses decremented
11604F2MC_sceqi, // Scan string byte until Equal with address incremented
11605F2MC_sceqd, // Scan string byte until Equal with address decremented
11606F2MC_filsi, // Fill string byte
11607F2MC_movswi, // Move string word with address incremented
11608F2MC_movswd, // Move string word with address decremented
11609F2MC_scweqi, // Scan string word until Equal with address incremented
11610F2MC_scweqd, // Scan string word until Equal with address decremented
11611F2MC_filswi, // Fill string word
11612// MACROS
11613F2MC_bz16, // Branch if Zero
11614F2MC_bnz16, // Branch if Not Zero
11615F2MC_bc16, // Branch if Carry
11616F2MC_bnc16, // Branch if Not Carry
11617F2MC_bn16, // Branch if Negative
11618F2MC_bp16, // Branch if Not Negative
11619F2MC_bv16, // Branch if Overflow
11620F2MC_bnv16, // Branch if Not Overflow
11621F2MC_bt16, // Branch if Sticky
11622F2MC_bnt16, // Branch if Not Sticky
11623F2MC_blt16, // Branch if Overflow or Negative
11624F2MC_bge16, // Branch if Not (Overflow or Negative)
11625F2MC_ble16, // Branch if (Overflow xor Negative) or Zero
11626F2MC_bgt16, // Branch if Not ((Overflow xor Negative) or Zero)
11627F2MC_bls16, // Branch if Carry or Zero
11628F2MC_bhi16, // Branch if Not (Carry or Zero)
11629F2MC_cbne16, // Compare byte data and branch if not Equal
11630F2MC_cwbne16, // Compare word data and branch if not Equal
11631F2MC_dbnz16, // Decrement byte data and branch if not Zero
11632F2MC_dwbnz16, // Decrement word data and branch if not Zero
11633F2MC_bbc16, // Branch if bit condition satisfied
11634F2MC_bbs16, // Branch if bit condition satisfied
11635F2MC_sbbs16, // Set bit and branch if bit set
11637};
11638/*
11639 * Interactive disassembler (IDA).
11640 * Copyright (c) 1990-2026 Hex-Rays
11641 * ALL RIGHTS RESERVED.
11642 *
11643 */
11644enum
11645{
11646TMS320C3X_null = 0, // Unknown Operation
11647TMS320C3X_ABSF, // Absolute value of a floating-point number
11648TMS320C3X_ABSI, // Absolute value of an integer
11649TMS320C3X_ADDC, // Add integers with carry
11650TMS320C3X_ADDF, // Add Floating-Point Values
11651TMS320C3X_ADDI, // Add Integer
11652TMS320C3X_AND, // Bitwise-Logical AND
11653TMS320C3X_ANDN, // Bitwise-Logical AND With Complement
11654TMS320C3X_ASH, // Arithmetic Shift
11655TMS320C3X_CMPF, // Compare Floating-Point Value
11656TMS320C3X_CMPI, // Compare Integer
11657TMS320C3X_FIX, // Floating-Point-to-Integer Conversion
11658TMS320C3X_FLOAT, // Integer-to-Floating-Point Conversion
11659TMS320C3X_IDLE, // Idle Until Interrupt
11660TMS320C3X_IDLE2, // Low-Power Idle
11661TMS320C3X_LDE, // Load Floating-Point Exponent
11662TMS320C3X_LDF, // Load Floating-Point Value
11663TMS320C3X_LDFI, // Load Floating-Point Value, Interlocked
11664TMS320C3X_LDI, // Load Integer
11665TMS320C3X_LDII, // Load Integer, Interlocked
11666TMS320C3X_LDM, // Load Floating-Point Mantissa
11667TMS320C3X_LSH, // Logical Shift
11668TMS320C3X_MPYF, // Multiply Floating-Point Value
11669TMS320C3X_MPYI, // Multiply Integer
11670TMS320C3X_NEGB, // Negative Integer With Borrow
11671TMS320C3X_NEGF, // Negate Floating-Point Value
11672TMS320C3X_NEGI, // Negate Integer
11673TMS320C3X_NOP, // No Operation
11674TMS320C3X_NORM, // Normalize
11675TMS320C3X_NOT, // Bitwise-Logical Complement
11676TMS320C3X_POP, // Pop Integer
11677TMS320C3X_POPF, // Pop Floating-Point Value
11678TMS320C3X_PUSH, // PUSH Integer
11679TMS320C3X_PUSHF, // PUSH Floating-Point Value
11680TMS320C3X_OR, // Bitwise-Logical OR
11681TMS320C3X_LOPOWER, // Divide Clock by 16
11682TMS320C3X_MAXSPEED, // Restore Clock to Regular Speed
11683TMS320C3X_RND, // Round Floating-Point Value
11684TMS320C3X_ROL, // Rotate Left
11685TMS320C3X_ROLC, // Rotate Left Through Carry
11686TMS320C3X_ROR, // Rotate Right
11687TMS320C3X_RORC, // Rotate Right Through Carry
11688TMS320C3X_RPTS, // Repeat Single Instruction
11689TMS320C3X_STF, // Store Floating-Point Value
11690TMS320C3X_STFI, // Store Floating-Point Value, Interlocked
11691TMS320C3X_STI, // Store Integer
11692TMS320C3X_STII, // Store Integer, Interlocked
11693TMS320C3X_SIGI, // Signal, Interlocked
11694TMS320C3X_SUBB, // Subtract Integer With Borrow
11695TMS320C3X_SUBC, // Subtract Integer Conditionally
11696TMS320C3X_SUBF, // Subtract Floating-Point Value
11697TMS320C3X_SUBI, // Subtract Integer
11698TMS320C3X_SUBRB, // Subtract Reverse Integer With Borrow
11699TMS320C3X_SUBRF, // Subtract Reverse Floating-Point Value
11700TMS320C3X_SUBRI, // Subtract Reverse Integer
11701TMS320C3X_TSTB, // Test Bit Fields
11702TMS320C3X_XOR, // Bitwise-Exclusive OR
11703TMS320C3X_IACK, // Interrupt acknowledge
11704TMS320C3X_ADDC3, // Add integers with carry (3-operand)
11705TMS320C3X_ADDF3, // Add floating-point values (3-operand)
11706TMS320C3X_ADDI3, // Add integers (3 operand)
11707TMS320C3X_AND3, // Bitwise-logical AND (3-operand)
11708TMS320C3X_ANDN3, // Bitwise-logical ANDN (3-operand)
11709TMS320C3X_ASH3, // Arithmetic shift (3-operand)
11710TMS320C3X_CMPF3, // Compare floating-point values (3-operand)
11711TMS320C3X_CMPI3, // Compare integers (3-operand)
11712TMS320C3X_LSH3, // Logical shift (3-operand)
11713TMS320C3X_MPYF3, // Multiply floating-point value (3-operand)
11714TMS320C3X_MPYI3, // Multiply integers (3-operand)
11715TMS320C3X_OR3, // Bitwise-logical OR (3-operand)
11716TMS320C3X_SUBB3, // Subtract integers with borrow (3-operand)
11717TMS320C3X_SUBF3, // Subtract floating-point values (3-operand)
11718TMS320C3X_SUBI3, // Subtract integers (3-operand)
11719TMS320C3X_TSTB3, // Test Bit Fields, 3-Operand
11720TMS320C3X_XOR3, // Bitwise-Exclusive OR, 3-Operand
11721TMS320C3X_LDFcond, // Load floating-point value conditionally
11722TMS320C3X_LDIcond, // Load integer conditionally
11723TMS320C3X_BR, // Branch unconditionally (standard)
11724TMS320C3X_BRD, // Branch unconditionally (delayed)
11725TMS320C3X_CALL, // Call subroutine
11726TMS320C3X_RPTB, // Repeat block of instructions
11727TMS320C3X_SWI, // Software Interrupt
11728TMS320C3X_Bcond, // Branch conditionally
11729TMS320C3X_DBcond, // Decrement and branch conditionally
11730TMS320C3X_CALLcond, // Call subroutine conditionally
11731TMS320C3X_TRAPcond, // Trap Conditionally
11732TMS320C3X_RETIcond, // Return from interrupt conditionally
11733TMS320C3X_RETScond, // Return from subroutine conditionally
11734TMS320C3X_RETIU, // Return from interrupt unconditionally
11735TMS320C3X_RETSU, // Return from subroutine unconditionally
11736TMS320C3X_NONE, // Pseudo insn (more accurate definition need)
11737TMS320C3X_MV_IDX, // Pseudo insn (move to next index need)
11739};
11740/*
11741 * Interactive disassembler (IDA).
11742 * Copyright (c) 1990-2026 Hex-Rays
11743 * ALL RIGHTS RESERVED.
11744 *
11745 */
11746enum
11747{
11748TMS320C54_null = 0, // Unknown Operation
11749// ARITHMETIC OPERATIONS
11750// ADD INSTRUCTIONS
11751TMS320C54_add1, // Add to Accumulator
11752TMS320C54_add2, // Add to Accumulator
11753TMS320C54_add3, // Add to Accumulator
11754TMS320C54_addc, // Add to Accumulator With Carry
11755TMS320C54_addm, // Add Long-Immediate Value to Memory
11756TMS320C54_adds, // Add to Accumulator With Sign-Extension Suppressed
11757// SUBTRACT INSTRUCTIONS
11758TMS320C54_sub1, // Sub From Accumulator
11759TMS320C54_sub2, // Sub From Accumulator
11760TMS320C54_sub3, // Sub From Accumulator
11761TMS320C54_subb, // Sub From Accumulator With Borrow
11762TMS320C54_subc, // Subtract Conditionally
11763TMS320C54_subs, // Subtract From Accumulator With Sign Extension Suppressed
11764// MULTIPLY INSTRUCTIONS
11765TMS320C54_mpy2, // Multiply Without Rounding
11766TMS320C54_mpy3, // Multiply Without Rounding
11767TMS320C54_mpyr2, // Multiply With Rounding
11768TMS320C54_mpya, // Multiply by Accumulator A
11769TMS320C54_mpyu, // Multiply Unsigned
11771// MULTIPLY-ACCUMULATE AND MULTIPLY-SUBTRACT INSTRUCTIONS
11772TMS320C54_mac2, // Multiply Accumulate Without Rounding
11773TMS320C54_mac3, // Multiply Accumulate Without Rounding
11774TMS320C54_macr2, // Multiply Accumulate With Rounding
11775TMS320C54_macr3, // Multiply Accumulate With Rounding
11776TMS320C54_maca1, // Multiply by Accumulator A and Accumulate Without Rounding
11777TMS320C54_maca2, // Multiply by Accumulator A and Accumulate Without Rounding
11778TMS320C54_maca3, // Multiply by Accumulator A and Accumulate Without Rounding
11779TMS320C54_macar1, // Multiply by Accumulator A and Accumulate With Rounding
11780TMS320C54_macar2, // Multiply by Accumulator A and Accumulate With Rounding
11781TMS320C54_macar3, // Multiply by Accumulator A and Accumulate With Rounding
11782TMS320C54_macd, // Multiply by Program Memory and Accumulate With Delay
11783TMS320C54_macp, // Multiply by Program Memory and Accumulate
11784TMS320C54_macsu, // Multiply Signed by Unsigned and Accumulate
11785TMS320C54_mas2, // Multiply and Subtract Without Rounding
11786TMS320C54_mas3, // Multiply and Subtract Without Rounding
11787TMS320C54_masr2, // Multiply and Subtract With Rounding
11788TMS320C54_masr3, // Multiply and Subtract With Rounding
11789// TMS320C54_mas,
11790TMS320C54_masa1, // Multiply by Accumulator A and Subtract Without Rounding
11791TMS320C54_masa2, // Multiply by Accumulator A and Subtract Without Rounding
11792TMS320C54_masa3, // Multiply by Accumulator A and Subtract Without Rounding
11793TMS320C54_masar1, // Multiply by Accumulator A and Subtract With Rounding
11794TMS320C54_masar2, // Multiply by Accumulator A and Subtract With Rounding
11795TMS320C54_masar3, // Multiply by Accumulator A and Subtract With Rounding
11796TMS320C54_squra, // Square and Accumulate
11797TMS320C54_squrs, // Square and Subtract
11798// DOUBLE INSTRUCTIONS
11799TMS320C54_dadd2, // Double-Precision/Dual 16-Bit Add to Accumulator
11800TMS320C54_dadd3, // Double-Precision/Dual 16-Bit Add to Accumulator
11801TMS320C54_dadst, // Double-Precision Load With T Add/Dual 16-Bit Load With T Add/Subtract
11802TMS320C54_drsub, // Double-Precision/Dual 16-Bit Subtract From Long Word
11803TMS320C54_dsadt, // Long-Word Load With T Add/Dual 16-Bit Load With T Subtract/Add
11804TMS320C54_dsub, // Double-Precision/Dual 16-Bit Subtract From Accumulator
11805TMS320C54_dsubt, // Long-Word Load With T Subtract/Dual 16-Bit Load With T Subtract
11806// APPLICATION-SPECIFIC INSTRUCTIONS
11807TMS320C54_abdst, // Absolute distance
11808TMS320C54_abs1, // Absolute Value of Accumulator
11809TMS320C54_abs2, // Absolute Value of Accumulator
11810TMS320C54_cmpl1, // Complement Accumulator
11811TMS320C54_cmpl2, // Complement Accumulator
11812TMS320C54_delay, // Memory Delay
11813TMS320C54_exp, // Accumulator Exponent
11814TMS320C54_firs, // Symmetrical Finite Impulse Response Filter
11815TMS320C54_lms, // Least Mean Square
11816TMS320C54_max, // Accumulator Maximum
11817TMS320C54_min, // Accumulator Minimum
11818TMS320C54_neg1, // Negate Accumulator
11819TMS320C54_neg2, // Negate Accumulator
11820TMS320C54_norm1, // Normalization
11821TMS320C54_norm2, // Normalization
11822TMS320C54_poly, // Polynominal Evaluation
11823TMS320C54_rnd1, // Round Accumulator
11824TMS320C54_rnd2, // Round Accumulator
11825TMS320C54_sat, // Saturate Accumulator
11826TMS320C54_sqdst, // Square Distance
11827// LOGICAL OPERATIONS
11828// AND INSTRUCTIONS
11829TMS320C54_and1, // AND With Accumulator
11830TMS320C54_and2, // AND With Accumulator
11831TMS320C54_and3, // AND With Accumulator
11832TMS320C54_andm, // AND Memory With Long Immediate
11833// OR INSTRUCTIONS
11834TMS320C54_or1, // OR With Accumulator
11835TMS320C54_or2, // OR With Accumulator
11836TMS320C54_or3, // OR With Accumulator
11837TMS320C54_orm, // OR Memory With Constant
11838// XOR INSTRUCTIONS
11839TMS320C54_xor1, // Exclusive OR With Accumulator
11840TMS320C54_xor2, // Exclusive OR With Accumulator
11841TMS320C54_xor3, // Exclusive OR With Accumulator
11842TMS320C54_xorm, // Exclusive OR Memory With Constant
11843// SHIFT INSTRUCTIONS
11844TMS320C54_rol, // Rotate Accumulator
11845TMS320C54_roltc, // Rotate Accumulator Left Using TC
11846TMS320C54_ror, // Rotate Accumulator Right
11847TMS320C54_sfta2, // Shift Accumulator Arithmetically
11848TMS320C54_sfta3, // Shift Accumulator Arithmetically
11849TMS320C54_sftc, // Shift Accumulator Conditionally
11850TMS320C54_sftl2, // Shift Accumulator Logically
11851TMS320C54_sftl3, // Shift Accumulator Logically
11852// TEST INSTRUCTIONS
11853TMS320C54_bit, // Test Bit
11854TMS320C54_bitf, // Test Bit Field Specified by Immediate Value
11855TMS320C54_bitt, // Test Bit Specified by T
11856TMS320C54_cmpm, // Compare Memory With Long Immediate
11857TMS320C54_cmpr, // Compare Auxiliary Register with AR0
11858// PROGRAM CONTROL OPERATIONS
11859// BRANCH INSTRUCTIONS
11860TMS320C54_b, // Branch Unconditionally
11861TMS320C54_bd, // Branch Unconditionally
11862TMS320C54_bacc, // Branch to Location Specified by Accumulator
11863TMS320C54_baccd, // Branch to Location Specified by Accumulator
11864TMS320C54_banz, // Branch on Auxiliary Register Not Zero
11865TMS320C54_banzd, // Branch on Auxiliary Register Not Zero
11866TMS320C54_bc2, // Branch Conditionally
11867TMS320C54_bc3, // Branch Conditionally
11868TMS320C54_bcd2, // Branch Conditionally
11869TMS320C54_bcd3, // Branch Conditionally
11870TMS320C54_fb, // Far Branch Unconditionally
11871TMS320C54_fbd, // Far Branch Unconditionally
11872TMS320C54_fbacc, // Far Branch to Location Specified by Accumulator
11873TMS320C54_fbaccd, // Far Branch to Location Specified by Accumulator
11874// CALL INSTRUCTIONS
11875TMS320C54_cala, // Call Subroutine at Location Specified by Accumulator
11876TMS320C54_calad, // Call Subroutine at Location Specified by Accumulator
11877TMS320C54_call, // Call Unconditionally
11878TMS320C54_calld, // Call Unconditionally
11879TMS320C54_cc2, // Call Conditionally
11880TMS320C54_cc3, // Call Conditionally
11881TMS320C54_ccd2, // Call Conditionally
11882TMS320C54_ccd3, // Call Conditionally
11883TMS320C54_fcala, // Far Call Subroutine at Location Specified by Accumulator
11884TMS320C54_fcalad, // Far Call Subroutine at Location Specified by Accumulator
11885TMS320C54_fcall, // Far Call Unconditionally
11886TMS320C54_fcalld, // Far Call Unconditionally
11887// INTERRUPT INSTRUCTIONS
11888TMS320C54_intr, // Software Interrupt
11889TMS320C54_trap, // Software Interrupt
11890// RETURN INSTRUCTIONS
11891TMS320C54_fret, // Far Return
11892TMS320C54_fretd, // Far Return
11893TMS320C54_frete, // Enable Interrupts and Far Return From Interrupt
11894TMS320C54_freted, // Enable Interrupts and Far Return From Interrupt
11895TMS320C54_rc1, // Return Conditionally
11896TMS320C54_rc2, // Return Conditionally
11897TMS320C54_rc3, // Return Conditionally
11898TMS320C54_rcd1, // Return Conditionally
11899TMS320C54_rcd2, // Return Conditionally
11900TMS320C54_rcd3, // Return Conditionally
11903TMS320C54_rete, // Enable Interrupts and Return From Interrupt
11904TMS320C54_reted, // Enable Interrupts and Return From Interrupt
11905TMS320C54_retf, // Enable Interrupts and Fast Return From Interrupt
11906TMS320C54_retfd, // Enable Interrupts and Fast Return From Interrupt
11907// REPEAT INSTRUCTIONS
11908TMS320C54_rpt, // Repeat Next Instruction
11909TMS320C54_rptb, // Block Repeat
11910TMS320C54_rptbd, // Block Repeat
11911TMS320C54_rptz, // Repeat Next Instruction And Clear Accumulator
11912// STACK MANIPULATING INSTRUCTIONS
11913TMS320C54_frame, // Stack Pointer Immediate Offset
11914TMS320C54_popd, // Pop Top of Stack to Data Memory
11915TMS320C54_popm, // Pop Top of Stack to Memory-Mapped Register
11916TMS320C54_pshd, // Push Data-Memory Value Onto Stack
11917TMS320C54_pshm, // Push Memory-Mapped Register Onto Stack
11918// MISCELLANEOUS PROGRAM-CONTROL INSTRUCTIONS
11919TMS320C54_idle, // Idle Until Interrupt
11920TMS320C54_mar, // Modify Auxiliary Register
11921TMS320C54_nop, // No Operation
11922TMS320C54_reset, // Software Reset
11923TMS320C54_rsbx1, // Reset Status Register Bit
11924TMS320C54_rsbx2, // Reset Status Register Bit
11925TMS320C54_ssbx1, // Set Status Register Bit
11926TMS320C54_ssbx2, // Set Status Register Bit
11927TMS320C54_xc2, // Execute Conditionally
11928TMS320C54_xc3, // Execute Conditionally
11929// LOAD AND STORE OPERATIONS
11930// LOAD INSTRUCTIONS
11931TMS320C54_dld, // Double-Precision/Dual 16-Bit Long-Word Load to Accumulator
11932TMS320C54_ld1, // Load Accumulator With Shift
11933TMS320C54_ld2, // Load Accumulator With Shift
11934TMS320C54_ld3, // Load Accumulator With Shift
11935TMS320C54_ldm, // Load Memory-Mapped Register
11936TMS320C54_ldr, // Load Memory Value in Accumulator High With Rounding
11937TMS320C54_ldu, // Load Unsigned Memory Value
11938TMS320C54_ltd, // Load T and insert Delay
11939// STORE INSTRUCTIONS
11940TMS320C54_dst, // Store Accumulator in Long Word
11941TMS320C54_st, // Store T, TRN, or Immediate Value into Memory
11942TMS320C54_sth2, // Store Accumulator High Into Memory
11943TMS320C54_sth3, // Store Accumulator High Into Memory
11944TMS320C54_stl2, // Store Accumulator Low Into Memory
11945TMS320C54_stl3, // Store Accumulator Low Into Memory
11946TMS320C54_stlm, // Store Accumulator Low Into Memory-Mapped Register
11947TMS320C54_stm, // Store Immediate Value Into Memory-Mapped Register
11948// CONDITIONAL STORE INSTRUCTIONS
11949TMS320C54_cmps, // Compare, Select and Store Maximum
11950TMS320C54_saccd, // Store Accumulator Conditionally
11951TMS320C54_srccd, // Store Block Repeat Counter Conditionally
11952TMS320C54_strcd, // Store T Conditionally
11953// PARALLEL LOAD AND STORE INSTRUCTIONS
11954TMS320C54_st_ld, // Store Accumulator With Parallel Load
11955// PARALLEL LOAD AND MULTIPLY INSTRUCTIONS
11956TMS320C54_ld_mac, // Load Accumulator With Parallel Multiply Accumulate Without Rounding
11957TMS320C54_ld_macr, // Load Accumulator With Parallel Multiply Accumulate With Rounding
11958TMS320C54_ld_mas, // Load Accumulator With Parallel Multiply Subtract Without Rounding
11959TMS320C54_ld_masr, // Load Accumulator With Parallel Multiply Subtract With Rounding
11960// PARALLEL STORE AND ADD/SUBSTRACT INSTRUCTIONS
11961TMS320C54_st_add, // Store Accumulator With Parallel Add
11962TMS320C54_st_sub, // Store Accumulator With Parallel Subtract
11963// PARALLEL STORE AND MULTIPLY INSTRUCTIONS
11964TMS320C54_st_mac, // Store Accumulator With Parallel Multiply Accumulate Without Rounding
11965TMS320C54_st_macr, // Store Accumulator With Parallel Multiply Accumulate With Rounding
11966TMS320C54_st_mas, // Store Accumulator With Parallel Multiply Subtract Without Rounding
11967TMS320C54_st_masr, // Store Accumulator With Parallel Multiply Subtract With Rounding
11968TMS320C54_st_mpy, // Store Accumulator With Parallel Multiply
11969// MISCELLANEOUS LOAD-TYPE AND STORE-TYPE INSTRUCTIONS
11970TMS320C54_mvdd, // Move Data From Data Memory to Data Memory With X,Y Addressing
11971TMS320C54_mvdk, // Move Data From Data Memory to Data Memory With Destination Addressing
11972TMS320C54_mvdm, // Move Data From Data Memory to Memory-Mapped Register
11973TMS320C54_mvdp, // Move Data From Data Memory to Program Memory
11974TMS320C54_mvkd, // Move Data From Data Memory to Data Memory With Source Addressing
11975TMS320C54_mvmd, // Move Data From Memory-Mapped Register to Data Memory
11976TMS320C54_mvmm, // Move Data From Memory-Mapped Register to Memory-Mapped Register
11977TMS320C54_mvpd, // Move Data From Program Memory to Data Memory
11978TMS320C54_portr, // Read Data From Port
11979TMS320C54_portw, // Write Data to Port
11980TMS320C54_reada, // Read Program Memory Addressed by Accumulator A and Store in Data Memory
11981TMS320C54_writa, // Write Data to Program Memory Addressed by Accumulator A
11983};
11984/*
11985 * Interactive disassembler (IDA).
11986 * Copyright (c) 1990-2026 Hex-Rays
11987 * ALL RIGHTS RESERVED.
11988 *
11989 */
11990enum
11991{
11992TMS320C55_null = 0, // Unknown Operation
11993// ARITHMETICAL OPERATIONS
11994TMS320C55_abdst, // Absolute Distance
11995TMS320C55_abs1, // Absolute Value
11996TMS320C55_abs2, // Absolute Value
11997TMS320C55_add1, // Addition
11998TMS320C55_add2, // Addition
11999TMS320C55_add3, // Addition
12000TMS320C55_add4, // Addition
12003TMS320C55_addrv1, // Addition and Round
12004TMS320C55_addrv2, // Addition and Round
12005TMS320C55_maxdiff, // Compare and Select Maximum
12006TMS320C55_dmaxdiff, // Compare and Select 40-bit Maximum
12007TMS320C55_mindiff, // Compare and Select Minimum
12008TMS320C55_dmindiff, // Compare and Select 40-bit Minimum
12009TMS320C55_addsubcc4, // Conditional Add or Subtract
12010TMS320C55_addsubcc5, // Conditional Add or Subtract
12011TMS320C55_addsub2cc, // Conditional Add or Subtract
12012TMS320C55_sftcc, // Conditional Shift
12013TMS320C55_subc2, // Conditional Subtract
12014TMS320C55_subc3, // Conditional Subtract
12015TMS320C55_addsub, // Paralleled Add - Subtract
12016TMS320C55_subadd, // Parallel Subtract - Add
12017TMS320C55_mpy_mpy, // Two Parallel Multiply
12018TMS320C55_mpy_mpyr, // Two Parallel Multiply, and Round
12019TMS320C55_mpy_mpy40, // Two Parallel Multiply, on 40 bits
12020TMS320C55_mpy_mpyr40, // Two Parallel Multiply, and Round on 40 bits
12021TMS320C55_mac_mpy, // Parallel Multiply - Accumulate
12022TMS320C55_macr_mpyr, // Parallel Multiply - Accumulate, and Round
12023TMS320C55_mac40_mpy40, // Parallel Multiply - Accumulate, on 40 bits
12024TMS320C55_macr40_mpyr40, // Parallel Multiply - Accumulate, and Round on 40 bits
12025TMS320C55_mas_mpy, // Parallel Multiply - Subtract
12026TMS320C55_masr_mpyr, // Parallel Multiply - Subtract, and Round
12027TMS320C55_mas40_mpy40, // Parallel Multiply - Subtract, on 40 bits
12028TMS320C55_masr40_mpyr40, // Parallel Multiply - Subtract, and Round on 40 bits
12029TMS320C55_amar_mpy, // Parallel Modify Auxiliary Register - Multiply
12030TMS320C55_amar_mpyr, // Parallel Modify Auxiliary Register - Multiply, and Round
12031TMS320C55_amar_mpy40, // Parallel Modify Auxiliary Register - Multiply, on 40 bits
12032TMS320C55_amar_mpyr40, // Parallel Modify Auxiliary Register - Multiply, and Round on 40 bits
12033TMS320C55_mac_mac, // Two Parallel Multiply and Accumulate
12034TMS320C55_macr_macr, // Two Parallel Multiply and Accumulate, and Round
12035TMS320C55_mac40_mac40, // Two Parallel Multiply and Accumulate, on 40 bits
12036TMS320C55_macr40_macr40, // Two Parallel Multiply and Accumulate, and Round on 40 bits
12037TMS320C55_mas_mac, // Parallel Multiply and Subtract - Multiply and Accumulate
12038TMS320C55_masr_macr, // Parallel Multiply and Subtract - Multiply and Accumulate, and Round
12039TMS320C55_mas40_mac40, // Parallel Multiply and Subtract - Multiply and Accumulate, on 40 bits
12040TMS320C55_masr40_macr40, // Parallel Multiply and Subtract - Multiply and Accumulate, and Round on 40 bits
12041TMS320C55_amar_mac, // Parallel Modify Auxiliary Register - Multiply and Accumulate
12042TMS320C55_amar_macr, // Parallel Modify Auxiliary Register - Multiply and Accumulate, and Round
12043TMS320C55_amar_mac40, // Parallel Modify Auxiliary Register - Multiply and Accumulate, on 40 bits
12044TMS320C55_amar_macr40, // Parallel Modify Auxiliary Register - Multiply and Accumulate, and Round on 40 bits
12045TMS320C55_mas_mas, // Two Parallel Multiply and Subtract
12046TMS320C55_masr_masr, // Two Parallel Multiply and Subtract, and Round
12047TMS320C55_mas40_mas40, // Two Parallel Multiply and Subtract, on 40 bits
12048TMS320C55_masr40_masr40, // Two Parallel Multiply and Subtract, and Round on 40 bits
12049TMS320C55_amar_mas, // Parallel Modify Auxiliary Register - Multiply and Subtract
12050TMS320C55_amar_masr, // Parallel Modify Auxiliary Register - Multiply and Subtract, and Round
12051TMS320C55_amar_mas40, // Parallel Modify Auxiliary Register - Multiply and Subtract, on 40 bits
12052TMS320C55_amar_masr40, // Parallel Modify Auxiliary Register - Multiply and Subtract, and Round on 40 bits
12053TMS320C55_mpy_mac, // Parallel Multiply - Multiply and Accumulate
12054TMS320C55_mpyr_macr, // Parallel Multiply - Multiply and Accumulate, and Round
12055TMS320C55_mpy40_mac40, // Parallel Multiply - Multiply and Accumulate, on 40 bits
12056TMS320C55_mpyr40_macr40, // Parallel Multiply - Multiply and Accumulate, and Round on 40 bits
12057TMS320C55_amar3, // Three Parallel Modify Auxiliary Registers
12058TMS320C55_firsadd, // Parallel Multiply and Accumulate - Add
12059TMS320C55_firssub, // Parallel Multiply and Accumulate - Subtract
12060TMS320C55_mpym_mov, // Parallel Multiply - Store
12061TMS320C55_mpymr_mov, // Parallel Multiply - Store, and Round
12062TMS320C55_macm_mov, // Parallel Multiply and Accumulate - Store
12063TMS320C55_macmr_mov, // Parallel Multiply and Accumulate - Store, and Round
12064TMS320C55_masm_mov, // Parallel Multiply and Subtract - Store
12065TMS320C55_masmr_mov, // Parallel Multiply and Subtract - Store, and Round
12066TMS320C55_add_mov, // Parallel Add - Store
12067TMS320C55_sub_mov, // Parallel Subtract - Store
12068TMS320C55_mov_mov, // Parallel Load - Store
12069TMS320C55_mov_aadd, // Parallel Store - aadd
12070TMS320C55_mov_add, // Parallel Store - Add
12071TMS320C55_amar_amar, // Parallel Modify Auxiliary Register - Modify Auxiliary Register
12072TMS320C55_add_asub, // Parallel Add - asub
12073TMS320C55_btst_mov, // Parallel Bit Test - Store
12074TMS320C55_mov_asub, // Parallel Store - asub
12075TMS320C55_lms, // Least Mean Square
12076TMS320C55_max1, // Maximum Comparison
12077TMS320C55_max2, // Maximum Comparison
12078TMS320C55_min1, // Minimum Comparison
12079TMS320C55_min2, // Minimum Comparison
12080TMS320C55_cmp, // Memory Comparison
12081TMS320C55_cmpu, // Unsigned memory Comparison
12082TMS320C55_aadd, // Add Two Registers
12083TMS320C55_asub, // Subtract Two Registers
12084TMS320C55_amov, // Move From Register to Register
12085TMS320C55_amar1, // Auxiliary Register Modification
12088TMS320C55_sqrr1, // Square and Round
12089TMS320C55_sqrr2, // Square and Round
12090TMS320C55_mpy1, // Multiply
12091TMS320C55_mpy2, // Multiply
12092TMS320C55_mpy3, // Multiply
12093TMS320C55_mpyr1, // Multiply and Round
12094TMS320C55_mpyr2, // Multiply and Round
12095TMS320C55_mpyr3, // Multiply and Round
12096TMS320C55_mpyk2, // Multiply by Constant
12097TMS320C55_mpyk3, // Multiply by Constant
12098TMS320C55_mpykr2, // Multiply by Constant and Round
12099TMS320C55_mpykr3, // Multiply by Constant and Round
12100TMS320C55_mpym2, // Multiply Memory Value
12101TMS320C55_mpym3, // Multiply Memory Values
12102TMS320C55_mpymr2, // Multiply Memory Value and Round
12103TMS320C55_mpymr3, // Multiply Memory Values and Round
12104TMS320C55_mpym403, // Multiply Memory Values on 40 bits
12105TMS320C55_mpymr403, // Multiply Memory Values and Round on 40 bits
12106TMS320C55_mpymu3, // Unsigned multiply Memory Values
12107TMS320C55_mpymru3, // Unsigned multiply Memory Values and Round
12108TMS320C55_sqrm, // Square Memory Value
12109TMS320C55_sqrmr, // Square Memory Value, and Round
12110TMS320C55_mpymk, // Multiply Memory Value by Constant
12111TMS320C55_mpymkr, // Multiply Memory Value by Constant and Round
12112TMS320C55_sqa1, // Square and Accumulate
12113TMS320C55_sqa2, // Square and Accumulate
12114TMS320C55_sqar1, // Square, Accumulate and Round
12115TMS320C55_sqar2, // Square, Accumulate and Round
12116TMS320C55_mac3, // Multiply and Accumulate
12117TMS320C55_mac4, // Multiply and Accumulate
12118TMS320C55_macr3, // Multiply, Accumulate and Round
12119TMS320C55_macr4, // Multiply, Accumulate and Round
12120TMS320C55_mack3, // Multiply by Constant and Accumulate
12121TMS320C55_mack4, // Multiply by Constant and Accumulate
12122TMS320C55_mackr3, // Multiply by Constant, Round and Accumulate
12123TMS320C55_mackr4, // Multiply by Constant, Round and Accumulate
12124TMS320C55_macm2, // Multiply and Accumulate Memory Values
12125TMS320C55_macm3, // Multiply and Accumulate Memory Values
12126TMS320C55_macm4, // Multiply and Accumulate Memory Values
12127TMS320C55_macmr2, // Multiply and Accumulate Memory Values, and Round
12128TMS320C55_macmr3, // Multiply and Accumulate Memory Values, and Round
12129TMS320C55_macmr4, // Multiply and Accumulate Memory Values, and Round
12130TMS320C55_macm403, // Multiply and Accumulate Memory Values, on 40 bits
12131TMS320C55_macm404, // Multiply and Accumulate Memory Values, on 40 bits
12132TMS320C55_macmr403, // Multiply and Accumulate Memory Values, and Round on 40 bits
12133TMS320C55_macmr404, // Multiply and Accumulate Memory Values, and Round on 40 bits
12134TMS320C55_macmz, // Multiply and Accumulate Memory Values
12135TMS320C55_macmrz, // Multiply and Accumulate Memory Values, and Round
12136TMS320C55_sqam2, // Square and Accumulate Memory Value
12137TMS320C55_sqam3, // Square and Accumulate Memory Values
12138TMS320C55_sqamr2, // Square and Accumulate Memory Value, and Round
12139TMS320C55_sqamr3, // Square and Accumulate Memory Values, and Round
12140TMS320C55_macmk3, // Multiply Memory Value by Constant and Accumulate
12141TMS320C55_macmk4, // Multiply Memory Value by Constant and Accumulate
12142TMS320C55_macmkr3, // Multiply Memory Value by Constant - Accumulate, and Round
12143TMS320C55_macmkr4, // Multiply Memory Value by Constant - Accumulate, and Round
12144TMS320C55_sqs1, // Square and Subtract
12145TMS320C55_sqs2, // Square and Subtract
12146TMS320C55_sqsr1, // Square, Subtract and Round
12147TMS320C55_sqsr2, // Square, Subtract and Round
12148TMS320C55_mas2, // Multiply and Subtract
12149TMS320C55_mas3, // Multiply and Subtract
12150TMS320C55_masr2, // Multiply, Subtract and Round
12151TMS320C55_masr3, // Multiply, Subtract and Round
12152TMS320C55_masm2, // Multiply and Subtract Memory Value
12153TMS320C55_masm3, // Multiply and Subtract Memory Values
12154TMS320C55_masm4, // Multiply and Subtract Memory Values
12155TMS320C55_masmr2, // Multiply and Subtract Memory Values, and Round
12156TMS320C55_masmr3, // Multiply and Subtract Memory Values, and Round
12157TMS320C55_masmr4, // Multiply and Subtract Memory Values, and Round
12158TMS320C55_masm403, // Multiply and Subtract Memory Values, on 40 bits
12159TMS320C55_masm404, // Multiply and Subtract Memory Values, on 40 bits
12160TMS320C55_masmr403, // Multiply and Subtract Memory Values, and Round on 40 bits
12161TMS320C55_masmr404, // Multiply and Subtract Memory Values, and Round on 40 bits
12162TMS320C55_sqsm2, // Square and Subtract Memory Values
12163TMS320C55_sqsm3, // Square and Subtract Memory Values
12164TMS320C55_sqsmr2, // Square and Subtract Memory Values, and Round
12165TMS320C55_sqsmr3, // Square and Subtract Memory Values, and Round
12166TMS320C55_neg1, // Negation
12167TMS320C55_neg2, // Negation
12168TMS320C55_mant_nexp, // Exponent and Mantissa
12169TMS320C55_exp, // Exponent
12170TMS320C55_cmpand, // Compare and AND
12171TMS320C55_cmpandu, // Unsigned compare and AND
12172TMS320C55_cmpor, // Compare and OR
12173TMS320C55_cmporu, // Unsigned compare and OR
12176TMS320C55_sat1, // Saturate
12177TMS320C55_sat2, // Saturate
12178TMS320C55_satr1, // Saturate and Round
12179TMS320C55_satr2, // Saturate and Round
12180TMS320C55_sfts2, // Signed Shift
12181TMS320C55_sfts3, // Signed Shift
12182TMS320C55_sftsc2, // Signed Shift with Carry
12183TMS320C55_sftsc3, // Signed Shift with Carry
12184TMS320C55_sqdst, // Square distance
12185TMS320C55_sub1, // Subtract
12186TMS320C55_sub2, // Subtract
12187TMS320C55_sub3, // Subtract
12188TMS320C55_sub4, // Subtract
12189TMS320C55_band, // Bit Field Comparison
12190TMS320C55_bfxpa, // Bit Field Expand
12191TMS320C55_bfxtr, // Bit Field Extract
12192TMS320C55_btst, // Bit Test
12194TMS320C55_bclr2, // Bit Clear
12196TMS320C55_btstset, // Bit Test and Set
12197TMS320C55_btstclr, // Bit Test and Clear
12198TMS320C55_btstnot, // Bit Test and NOT
12199TMS320C55_btstp, // Bit Pair Test
12200TMS320C55_bclr1, // Bit Clear
12202TMS320C55_amar2, // Load Effective Address to Extended Auxiliary Register
12203TMS320C55_popboth, // Pop Extended Auxiliary Register from Stack Pointers
12204TMS320C55_pshboth, // Push Extended Auxiliary Register to Stack Pointers
12205// LOGICAL OPERATIONS
12206TMS320C55_bcnt, // Count Bit Field
12218TMS320C55_sftl2, // Logical Shift
12219TMS320C55_sftl3, // Logical Shift
12220TMS320C55_rol, // Rotate Left
12221TMS320C55_ror, // Rotate Right
12222// MISCELLANEOUS OPERATIONS
12223// MOVE OPERATIONS
12224TMS320C55_swap, // Swap Registers
12225TMS320C55_swapp, // Swap Pair Registers
12226TMS320C55_swap4, // Swap 4 Registers
12227TMS320C55_mov2, // Move Data
12228TMS320C55_mov3, // Move 2 Data
12229TMS320C55_mov402, // Move Data on 40 bits
12230TMS320C55_delay, // Memory Delay
12231TMS320C55_pop1, // Pop Top of Stack1
12232TMS320C55_pop2, // Pop Top of Stack2
12233TMS320C55_psh1, // Pop Top of Stack3
12234TMS320C55_psh2, // Pop Top of Stack4
12235// PROGRAM CONTROL OPERATIONS
12236TMS320C55_bcc, // Branch Conditionally
12237TMS320C55_bccu, // Branch Conditionally
12238TMS320C55_b, // Branch Unconditionally
12239TMS320C55_callcc, // Call Conditionally
12240TMS320C55_call, // Call Unconditionally
12241TMS320C55_xcc, // Execute Conditionally
12242TMS320C55_xccpart, // Execute Conditionally
12244TMS320C55_nop, // No Operation
12245TMS320C55_nop_16, // No Operation
12246TMS320C55_rptblocal, // Repeat Block of Instructions Unconditionally
12247TMS320C55_rptb, // Repeat Block of Instructions Unconditionally
12248TMS320C55_rptcc, // Repeat Single Instruction Conditionally
12249TMS320C55_rpt, // Repeat Single Instruction Unconditionally
12250TMS320C55_rptadd, // Repeat Single Instruction Unconditionally and Add to Register
12251TMS320C55_rptsub, // Repeat Single Instruction Unconditionally and Subtract to Register
12252TMS320C55_retcc, // Return Conditionally
12253TMS320C55_ret, // Return Unconditionally
12254TMS320C55_reti, // Return from Interrupt
12255TMS320C55_intr, // Software Interrupt
12256TMS320C55_reset, // Software Reset
12257TMS320C55_trap, // Software Trap
12259};
12260/*
12261 * Interactive disassembler (IDA).
12262 * Copyright (c) 1990-2026 Hex-Rays
12263 * ALL RIGHTS RESERVED.
12264 *
12265 */
12266enum
12267{
12269TRIMEDIA_igtri, // signed compare greater with immediate
12270TRIMEDIA_igeqi, // signed compare greater or equal with immediate
12271TRIMEDIA_ilesi, // signed compare less with immediate
12272TRIMEDIA_ineqi, // signed compare not equal with immediate
12273TRIMEDIA_ieqli, // signed compare equal with immediate
12274TRIMEDIA_iaddi, // add with immediate
12275TRIMEDIA_ild16d, // signed 16-bit load with displacement
12276TRIMEDIA_ld32d, // 32-bit load with displacement
12277TRIMEDIA_uld8d, // unsigned 8-bit load with displacement
12278TRIMEDIA_lsri, // logical shift right immediate
12279TRIMEDIA_asri, // arithmetic shift right immediate
12280TRIMEDIA_asli, // arithmetic shift left immediate
12281TRIMEDIA_iadd, // signed add
12282TRIMEDIA_isub, // signed subtract
12283TRIMEDIA_igeq, // signed compare greater or equal
12284TRIMEDIA_igtr, // signed compare greater
12285TRIMEDIA_bitand, // bitwise logical AND
12286TRIMEDIA_bitor, // bitwise logical OR
12287TRIMEDIA_asr, // arithmetic shift right
12288TRIMEDIA_asl, // arithmetic shift left
12289TRIMEDIA_ifloat, // convert signed integer to floating-point
12290TRIMEDIA_ifixrz, // convert floating-point to integer with round toward zero
12291TRIMEDIA_fadd, // floating-point add
12292TRIMEDIA_imin, // signed minimum
12293TRIMEDIA_imax, // signed maximum
12294TRIMEDIA_iavgonep, // signed average
12295TRIMEDIA_ume8uu, // sum of absolute values of unsigned 8-bit differences
12296TRIMEDIA_imul, // signed multiply
12297TRIMEDIA_fmul, // floating-point multiply
12298TRIMEDIA_h_st8d, // hardware 8-bit store with displacement
12299TRIMEDIA_h_st16d, // hardware 16-bit store with displacement
12300TRIMEDIA_h_st32d, // hardware 32-bit store with displacement
12301TRIMEDIA_isubi, // subtract with immediate
12302TRIMEDIA_ugtr, // unsigned compare greater
12303TRIMEDIA_ugtri, // unsigned compare greater with immediate
12304TRIMEDIA_ugeq, // unsigned compare greater or equal
12305TRIMEDIA_ugeqi, // unsigned compare greater or equal with immediate
12306TRIMEDIA_ieql, // signed compare equal
12307TRIMEDIA_ueqli, // unsigned compare equal with immediate
12308TRIMEDIA_ineq, // signed compare not equal
12309TRIMEDIA_uneqi, // unsigned compare not equal
12310TRIMEDIA_ulesi, // unsigned compare less with immediate
12311TRIMEDIA_ileqi, // signed compare less or equal with immediate
12312TRIMEDIA_uleqi, // unsigned compare less or equal with immediate
12313TRIMEDIA_h_iabs, // hardware absolute value
12314TRIMEDIA_carry, // compute carry bit from unsigned add
12315TRIMEDIA_izero, // if zero select zero
12316TRIMEDIA_inonzero, // if nonzero select zero
12317TRIMEDIA_bitxor, // bitwise logical exclusive OR
12318TRIMEDIA_bitandinv, // bitwise logical AND NOT
12319TRIMEDIA_bitinv, // bitwise logical NOT
12320TRIMEDIA_sex16, // sign extend 16 bits
12321TRIMEDIA_packbytes, // pack least-significant bytes
12322TRIMEDIA_pack16lsb, // pack least-significant 16-bit halfwords
12323TRIMEDIA_pack16msb, // pack most-significant 16-bit halfwords
12324TRIMEDIA_ubytesel, // select unsigned byte
12325TRIMEDIA_ibytesel, // signed select byte
12326TRIMEDIA_mergelsb, // merge least-significant byte
12327TRIMEDIA_mergemsb, // merge most-significant byte
12328TRIMEDIA_ume8ii, // unsigned sum of absolute values of signed 8-bit differences
12329TRIMEDIA_h_dspiabs, // clipped signed absolute value
12330TRIMEDIA_dspiadd, // clipped signed add
12331TRIMEDIA_dspuadd, // clipped unsigned add
12332TRIMEDIA_dspisub, // clipped signed subtract
12333TRIMEDIA_dspusub, // clipped unsigned subtract
12334TRIMEDIA_dspidualadd, // dual clipped add of signed 16-bit halfwords
12335TRIMEDIA_dspidualsub, // dual clipped subtract of signed 16-bit halfwords
12336TRIMEDIA_h_dspidualabs, // dual clipped absolute value of signed 16-bit halfwords
12337TRIMEDIA_quadavg, // unsigned byte-wise quad average
12338TRIMEDIA_iclipi, // clip signed to signed
12339TRIMEDIA_uclipi, // clip signed to unsigned
12340TRIMEDIA_uclipu, // clip unsigned to unsigned
12341TRIMEDIA_iflip, // if non-zero negate
12342TRIMEDIA_dspuquadaddui, // quad clipped add of unsigned/signed bytes
12343TRIMEDIA_quadumin, // unsigned byte-wise quad minimum
12344TRIMEDIA_quadumax, // unsigned byte-wise quad maximum
12345TRIMEDIA_dualiclipi, // dual-16 clip signed to signed
12346TRIMEDIA_dualuclipi, // dual-16 clip signed to unsigned
12347TRIMEDIA_quadumulmsb, // unsigned quad 8-bit multiply most significant
12348TRIMEDIA_ufir8uu, // unsigned sum of products of unsigned bytes
12349TRIMEDIA_ifir8ui, // signed sum of products of unsigned/signed bytes
12350TRIMEDIA_ifir8ii, // signed sum of products of signed bytes
12351TRIMEDIA_ifir16, // sum of products of signed 16-bit halfwords
12352TRIMEDIA_ufir16, // sum of products of unsigned 16-bit halfwords
12353TRIMEDIA_dspidualmul, // dual clipped multiply of signed 16-bit halfwords
12354TRIMEDIA_lsr, // logical shift right
12355TRIMEDIA_rol, // rotate left
12356TRIMEDIA_roli, // rotate left by immediate
12357TRIMEDIA_funshift1, // funnel-shift 1 byte
12358TRIMEDIA_funshift2, // funnel-shift 2 bytes
12359TRIMEDIA_funshift3, // funnel-shift 3 bytes
12360TRIMEDIA_dualasr, // dual-16 arithmetic shift right
12361TRIMEDIA_mergedual16lsb,// merge dual 16-bit lsb bytes
12362TRIMEDIA_fdiv, // floating-point divide
12363TRIMEDIA_fdivflags, // IEEE status flags from floating-point divide
12364TRIMEDIA_fsqrt, // floating-point square root
12365TRIMEDIA_fsqrtflags, // IEEE status flags from floating-point square root
12366TRIMEDIA_faddflags, // IEEE status flags from floating-point add
12367TRIMEDIA_fsub, // floating-point subtract
12368TRIMEDIA_fsubflags, // IEEE status flags from floating-point subtract
12369TRIMEDIA_fabsval, // floating-point absolute value
12370TRIMEDIA_fabsvalflags, // IEEE status flags from floating-point absolute value
12371TRIMEDIA_ifloatrz, // convert signed integer to floating-point with rounding toward zero
12372TRIMEDIA_ifloatrzflags, // IEEE status flags from convert signed integer to floating-point with rounding toward zero
12373TRIMEDIA_ufloatrz, // convert unsigned integer to floating-point with round toward zero
12374TRIMEDIA_ufloatrzflags, // IEEE status flags from convert unsigned integer to floating-point with round toward zero
12375TRIMEDIA_ifixieee, // convert floating-point to integer using PCSW rounding mode
12376TRIMEDIA_ifixieeeflags, // IEEE status flags from convert floating-point to integer using PCSW rounding mode
12377TRIMEDIA_ufixieee, // convert floating-point to unsigned integer using PCSW rounding mode
12378TRIMEDIA_ufixieeeflags, // IEEE status flags from convert floating-point to unsigned integer using PCSW rounding mode
12379TRIMEDIA_ufixrz, // convert floating-point to unsigned integer with round toward zero
12380TRIMEDIA_ufixrzflags, // IEEE status flags from convert floating-point to unsigned integer with round toward zero
12381TRIMEDIA_ufloat, // convert unsigned integer to floating-point
12382TRIMEDIA_ufloatflags, // IEEE status flags from convert unsigned integer to floating-point
12383TRIMEDIA_ifixrzflags, // IEEE status flags from convert floating-point to integer with round toward zero
12384TRIMEDIA_ifloatflags, // IEEE status flags from convert signed integer to floating-point
12385TRIMEDIA_umul, // unsigned multiply
12386TRIMEDIA_imulm, // signed multiply, return most-significant 32 bits
12387TRIMEDIA_umulm, // unsigned multiply, return most-significant 32 bits
12388TRIMEDIA_dspimul, // clipped signed multiply
12389TRIMEDIA_dspumul, // clipped unsigned multiply
12390TRIMEDIA_fmulflags, // IEEE status flags from floating-point multiply
12391TRIMEDIA_fgtr, // floating-point compare greater
12392TRIMEDIA_fgtrflags, // IEEE status flags from floating-point compare greater
12393TRIMEDIA_fgeq, // floating-point compare greater or equal
12394TRIMEDIA_fgeqflags, // IEEE status flags from floating-point compare greater or equal
12395TRIMEDIA_feql, // floating-point compare equal
12396TRIMEDIA_feqlflags, // IEEE status flags from floating-point compare equal
12397TRIMEDIA_fneq, // floating-point compare not equal
12398TRIMEDIA_fneqflags, // IEEE status flags from floating-point compare not equal
12399TRIMEDIA_fsign, // sign of floating-point value
12400TRIMEDIA_fsignflags, // IEEE status flags from floating-point sign
12401TRIMEDIA_cycles, // read clock cycle counter, least-significant word
12402TRIMEDIA_hicycles, // read clock cycle counter, most-significant word
12403TRIMEDIA_readdpc, // read destination program counter
12404TRIMEDIA_readspc, // read source program counter
12405TRIMEDIA_readpcsw, // read program control and status word
12406TRIMEDIA_writespc, // write source program counter
12407TRIMEDIA_writedpc, // write destination program counter
12408TRIMEDIA_writepcsw, // write program control and status word
12409TRIMEDIA_curcycles, // read current clock cycle, least-significant word
12410TRIMEDIA_jmpt, // indirect jump on true
12411TRIMEDIA_ijmpt, // interruptible indirect jump on true
12412TRIMEDIA_jmpi, // jump immediate
12413TRIMEDIA_ijmpi, // interruptible jump immediate
12414TRIMEDIA_jmpf, // indirect jump on false
12415TRIMEDIA_ijmpf, // interruptible indirect jump on false
12416TRIMEDIA_iclr, // invalidate all instruction cache blocks
12417TRIMEDIA_uimm, // unsigned immediate
12418TRIMEDIA_ild8d, // signed 8-bit load with displacement
12419TRIMEDIA_ild8r, // signed 8-bit load with index
12420TRIMEDIA_uld8r, // unsigned 8-bit load with index
12421TRIMEDIA_ild16r, // signed 16-bit load with index
12422TRIMEDIA_ild16x, // signed 16-bit load with scaled index
12423TRIMEDIA_uld16d, // unsigned 16-bit load with displacement
12424TRIMEDIA_uld16r, // unsigned 16-bit load with index
12425TRIMEDIA_uld16x, // unsigned 16-bit load with scaled index
12426TRIMEDIA_ld32r, // 32-bit load with index
12427TRIMEDIA_ld32x, // 32-bit load with scaled index
12428TRIMEDIA_rdtag, // read data cache address tag
12429TRIMEDIA_rdstatus, // read data cache status bits
12430TRIMEDIA_dcb, // data cache copy back
12431TRIMEDIA_dinvalid, // invalidate data cache block
12432TRIMEDIA_prefd, // prefetch with displacement
12433TRIMEDIA_prefr, // prefetch with index
12434TRIMEDIA_pref16x, // prefetch with 16-bit scaled index
12435TRIMEDIA_pref32x, // prefetch with 32-bit scaled index
12436TRIMEDIA_allocd, // allocate a cache block with displacement
12437TRIMEDIA_allocr, // allocate a cache block with index
12438TRIMEDIA_allocx, // allocate a cache block with scaled index
12440// Pseudo-operations
12441TRIMEDIA_alloc, // allocate a cache block
12442TRIMEDIA_dspiabs, // clipped signed absolute value
12443TRIMEDIA_dspidualabs, // dual clipped absolute value of signed 16-bit halfwords
12444TRIMEDIA_iabs, // absolute value
12445TRIMEDIA_ild16, // signed 16-bit load
12446TRIMEDIA_ild8, // signed 8-bit load
12447TRIMEDIA_ineg, // signed negate
12448TRIMEDIA_ld32, // 32-bit load
12449TRIMEDIA_pref, // prefetch
12450TRIMEDIA_sex8, // sign extend 8 bits
12451TRIMEDIA_st16, // 16-bit store
12452TRIMEDIA_st16d, // 16-bit store with displacement
12453TRIMEDIA_st32, // 32-bit store
12454TRIMEDIA_st32d, // 32-bit store with displacement
12455TRIMEDIA_st8, // 8-bit store
12456TRIMEDIA_st8d, // 8-bit store with displacement
12457TRIMEDIA_uld16, // unsigned 16-bit load
12458TRIMEDIA_uld8, // unsigned 8-bit load
12459TRIMEDIA_zex16, // zero extend 16 bits
12460TRIMEDIA_zex8, // zero extend 8 bits
12461TRIMEDIA_ident, // identity
12462// Unused pseudo-operations:
12478 };
12479/*
12480 * NEC 78K0 processor module for IDA.
12481 * Copyright (c) 2006 Konstantin Norvatoff, <konnor@bk.ru>
12482 * Freeware.
12483 */
12484enum
12485{
12486NEC_78K_0_null = 0, // Unknown Operation
12487NEC_78K_0_mov, // Move Byte Data Transfer
12488NEC_78K_0_xch, // Exchange Byte Data
12489NEC_78K_0_movw, // Move Word Data Transfer / Word Data Transfer with Stack Pointer
12490NEC_78K_0_xchw, // Exchange Word Data
12491NEC_78K_0_add, // Add Byte Data Addition
12492NEC_78K_0_addc, // Add with Carry Addition of Byte Data with Carry
12493NEC_78K_0_sub, // Subtract Byte Data Subtraction
12494NEC_78K_0_subc, // Subtract with Carry Subtraction of Byte Data with Carry
12495NEC_78K_0_and, // And Logical Product of Byte Data
12496NEC_78K_0_or, // Or Logical Sum of Byte Data
12497NEC_78K_0_xor, // Exclusive Or Exclusive Logical Sum of Byte Data
12498NEC_78K_0_cmp, // Compare Byte Data Comparison
12499NEC_78K_0_addw, // Add Word Data Addition
12500NEC_78K_0_subw, // Subtract Word Data Subtraction
12501NEC_78K_0_cmpw, // Compare Word Data Comparison
12502NEC_78K_0_mulu, // Multiply Unsigned Multiplication of Data
12503NEC_78K_0_divuw, // Divide Unsigned Word Unsigned Division of Word Data
12504NEC_78K_0_inc, // Increment Byte Data Increment
12505NEC_78K_0_dec, // Decrement Byte Data Decrement
12506NEC_78K_0_incw, // Increment Word Data Increment
12507NEC_78K_0_decw, // Decrement Word Data Decrement
12508NEC_78K_0_ror, // Rotate Right Byte Data Rotation to the Right
12509NEC_78K_0_rol, // Rotate Left Byte Data Rotation to the Left
12510NEC_78K_0_rorc, // Rotate Right with Carry Byte Data Rotation to the Right with Carry
12511NEC_78K_0_rolc, // Rotate Left with Carry Byte Data Rotation to the Left with Carry
12512NEC_78K_0_ror4, // Rotate Right Digit Digit Rotation to the Right
12513NEC_78K_0_rol4, // Rotate Left Digit Digit Rotation to the Left
12514NEC_78K_0_adjba, // Decimal Adjust Register for Addition Decimal Adjustment of Addition Result
12515NEC_78K_0_adjbs, // Decimal Adjust Register for Subtraction Decimal Adjustment of Subtraction Result
12516NEC_78K_0_mov1, // Move Single Bit 1 Bit Data Transfer
12517NEC_78K_0_and1, // And Single Bit 1 Bit Data Logical Product
12518NEC_78K_0_or1, // Or Single Bit 1 Bit Data Logical Sum
12519NEC_78K_0_xor1, // Exclusive Or Single Bit 1 Bit Data Exclusive Logical Sum
12520NEC_78K_0_set1, // Set Single Bit (Carry Flag) 1 Bit Data Set
12521NEC_78K_0_clr1, // Clear Single Bit (Carry Flag) 1 Bit Data Clear
12522NEC_78K_0_not1, // Not Single Bit (Carry Flag) 1 Bit Data Logical Negation
12523NEC_78K_0_call, // Call Subroutine Call (16 Bit Direct)
12524NEC_78K_0_callf, // Call Flag Subroutine Call (11 Bit Direct Specification)
12525NEC_78K_0_callt, // Call Table Subroutine Call (Refer to the Call Table)
12526NEC_78K_0_brk, // Break Software Vectored Interrupt
12527NEC_78K_0_ret, // Return Return from Subroutine
12528NEC_78K_0_retb, // Return from Interrupt Return from Hardware Vectored Interrupt
12529NEC_78K_0_reti, // Return from Break Return from Software Vectored Interrupt
12532NEC_78K_0_br, // Branch Unconditional Branch
12533NEC_78K_0_bc, // Branch if Carry Conditional Branch with Carry Flag (CY = 1)
12534NEC_78K_0_bnc, // Branch if Not Carry Conditional Branch with Carry Flag (CY = 0)
12535NEC_78K_0_bz, // Branch if Zero Conditional Branch with Zero Flag (Z = 1)
12536NEC_78K_0_bnz, // Branch if Not Zero Conditional Branch with Zero Flag (Z = 0)
12537NEC_78K_0_bt, // Branch if True Conditional Branch by Bit Test (Byte Data Bit = 1)
12538NEC_78K_0_bf, // Branch if False Conditional Branch by Bit Test (Byte Data Bit = 0)
12539NEC_78K_0_btclr, // Branch if True and Clear Conditional Branch and Clear by Bit Test (Byte Data Bit = 1)
12540NEC_78K_0_dbnz, // Decrement and Branch if Not Zero Conditional Loop (R1!= 0)
12541NEC_78K_0_sel, // Select Register Bank Register Bank Selection
12542NEC_78K_0_nop, // No Operation
12543NEC_78K_0_EI, // Enable Interrupt
12544NEC_78K_0_DI, // Disable Interrupt
12545NEC_78K_0_HALT, // HALT Mode Set
12546NEC_78K_0_STOP, // Stop Mode Set
12548 };
12549/*
12550 * Interactive disassembler (IDA).
12551 * Copyright (c) 1990-2026 Hex-Rays
12552 * ALL RIGHTS RESERVED.
12553 *
12554 */
12555enum
12556{
12557 NEC_78K_0S_null = 0, // Unknown Operation
12558 NEC_78K_0S_cmp, // Compare Byte Data Comparison
12559 NEC_78K_0S_xor, // Exclusive Or Exclusive Logical Sum of Byte Data
12560 NEC_78K_0S_and, // AND Logical Product of Byte Data
12561 NEC_78K_0S_or, // OR Logical Sum of Byte Data
12562 NEC_78K_0S_add, // ADD Byte Data Addition
12563 NEC_78K_0S_sub, // Subtract Byte Data Subtraction
12564 NEC_78K_0S_addc, // Add with Carry Addition of Byte Data with Carry
12565 NEC_78K_0S_subc, // Subtract with Carry Subtraction of Byte Data with Carry
12566 NEC_78K_0S_subw, // Subtract Word Data Subtraction
12567 NEC_78K_0S_addw, // Add Word Data Addition
12568 NEC_78K_0S_cmpw, // Compare Word Data Comparison
12569 NEC_78K_0S_inc, // Increment Byte Data Increment
12570 NEC_78K_0S_dec, // Decrement Byte Data Decrement
12571 NEC_78K_0S_incw, // Increment Word Data Increment
12572 NEC_78K_0S_decw, // Decrement Word Data Decrement
12573 NEC_78K_0S_ror, // Rotate Right Byte Data Rotation to the Right
12574 NEC_78K_0S_rol, // Rotate Left Byte Data Rotation to the Left
12575 NEC_78K_0S_rorc, // Rotate Right with Carry Byte Data Rotation to the Right with Carry
12576 NEC_78K_0S_rolc, // Rotate Left with Carry Byte Data Rotation to the Left with Carry
12577 NEC_78K_0S_call, // CALL Subroutine Call (16 Bit Direct)
12578 NEC_78K_0S_callt, // Call Table Subroutine Call (Call Table Reference)
12579 NEC_78K_0S_ret, // Return from Subroutine
12580 NEC_78K_0S_reti, // Return from Interrupt / Return from Hardware Vectored Interrupt
12581 NEC_78K_0S_mov, // Move Byte Data Transfer
12582 NEC_78K_0S_xch, // Exchange Byte Data Exchange
12583 NEC_78K_0S_xchw, // Exchange Word Data Exchange
12584 NEC_78K_0S_set1, // Set Single Bit (Carry Flag) 1 Bit Data Set
12585 NEC_78K_0S_clr1, // Clear Single Bit (Carry Flag) 1 Bit Data Clear
12586 NEC_78K_0S_not1, // Not Single Bit (Carry Flag) 1 Bit Data Logical Negation
12589 NEC_78K_0S_movw, // Move Word Data Transfer / Word Data Transfer with Stack Pointer
12590 NEC_78K_0S_br, // Unconditional Branch
12591 NEC_78K_0S_bc, // Branch if Carry Conditional Branch with Carry Flag (CY = 1)
12592 NEC_78K_0S_bnc, // Branch if Not Carry Conditional Branch with Carry Flag (CY = 0)
12593 NEC_78K_0S_bz, // Branch if Zero Conditional Branch with Zero Flag (Z = 1)
12594 NEC_78K_0S_bnz, // Branch if Not Zero Conditional Branch with Zero Flag (Z = 0)
12595 NEC_78K_0S_bt, // Branch if True Conditional Branch by Bit Test (Byte Data Bit = 1)
12596 NEC_78K_0S_bf, // Branch if False Conditional Branch by Bit Test (Byte Data Bit = 0)
12597 NEC_78K_0S_dbnz, // Decrement and Branch if Not Zero Conditional Loop (R1 != 0)
12598 NEC_78K_0S_nop, // No Operation
12599 NEC_78K_0S_EI, // Enable Interrupt
12600 NEC_78K_0S_DI, // Disable Interrupt
12601 NEC_78K_0S_HALT, // HALT Mode Set
12602 NEC_78K_0S_STOP, // Stop Mode Set
12604};
12605// The instruction types (``itype''s)
12606// M16C/60, M16C/20, M16C/Tiny and M16C/80 CPUs implements.
12608{
12609 M16C_null=0, // Unknown Operation
12610 M16C_abs, // Absolute value
12611 M16C_adc, // Add with carry
12612 M16C_adcf, // Add carry flag
12613 M16C_add, // Add without carry
12614 M16C_adjnz, // Add & conditional jump
12615 M16C_and, // Logically AND
12616 M16C_band, // Logically AND bits
12617 M16C_bclr, // Clear bit
12618 M16C_bmcnd, // Conditional bit transfer
12619 // conds (order is important; don't shuffle) (same order as the enum am_cnd8_t in m16c.hpp)
12620 M16C_bmgeu, // Conditional bit transfer: Equal to or greater than; C == 1
12621 M16C_bmgtu, // Conditional bit transfer: Greater than
12622 M16C_bmeq, // Conditional bit transfer: Equal to; Z == 1
12623 M16C_bmn, // Conditional bit transfer: Negative
12624 M16C_bmle, // Conditional bit transfer: Equal to or smaller than (signed)
12625 M16C_bmo, // Conditional bit transfer: Overflow; O == 1
12626 M16C_bmge, // Conditional bit transfer: Equal to or greater than (signed)
12627 M16C_bmltu, // Conditional bit transfer: Smaller than; C == 0
12628 M16C_bmleu, // Conditional bit transfer: Equal to or smaller than
12629 M16C_bmne, // Conditional bit transfer: Not equal; Z == 0
12630 M16C_bmpz, // Conditional bit transfer: Positive or zero
12631 M16C_bmgt, // Conditional bit transfer: Greater than (signed)
12632 M16C_bmno, // Conditional bit transfer: No overflow; O == 0
12633 M16C_bmlt, // Conditional bit transfer: Smaller than (signed)
12634 // ---
12635 M16C_bnand, // Logically AND inverted bits
12636 M16C_bnor, // Logically OR inverted bits
12637 M16C_bnot, // Invert bit
12638 M16C_bntst, // Test inverted bit
12639 M16C_bnxor, // Exclusive OR inverted bits
12640 M16C_bor, // Logically OR bits
12641 M16C_brk, // Debug interrupt
12642 M16C_bset, // Set bit
12643 M16C_btst, // Test bit
12644 M16C_btstc, // Test bit & clear
12645 M16C_btsts, // Test bit & set
12646 M16C_bxor, // Exclusive OR bits
12647 M16C_cmp, // Compare
12648 M16C_dadc, // Decimal add with carry
12649 M16C_dadd, // Decimal add without carry
12650 M16C_dec, // Decrement
12651 M16C_div, // Signed divide
12652 M16C_divu, // Unsigned divide
12653 M16C_divx, // Signed divide (extension)
12654 M16C_dsbb, // Decimal subtract with borrow
12655 M16C_dsub, // Decimal subtract without borrow
12656 M16C_enter, // Build stack frame
12657 M16C_exitd, // Deallocate stack frame
12658 M16C_exts, // Extend sign
12659 M16C_fclr, // Clear flag register bit
12660 M16C_fset, // Set flag register bit
12661 M16C_inc, // Increment
12662 M16C_int, // Interrupt by INT instruction
12663 M16C_into, // Interrupt on overflow
12664 M16C_jcnd, // Jump on condition
12665 // conds (order is important; don't shuffle) (same order as the enum am_cnd8_t in m16c.hpp)
12666 M16C_jgeu, // Conditional jump: Equal to or greater than; C == 1
12667 M16C_jgtu, // Conditional jump: Greater than
12668 M16C_jeq, // Conditional jump: Equal to; Z == 1
12669 M16C_jn, // Conditional jump: Negative
12670 M16C_jle, // Conditional jump: Equal to or smaller than (signed)
12671 M16C_jo, // Conditional jump: Overflow; O == 1
12672 M16C_jge, // Conditional jump: Equal to or greater than (signed)
12673 M16C_jltu, // Conditional jump: Smaller than; C == 0
12674 M16C_jleu, // Conditional jump: Equal to or smaller than
12675 M16C_jne, // Conditional jump: Not equal; Z == 0
12676 M16C_jpz, // Conditional jump: Positive or zero
12677 M16C_jgt, // Conditional jump: Greater than (signed)
12678 M16C_jno, // Conditional jump: No overflow; O == 0
12679 M16C_jlt, // Conditional jump: Smaller than (signed)
12680 // ---
12681 M16C_jmp, // Unconditional jump
12682 M16C_jmpi, // Jump indirect
12683 M16C_jmps, // Jump to special page
12684 M16C_jsr, // Subroutine call
12685 M16C_jsri, // Indirect subroutine call
12686 M16C_jsrs, // Special page subroutine call
12687 M16C_ldc, // Transfer to control register
12688 M16C_ldctx, // Restore context
12689 M16C_lde, // Transfer from extended data area
12690 M16C_ldintb, // Load to INTB register
12691 M16C_ldipl, // Set interrupt enable level
12692 M16C_mov, // Transfer
12693 M16C_mova, // Transfer effective address
12694 M16C_movhh, // Xfer 4-bit data: src(8-bits)'s 4 hi bits -> dest(8-bits)'s 4 hi bits.
12695 M16C_movhl, // Xfer 4-bit data: src(8-bits)'s 4 hi bits -> dest(8-bits)'s 4 lo bits.
12696 M16C_movlh, // Xfer 4-bit data: src(8-bits)'s 4 lo bits -> dest(8-bits)'s 4 hi bits.
12697 M16C_movll, // Xfer 4-bit data: src(8-bits)'s 4 lo bits -> dest(8-bits)'s 4 lo bits.
12698 M16C_mul, // Signed multiply
12699 M16C_mulu, // Unsigned multiply
12700 M16C_neg, // Two's complement
12701 M16C_nop, // No operation
12702 M16C_not, // Invert all bits
12703 M16C_or, // Logically OR
12704 M16C_pop, // Restore register/memory
12705 M16C_popc, // Restore control register
12706 M16C_popm, // Restore multiple registers
12707 M16C_push, // Save register/memory/immediate data
12708 M16C_pusha, // Save effective address
12709 M16C_pushc, // Save control register
12710 M16C_pushm, // Save multiple registers
12711 M16C_reit, // Return from interrupt
12712 M16C_rmpa, // Calculate sum-of-products
12713 M16C_rolc, // Rotate left with carry
12714 M16C_rorc, // Rotate right with carry
12715 M16C_rot, // Rotate
12716 M16C_rts, // Return from subroutine
12717 M16C_sbb, // Subtract with borrow
12718 M16C_sbjnz, // Subtract & conditional jump
12719 M16C_sha, // Shift arithmetic
12720 M16C_shl, // Shift logical
12721 M16C_smovb, // Transfer string backward
12722 M16C_smovf, // Transfer string forward
12723 M16C_sstr, // Store string
12724 M16C_stc, // Transfer from control register
12725 M16C_stctx, // Save context
12726 M16C_ste, // Store to extended data area
12727 M16C_stnz, // Conditional transfer: store on not zero
12728 M16C_stz, // Conditional transfer: store on zero
12729 M16C_stzx, // Conditional transfer: store on zero extension
12730 M16C_sub, // Subtract without borrow
12731 M16C_tst, // Test
12732 M16C_und, // Interrupt for undefined instruction
12733 M16C_wait, // Wait
12734 M16C_xchg, // Exchange
12735 M16C_xor, // Exclusive OR
12736 // M16C/80 specifics
12739 M16C_brk2, // Debugger-only interrupt
12743 M16C_freit, // Fast return from interrupt
12758 // conds (order is important; don't shuffle) (same order as the enum am_cnd8_t in m16c.hpp)
12759 M16C_scgeu, // Conditional store: Equal to or greater than; C == 1
12760 M16C_scgtu, // Conditional store: Greater than
12761 M16C_sceq, // Conditional store: Equal to; Z == 1
12762 M16C_scn, // Conditional store: Negative
12763 M16C_scle, // Conditional store: Equal to or smaller than (signed)
12764 M16C_sco, // Conditional store: Overflow; O == 1
12765 M16C_scge, // Conditional store: Equal to or greater than (signed)
12766 M16C_scltu, // Conditional store: Smaller than; C == 0
12767 M16C_scleu, // Conditional store: Equal to or smaller than
12768 M16C_scne, // Conditional store: Not equal; Z == 0
12769 M16C_scpz, // Conditional store: Positive or zero
12770 M16C_scgt, // Conditional store: Greater than (signed)
12771 M16C_scno, // Conditional store: No overflow; O == 0
12772 M16C_sclt, // Conditional store: Smaller than (signed)
12773 // ---
12779 // M32C specifics
12780 M16C_shanc, // Shift arithmetic no carry
12781 M16C_shlnc, // Shift logical no carry
12782 // R32C specifics
12804};
12805// exporting the ins.cpp array
12806// m32r instructions declaration
12807enum
12808{
12809 m32r_null = 0, // Null instruction
12810 m32r_add, // Add
12811 m32r_add3, // Add 3-operand
12812 m32r_addi, // Add immediate
12813 m32r_addv, // Add with overflow checking
12814 m32r_addv3, // Add 3-operand with overflow checking
12815 m32r_addx, // Add with carry
12816 m32r_and, // AND
12817 m32r_and3, // AND 3-operand
12818 m32r_bc, // Branch on C-bit
12819 m32r_beq, // Branch on equal
12820 m32r_beqz, // Branch on equal zero
12821 m32r_bgez, // Branch on greater than or equal zero
12822 m32r_bgtz, // Branch on greater than zero
12823 m32r_bl, // Branch and link
12824 m32r_blez, // Branch on less than or equal zero
12825 m32r_bltz, // Branch on less than zero
12826 m32r_bnc, // Branch on not C-bit
12827 m32r_bne, // Branch on not equal
12828 m32r_bnez, // Branch on not equal zero
12829 m32r_bra, // Branch
12830 m32r_cmp, // Compare
12831 m32r_cmpi, // Compare immediate
12832 m32r_cmpu, // Compare unsigned
12833 m32r_cmpui, // Compare unsigned immediate
12834 m32r_div, // Divide
12835 m32r_divu, // Divide unsigned
12836 m32r_jl, // Jump and link
12837 m32r_jmp, // Jump
12838 m32r_ld, // Load
12839 m32r_ld24, // Load 24-bit immediate
12840 m32r_ldb, // Load byte
12841 m32r_ldh, // Load halfword
12842 m32r_ldi, // Load immediate
12843 m32r_ldub, // Load unsigned byte
12844 m32r_lduh, // Load unsigned halfword
12845 m32r_lock, // Load locked
12846 m32r_machi, // Multiply-accumulate high-order halfwords
12847 m32r_maclo, // Multiply-accumulate low-order halfwords
12848 m32r_macwhi, // Multiply-accumulate word and high-order halfword
12849 m32r_macwlo, // Multiply-accumulate word and low-order halfword
12850 m32r_mul, // Multiply
12851 m32r_mulhi, // Multiply high-order halfwords
12852 m32r_mullo, // Multiply low-order halfwords
12853 m32r_mulwhi, // Multiply word high-order halfwords
12854 m32r_mulwlo, // Multiply word low-order halfwords
12855 m32r_mv, // Move register
12856 m32r_mvfachi, // Move from accumulator high-order word
12857 m32r_mvfaclo, // Move from accumulator low-order word
12858 m32r_mvfacmi, // Move from accumulator middle-order word
12859 m32r_mvfc, // Move from control register
12860 m32r_mvtachi, // Move to accumulator high-order word
12861 m32r_mvtaclo, // Move to accumulator low-order word
12862 m32r_mvtc, // Move to control register
12863 m32r_neg, // Negate
12864 m32r_nop, // No operation
12865 m32r_not, // Logical NOT
12866 m32r_or, // OR
12867 m32r_or3, // OR 3-operand
12868 m32r_push, // Push, mnem for st reg, @-sp
12869 m32r_pop, // Pop, mnem for ld reg, @sp+
12870 m32r_rac, // Round accumulator
12871 m32r_rach, // Round accumulator halfword
12872 m32r_rem, // Remainder
12873 m32r_remu, // Remainder unsigned
12874 m32r_rte, // Return from EIT
12875 m32r_seth, // Set high-order 16-bit
12876 m32r_sll, // Shift left logical
12877 m32r_sll3, // Shift left logical 3-operand
12878 m32r_slli, // Shift left logical immediate
12879 m32r_sra, // Shirt right arithmetic
12880 m32r_sra3, // Shirt right arithmetic 3-operand
12881 m32r_srai, // Shirt right arithmetic immediate
12882 m32r_srl, // Shift right logical
12883 m32r_srl3, // Shift right logical 3-operand
12884 m32r_srli, // Shift right logical immediate
12885 m32r_st, // Store
12886 m32r_stb, // Store byte
12887 m32r_sth, // Store halfword
12888 m32r_sub, // Substract
12889 m32r_subv, // Substract with overflow checking
12890 m32r_subx, // Substract with borrow
12891 m32r_trap, // Trap
12892 m32r_unlock, // Store unlocked
12893 m32r_xor, // Exclusive OR
12894 m32r_xor3, // Exclusive OR 3-operand
12895 // M32RX :
12903 m32rx_machi, // 'machi' 3-operand
12904 m32rx_maclo, // 'maclo' 3-operand
12905 m32rx_macwhi, // 'macwhi' 3-operand
12906 m32rx_macwlo, // 'macwlo' 3-operand
12907 m32rx_mulhi, // 'mulhi' 3-operand
12908 m32rx_mullo, // 'mullo' 3-operand
12909 m32rx_mulwhi, // 'mulwhi' 3-operand
12910 m32rx_mulwlo, // 'mulwlo' 3-operand
12911 m32rx_mvfachi, // 'mvfachi' 3-operand
12912 m32rx_mvfaclo, // 'mvfaclo' 3-operand
12913 m32rx_mvfacmi, // 'mvfacmi' 3-operand
12914 m32rx_mvtachi, // 'mvtachi' 3-operand
12915 m32rx_mvtaclo, // 'mvtaclo' 3-operand
12916 m32rx_rac, // 'rac' 3 operand
12917 m32rx_rach, // 'rach' 3 operand
12929// Floating point
12930 m32r_fadd, // Floating-point add
12931 m32r_fsub, // Floating-point subtract
12932 m32r_fmul, // Floating-point multiply
12933 m32r_fdiv, // Floating-point divede
12934 m32r_fmadd, // Floating-point multiply and add
12935 m32r_fmsub, // Floating-point multiply and subtract
12936 m32r_itof, // Integer to float
12937 m32r_utof, // Unsigned integer to float
12938 m32r_ftoi, // Float to integer
12939 m32r_ftos, // Float to short
12940 m32r_fcmp, // Floating-point compare
12941 m32r_fcmpe, // Floating-point compare with exeption if unordered
12942// Bit Operation Instructions
12943 m32r_bset, // Bit set
12944 m32r_bclr, // Bit clear
12945 m32r_btst, // Bit test
12946 m32r_setpsw, // Set PSW
12947 m32r_clrpsw, // Clear PSW
12949};
12950enum
12951{
12952 m740_null = 0, // null instruction
12953 m740_adc, // add with carry
12954 m740_and, // logical and
12955 m740_asl, // arithmetic shift left
12956 m740_bbc, // branch on bit clear
12957 m740_bbs, // branch on bit set
12958 m740_bcc, // branch on carry clear
12959 m740_bcs, // branch on carry set
12960 m740_beq, // branch on equal
12961 m740_bit, // test bit in memory with accumulator
12962 m740_bmi, // branch on result minus
12963 m740_bne, // branch on not equal
12964 m740_bpl, // branch on result plus
12965 m740_bra, // branch always
12966 m740_brk, // force break
12967 m740_bvc, // branch on overflow clear
12968 m740_bvs, // branch on overflow set
12969 m740_clb, // clear bit
12970 m740_clc, // clear carry flag
12971 m740_cld, // clear decimal mode
12972 m740_cli, // clear interrupt disable status
12973 m740_clt, // clear transfer flag
12974 m740_clv, // clear overflow flag
12975 m740_cmp, // compare
12976 m740_com, // complement
12977 m740_cpx, // compare memory and index register X
12978 m740_cpy, // compare memory and index register Y
12979 m740_dec, // decrement by one
12980 m740_dex, // decrement index register X by one
12981 m740_dey, // decrement index register Y by one
12982 m740_div, // divide memory by accumulator
12983 m740_eor, // exclusive or memory with accumulator
12984 m740_inc, // increment by one
12985 m740_inx, // increment index register X by one
12986 m740_iny, // increment index register Y by one
12987 m740_jmp, // jump
12988 m740_jsr, // jump to subroutine
12989 m740_lda, // load accumulator with memory
12990 m740_ldm, // load immediate data to memory
12991 m740_ldx, // load index register X from memory
12992 m740_ldy, // load index register Y from memory
12993 m740_lsr, // logical shift right
12994 m740_mul, // multiply accumulator and memory
12995 m740_nop, // no operation
12996 m740_ora, // or memory with accumulator
12997 m740_pha, // push accumulator on stack
12998 m740_php, // push processor status on stack
12999 m740_pla, // pull accumulator from stack
13000 m740_plp, // pull processor status from stack
13001 m740_rol, // rotate one bit left
13002 m740_ror, // rotate one bit right
13003 m740_rrf, // rotate right of four bits
13004 m740_rti, // return from interrupt
13005 m740_rts, // return from subroutine
13006 m740_sbc, // subtract with carry
13007 m740_seb, // set bit
13008 m740_sec, // set carry flag
13009 m740_sed, // set decimal mode
13010 m740_sei, // set interrupt disable flag
13011 m740_set, // set transfert flag
13012 m740_sta, // store accumulator in memory
13013 m740_stp, // stop
13014 m740_stx, // store index register X in memory
13015 m740_sty, // store index register Y in memory
13016 m740_tax, // transfert accumulator to index register X
13017 m740_tay, // transfert accumulator to index register Y
13018 m740_tst, // test for negative or zero
13019 m740_tsx, // transfert stack pointer to index register X
13020 m740_txa, // transfert index register X to accumulator
13021 m740_txs, // transfert index register X to stack pointer
13022 m740_tya, // transfert index register Y to accumulator
13023 m740_wit, // wait
13025};
13026enum
13027{
13028 // 7700 :
13029 m7700_null = 0, // null instruction
13030 m7700_adc, // addition with carry
13031 m7700_and, // logical AND
13032 m7700_asl, // arithmetic shift left
13033 m7700_bbc, // branch on bit clear
13034 m7700_bbs, // branch on bit set
13035 m7700_bcc, // branch on carry clear
13036 m7700_bcs, // branch on carry set
13037 m7700_beq, // branch on equal
13038 m7700_bmi, // branch on result minus
13039 m7700_bne, // branch on not equal
13040 m7700_bpl, // branch on result plus
13041 m7700_bra, // branch always
13042 m7700_brk, // force break
13043 m7700_bvc, // branch on overflow clear
13044 m7700_bvs, // branch on overflow set
13045 m7700_clb, // clear bit
13046 m7700_clc, // clear carry flag
13047 m7700_cli, // clear interrupt disable status
13048 m7700_clm, // clear m flag
13049 m7700_clp, // clear processor status
13050 m7700_clv, // clear overflow flag
13051 m7700_cmp, // compare
13052 m7700_cpx, // compare memory and index register X
13053 m7700_cpy, // compare memory and index register Y
13054 m7700_dec, // decrement by one
13055 m7700_dex, // decrement index register X by one
13056 m7700_dey, // decrement index register Y by one
13057 m7700_div, // divide
13058 m7700_eor, // exclusive OR memory with accumulator
13059 m7700_inc, // increment by one
13060 m7700_inx, // increment index register X by one
13061 m7700_iny, // increment index register Y by one
13062 m7700_jmp, // jump
13063 m7700_jsr, // jump to subroutine
13064 m7700_lda, // load accumulator from memory
13065 m7700_ldm, // load immediate to memory
13066 m7700_ldt, // load immediate to data bank register
13067 m7700_ldx, // load index register X from memory
13068 m7700_ldy, // load index register Y from memory
13069 m7700_lsr, // logical shift right
13070 m7700_mpy, // multiply
13071 m7700_mvn, // move negative
13072 m7700_mvp, // move positive
13073 m7700_nop, // no operation
13074 m7700_ora, // OR memory with accumulator
13075 m7700_pea, // push effective address
13076 m7700_pei, // push effective indirect address
13077 m7700_per, // push effective program counter relative address
13078 m7700_pha, // push accumulator A on stack
13079 m7700_phb, // push accumulator B on stack
13080 m7700_phd, // push direct page register on stack
13081 m7700_phg, // push program bank register on stack
13082 m7700_php, // push processor status on stack
13083 m7700_pht, // push data bank register on stack
13084 m7700_phx, // push index register X on stack
13085 m7700_phy, // push index register Y on stack
13086 m7700_pla, // pull accumulator A from stack
13087 m7700_plb, // pull accumulator B from stack
13088 m7700_pld, // pull direct page register from stack
13089 m7700_plp, // pull processor status from stack
13090 m7700_plt, // pull data bank register from stack
13091 m7700_plx, // pull index register X from stack
13092 m7700_ply, // pull index register Y from stack
13093 m7700_psh, // push
13094 m7700_pul, // pull
13095 m7700_rla, // rotate left accumulator A
13096 m7700_rol, // rotate one bit left
13097 m7700_ror, // rotate one bit right
13098 m7700_rti, // return from interrupt
13099 m7700_rtl, // return from subroutine long
13100 m7700_rts, // return from subroutine
13101 m7700_sbc, // subtract with carry
13102 m7700_seb, // set bit
13103 m7700_sec, // set carry flag
13104 m7700_sei, // set interrupt disable status
13105 m7700_sem, // set m flag
13106 m7700_sep, // set processor status
13107 m7700_sta, // store accumulator in memory
13108 m7700_stp, // stop
13109 m7700_stx, // store index register X in memory
13110 m7700_sty, // store index register Y in memory
13111 m7700_tad, // transfer accumulator A to direct page register
13112 m7700_tas, // transfer accumulator A to stack pointer
13113 m7700_tax, // transfer accumulator A to index register X
13114 m7700_tay, // transfer accumulator A to index register Y
13115 m7700_tbd, // transfer accumulator B to direct page register
13116 m7700_tbs, // transfer accumulator B to stack pointer
13117 m7700_tbx, // transfer accumulator B to index register X
13118 m7700_tby, // transfer accumulator B to index register Y
13119 m7700_tda, // transfer direct page register to accumulator A
13120 m7700_tdb, // transfer direct page register to accumulator B
13121 m7700_tsa, // transfer stack pointer to accumulator A
13122 m7700_tsb, // transfer stack pointer to accumulator B
13123 m7700_tsx, // transfer stack pointer to index register X
13124 m7700_txa, // transfer index register X to accumulator A
13125 m7700_txb, // transfer index register X to accumulator B
13126 m7700_txs, // transfer index register X to stack pointer
13127 m7700_txy, // transfer index register X to Y
13128 m7700_tya, // transfer index register Y to accumulator A
13129 m7700_tyb, // transfer index register Y to accumulator B
13130 m7700_tyx, // transfer index register Y to X
13131 m7700_wit, // wait
13132 m7700_xab, // exchange accumulator A and B
13133 // 7750 :
13134 m7750_asr, // arithmetic shift right
13135 m7750_divs, // divide with sign
13136 m7750_exts, // extention with sign
13137 m7750_extz, // extention zero
13138 m7750_mpys, // multiply with sign
13140};
13141/*
13142 * Interactive disassembler (IDA).
13143 * Copyright (c) 1990-2026 Hex-Rays
13144 * ALL RIGHTS RESERVED.
13145 *
13146 * MITSUBISHI 7900 Family
13147 */
13148enum
13149{
13150m7900_null = 0, // Unknown Operation
13151m7900_abs, // ABSolute
13152m7900_absd, // ABSolute at Double-word
13153m7900_adc, // ADd with Carry
13154m7900_adcb, // ADd with Carry at Byte
13155m7900_adcd, // ADd with Carry at Double-word
13156m7900_add, // Addition
13157m7900_addb, // ADD at Byte
13158m7900_addd, // ADD at Double-word
13159m7900_addm, // ADD immediate and Memory
13160m7900_addmb, // ADD immediate and Memory at Byte
13161m7900_addmd, // ADD immediate and Memory at Double-word
13162m7900_adds, // ADD Stack pointer and immediate
13163m7900_addx, // ADD index register X and immediate
13164m7900_addy, // ADD index register Y and immediate
13165m7900_and, // Logical AND
13166m7900_andb, // logical AND between immediate (Byte)
13167m7900_andm, // logical AND between immediate value and Memory
13168m7900_andmb, // logical AND between immediate value and Memory (Byte)
13169m7900_andmd, // logical AND between immediate value and Memory (Double word)
13170m7900_asl, // Arithmetic Shift to Left
13171m7900_asln, // Arithmetic Shift to Left by n bits
13172m7900_asldn, // Arithmetic Shift to Left by n bits (Double word)
13173m7900_asr, // Arithmeticshift to the right
13174m7900_asrn, // Arithmetic Shift to Right by n bits
13175m7900_asrdn, // Arithmetic Shift to Right by n bits (Double word)
13176m7900_bbc, // Branch on Bit Clear
13177m7900_bbcb, // Branch on Bit Clear (Byte)
13178m7900_bbs, // Branch on Bit Set
13179m7900_bbsb, // Branch on Bit Set (Byte)
13180m7900_bcc, // Branch on Carry Clear
13181m7900_bcs, // Branch on Carry Set
13182m7900_beq, // Branch on EQual
13183m7900_bge, // Branch on Greater or Equal
13184m7900_bgt, // Branch on Greater Than
13185m7900_bgtu, // Branch on Greater Than with Unsign
13186m7900_ble, // Branch on Less or Equal
13187m7900_bleu, // Branch on Less Equal with Unsign
13188m7900_blt, // Branch on Less Than
13189m7900_bmi, // Branch on result MInus
13190m7900_bne, // Branch on Not Equal
13191m7900_bpl, // Branch on result PLus
13192m7900_bra, // BRanch Always
13193m7900_bral, // BRanch Always
13194m7900_brk, // force BReaK
13195m7900_bsc, // Branch on Single bit Clear
13196m7900_bsr, // Branch to SubRoutine
13197m7900_bss, // Branch on Single bit Set
13198m7900_bvc, // Branch on oVerflow Clear
13199m7900_bvs, // Branch on oVerflow Set
13200m7900_cbeq, // Compare immediate and Branch on EQual
13201m7900_cbeqb, // Compare immediate and Branch on EQual at Byte
13202m7900_cbne, // Compare immediate and Branch on Not Equal
13203m7900_cbneb, // Compare immediate and Branch on Not Equal at Byte
13204m7900_clc, // CLear Carry flag
13205m7900_cli, // CLear Interrupt disable status
13206m7900_clm, // CLear M flag
13207m7900_clp, // CLear Processor status
13208m7900_clr, // CLeaR accumulator
13209m7900_clrb, // CLeaR accumulator at Byte
13210m7900_clrm, // CLeaR Memory
13211m7900_clrmb, // CLeaR Memory at Byte
13212m7900_clrx, // CLeaR index register X
13213m7900_clry, // CLeaR index register Y
13214m7900_clv, // CLear oVerflow flag
13215m7900_cmp, // CoMPare
13216m7900_cmpb, // CoMPare at Byte
13217m7900_cmpd, // CoMPare at Double-word
13218m7900_cmpm, // CoMPare immediate with Memory
13219m7900_cmpmb, // CoMPare immediate with Memory at Byte
13220m7900_cmpmd, // CoMPare immediate with Memory at Double-word
13221m7900_cpx, // ComPare memory and index register X
13222m7900_cpy, // ComPare memory and index register Y
13223m7900_debne, // DEcrement memory and Branch on Not Equal
13224m7900_dec, // DECrement by one
13225m7900_dex, // DEcrement index register X by one
13226m7900_dey, // DEcrement index register Y by one
13227m7900_div, // DIVide unsigned
13228m7900_divs, // DIVide with Sign
13229m7900_dxbne, // Decrement index register X and Branch on Not Equal
13230m7900_dybne, // Decrement index register Y and Branch on Not Equal
13231m7900_eor, // Exclusive OR memory with accumulator
13232m7900_eorb, // Exclusive OR immediate with accumulator at Byte
13233m7900_eorm, // Exclusive OR immediate with Memory
13234m7900_eormb, // Exclusive OR immediate with Memory at Byte
13235m7900_eormd, // Exclusive OR immediate with Memory at Double-word
13236m7900_exts, // EXTension Sign
13237m7900_extsd, // EXTension Sign at Double-word
13238m7900_extz, // EXTension Zero
13239m7900_extzd, // EXTension Zero at Double-word
13240m7900_inc, // INCrement by one
13241m7900_inx, // INcrement index register X by one
13242m7900_iny, // INcrement index register y by one
13245m7900_jsr, // Jump to SubRoutine
13246m7900_jsrl, // Jump to SubRoutine
13247m7900_lda, // LoaD Accumulator from memory
13248m7900_ldab, // LoaD Accumulator from memory at Byte
13249m7900_ldad, // LoaD Accumulator from memory at Double-word
13250m7900_lddn, // LoaD immediate to Direct page register n
13251m7900_ldt, // LoaD immediate to DaTa bank register
13252m7900_ldx, // LoaD index register X from memory
13253m7900_ldxb, // LoaD index register X from memory at Byte
13254m7900_ldy, // LoaD index register Y from memory
13255m7900_ldyb, // LoaD index register Y from memory at Byte
13256m7900_lsr, // Logical Shift Right
13257m7900_lsrn, // Logical n bits Shift Right
13258m7900_lsrdn, // Logical n bits Shift Right at Double-word
13259m7900_movm, // MOVe Memory to memory
13260m7900_movmb, // MOVe Memory to memory at Byte
13261m7900_movr, // MOVe Repeat memory to memory
13262m7900_movrb, // MOVe Repeat memory to memory at Byte
13263m7900_mpy, // MultiPlY
13264m7900_mpys, // MultiPlY with Sign
13265m7900_mvn, // MoVe Negative
13266m7900_mvp, // MoVe Positive
13267m7900_neg, // NEGative
13268m7900_negd, // NEGative at Double-word
13269m7900_nop, // No OPeration
13270m7900_ora, // OR memory with Accumulator
13271m7900_orab, // OR immediate with Accumulator at Byte
13272m7900_oram, // OR immediAte with Memory
13273m7900_oramb, // OR immediAte with Memory at Byte
13274m7900_oramd, // OR immediAte with Memory at Double-word
13275m7900_pea, // Push Effective Address
13276m7900_pei, // Push Effective Indirect address
13277m7900_per, // Push Effective program counter Relative address
13278m7900_pha, // PusH accumulator A on stack
13279m7900_phb, // PusH accumulator B on stack
13280m7900_phd, // PusH Direct page register on stack
13281m7900_phdn, // PusH Direct page register n on stack
13282m7900_phg, // PusH proGram bank register on stack
13283m7900_phldn, // PusH dpr n to stack and Load immediate to Dpr n
13284m7900_php, // PusH Processor status on stack
13285m7900_pht, // PusH daTa bank register on stack
13286m7900_phx, // PusH index register X on stack
13287m7900_phy, // PusH index register Y on stack
13288m7900_pla, // PuLl accumulator A from stack
13289m7900_plb, // PuLl accumulator B from stack
13290m7900_pld, // PuLl Direct page register from stack
13291m7900_pldn, // PuLl Direct page register n from stack
13292m7900_plp, // PuLl Processor status from stack
13293m7900_plt, // PuLl daTa bank register from stack
13294m7900_plx, // PuLl index register X from stack
13295m7900_ply, // PuLl index register Y from stack
13298m7900_rla, // Rotate Left accumulator A
13299m7900_rmpa, // Repeat Multiply and Accumulate
13300m7900_rol, // ROtate one bit Left
13301m7900_roln, // n bits ROtate Left
13302m7900_roldn, // n bits ROtate Left at Double-word
13303m7900_ror, // ROtate one bit Right
13304m7900_rorn, // n bits ROtate Right
13305m7900_rordn, // n bits ROtate Right at Double-word
13306m7900_rti, // Return from Interrupt
13307m7900_rtl, // ReTurn from subroutine Long
13308m7900_rtld, // ReTurn from subroutine Long and pull Direct page register n
13309m7900_rts, // ReTurn from Subroutine
13310m7900_rtsdn, // ReTurn from Subroutine and pull Direct page register n
13311m7900_sbc, // SuBtract with Carry
13312m7900_sbcb, // SuBtract with Carry at Byte
13313m7900_sbcd, // SuBtract with Carry at Double-word
13314m7900_sec, // SEt Carry flag
13315m7900_sei, // SEt Interrupt disable status
13316m7900_sem, // SEt M flag
13317m7900_sep, // SEt Processor status
13318m7900_sta, // STore Accumulator in memory
13319m7900_stab, // STore Accumulator in memory at Byte
13320m7900_stad, // STore Accumulator in memory at Double-word
13322m7900_stx, // STore index register X in memory
13323m7900_sty, // STore index register Y in memory
13324m7900_sub, // SUBtract
13325m7900_subb, // SUBtract at Byte
13326m7900_subd, // SUBtract at Double-word
13327m7900_subm, // SUBtract immediate from Memory
13328m7900_submb, // SUBtract immediate from Memory at Byte
13329m7900_submd, // SUBtract immediate from Memory at Double-word
13330m7900_subs, // SUBtract Stack pointer
13331m7900_subx, // SUBtract immediate from index register X
13332m7900_suby, // SUBtract immediate from index register Y
13333m7900_tadn, // Transfer accumulator A to Direct page register n
13334m7900_tas, // Transfer accumulator A to Stack pointer
13335m7900_tax, // Transfer accumulator A to index register X
13336m7900_tay, // Transfer accumulator A to index register Y
13337m7900_tbdn, // Transfer accumulator B to Direct page register n
13338m7900_tbs, // Transfer accumulator B to Stack pointer
13339m7900_tbx, // Transfer accumulator B to index register X
13340m7900_tby, // Transfer accumulator B to index register Y
13341m7900_tdan, // Transfer Direct page register n to accumulator A
13342m7900_tdbn, // Transfer Direct page register n to accumulator B
13343m7900_tds, // Transfer Direct page register to Stack pointer
13344m7900_tsa, // Transfer Stack pointer to accumulator A
13345m7900_tsb, // Transfer Stack pointer to accumulator B
13346m7900_tsd, // Transfer Stack pointer to Direct page register
13347m7900_tsx, // Transfer Stack pointer to index register X
13348m7900_txa, // Transfer index register X to accumulator A
13349m7900_txb, // Transfer index register X to accumulator B
13350m7900_txs, // Transfer index register X to Stack pointer
13351m7900_txy, // Transfer index register X to Y
13352m7900_tya, // Transfer index register Y to accumulator A
13353m7900_tyb, // Transfer index register Y to accumulator B
13354m7900_tyx, // Transfer index register Y to X
13356m7900_xab, // eXchange accumulator A and B
13358 };
13359enum
13360{
13361 st9_null = 0, // Unknown Operation.
13362 st9_ld, // Load.
13363 st9_ldw, // Load word.
13364 st9_ldpp, // Load (using CSR) => (using CSR).
13365 st9_ldpd, // Load (using DPRx) => (using CSR).
13366 st9_lddp, // Load (using CSR) => (using DPRx).
13367 st9_lddd, // Load (using DPRx) => (using DPRx).
13368 st9_add, // Add.
13369 st9_addw, // Add Word.
13370 st9_adc, // Add with Carry.
13371 st9_adcw, // Add Word with Carry.
13372 st9_sub, // Substract.
13373 st9_subw, // Substract Word.
13374 st9_sbc, // Substract with Carry.
13375 st9_sbcw, // Substract Word with Carry.
13376 st9_and, // Logical AND.
13377 st9_andw, // Logical Word AND.
13378 st9_or, // Logical OR.
13379 st9_orw, // Logical Word OR.
13380 st9_xor, // Logical Exclusive OR.
13381 st9_xorw, // Logical Word Exclusive OR.
13382 st9_cp, // Compare.
13383 st9_cpw, // Compare Word.
13384 st9_tm, // Test under Mask.
13385 st9_tmw, // Test Word under Mask.
13386 st9_tcm, // Test Complement under Mask.
13387 st9_tcmw, // Test Word Complement under Mask.
13388 st9_inc, // Increment.
13389 st9_incw, // Increment Word.
13390 st9_dec, // Decrement.
13391 st9_decw, // Decrement Word.
13392 st9_sla, // Shift Left Arithmetic.
13393 st9_slaw, // Shift Word Left Arithmetic.
13394 st9_sra, // Shift Right Arithmetic.
13395 st9_sraw, // Shift Word Right Arithmetic.
13396 st9_rrc, // Rotate Right through Carry.
13397 st9_rrcw, // Rotate Word Right through Carry.
13398 st9_rlc, // Rotate Left through Carry.
13399 st9_rlcw, // Rotate Word Left through Carry.
13400 st9_ror, // Rotate Right.
13401 st9_rol, // Rotate Left.
13402 st9_clr, // Clear Register.
13403 st9_cpl, // Complement Register.
13404 st9_swap, // Swap Nibbles.
13405 st9_da, // Decimal ajust.
13406 st9_push, // Push on System Stack.
13407 st9_pushw, // Push Word on System Stack.
13408 st9_pea, // Push Effective Address on System Stack.
13409 st9_pop, // Pop from System Stack.
13410 st9_popw, // Pop Word from System Stack.
13411 st9_pushu, // Push on User Stack.
13412 st9_pushuw, // Push Word on User Stack.
13413 st9_peau, // Push Effective Address on User Stack.
13414 st9_popu, // Pop from User Stack.
13415 st9_popuw, // Pop Word from User Stack.
13416 st9_link, // Move System Stack Pointer upward; support for high-level language.
13417 st9_unlink, // Move System Stack Pointer backward; support for high-level language.
13418 st9_linku, // Move User Stack Pointer upward; support for high-level language.
13419 st9_unlinku, // Move User Stack Pointer backward; support for high-level language.
13420 st9_mul, // Multiply 8x8.
13421 st9_div, // Divide 8x8.
13422 st9_divws, // Divide Word Stepped 32/16.
13423 st9_bset, // Bit Set.
13424 st9_bres, // Bit Reset .
13425 st9_bcpl, // Bit Complement.
13426 st9_btset, // Bit Test and Set.
13427 st9_bld, // Bit Load.
13428 st9_band, // Bit AND.
13429 st9_bor, // Bit OR.
13430 st9_bxor, // Bit XOR.
13431 st9_ret, // Return from Subroutine.
13432 st9_rets, // Inter-segment Return to Subroutine.
13433 st9_iret, // Return from Interrupt.
13434 st9_jrcc, // Jump Relative if Condition ``cc'' is Met.
13435 st9_jpcc, // Jump if Condition ``cc'' is Met.