IDA C++ SDK 9.2
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)