Commit | Line | Data |
---|---|---|
831b02f6 NC |
1 | .text |
2 | # Prefixes | |
3 | # O16 A32 OV REX OPCODE ; NOTES | |
4 | ||
5 | # CALL | |
6 | CALLq *(%r8) # -- -- -- 41 FF 10 ; REX to access upper reg. | |
7 | CALLq *(%rax) # -- -- -- -- FF 10 | |
8 | CALLq *(%r8) # -- -- -- 41 FF 10 ; REX to access upper reg. | |
9 | CALLq *(%rax) # -- -- -- -- FF 10 | |
858bc62d AJ |
10 | |
11 | # RET | |
831b02f6 NC |
12 | lret # -- -- -- -- CB |
13 | retq # -- -- -- -- C3 | |
858bc62d AJ |
14 | |
15 | # IRET | |
831b02f6 NC |
16 | IRET # -- -- -- -- CF ; 32-bit operand size |
17 | IRETW # 66 -- -- -- CF ; O16 for 16-bit operand size | |
18 | IRETQ # -- -- -- 48 CF ; REX for 64-bit operand size | |
858bc62d AJ |
19 | |
20 | # CMP | |
21 | ||
22 | # MOV | |
4cc91dba L |
23 | MOVw %cs,(%r8) # -- -- -- 41 8C 08 ; REX to access upper reg. |
24 | MOVw %cs,(%rax) # -- -- -- -- 8C 08 | |
25 | MOVw %ss,(%r8) # -- -- -- 41 8C 10 ; REX to access upper reg. | |
26 | MOVw %ss,(%rax) # -- -- -- -- 8C 10 | |
27 | MOVw %fs,(%r8) # -- -- -- 41 8C 20 ; REX to access upper reg. | |
28 | MOVw %fs,(%rax) # -- -- -- -- 8C 20 | |
29 | MOVw (%r8),%ss # -- -- -- 41 8E 10 ; REX to access upper reg. | |
30 | MOVw (%rax),%ss # -- -- -- -- 8E 10 | |
31 | MOVw (%r8),%fs # -- -- -- 41 8E 20 ; REX to access upper reg. | |
32 | MOVw (%rax),%fs # -- -- -- -- 8E 20 | |
831b02f6 NC |
33 | MOVb $0,(%r8) # -- -- -- 41 C6 00 00 ; REX to access upper reg. |
34 | MOVb $0,(%rax) # -- -- -- -- C6 00 00 | |
858bc62d AJ |
35 | MOVw $0x7000,(%r8) # 66 -- -- 41 C7 00 00 70 ; REX to access upper reg. O16 for 16-bit operand size |
36 | MOVw $0x7000,(%rax) # 66 -- -- -- C7 00 00 70 ; O16 for 16-bit operand size | |
37 | MOVl $0x70000000,(%r8) # -- -- -- 41 C7 00 00 00 00 70 ; REX to access upper reg. | |
38 | MOVl $0x70000000,(%rax) # -- -- -- -- C7 00 00 00 00 70 | |
39 | MOVb $0,(%r8) # -- -- -- 41 C6 00 00 ; REX to access upper reg. | |
40 | MOVb $0,(%rax) # -- -- -- -- C6 00 00 | |
831b02f6 NC |
41 | MOVw $0x7000,(%r8) # 66 -- -- -- 41 C7 00 00 70 ; O16 for 16-bit operand size |
42 | MOVw $0x7000,(%rax) # 66 -- -- -- C7 00 00 70 ; O16 for 16-bit operand size | |
43 | MOVl $0x70000000,(%rax) # -- -- -- -- C7 00 00 00 00 70 | |
44 | MOVb $0,(%r8) # -- -- -- 41 C6 00 00 ; REX to access upper reg. | |
45 | MOVb $0,(%rax) # -- -- -- -- C6 00 00 | |
46 | MOVw $0x7000,(%r8) # 66 -- -- 41 C7 00 00 70 ; REX to access upper reg. O16 for 16-bit operand size | |
47 | MOVw $0x7000,(%rax) # 66 -- -- -- C7 00 00 70 ; O16 for 16-bit operand size | |
48 | MOVl $0x70000000,(%r8) # -- -- -- 41 C7 00 00 00 00 70 ; REX to access upper reg. | |
49 | MOVl $0x70000000,(%rax) # -- -- -- -- C7 00 00 00 00 70 | |
858bc62d AJ |
50 | MOVq $0x70000000,(%r8) # -- -- -- 49 C7 00 00 00 00 70 ; REX for 64-bit operand size. REX to access upper reg. |
51 | MOVq $0x70000000,(%rax) # -- -- -- 48 C7 00 00 00 00 70 ; REX for 64-bit operand size | |
52 | ||
0ba59a29 JB |
53 | # LFS etc |
54 | LFS (%rax), %ecx # -- -- -- -- 0F B4 .. | |
55 | LFSl (%rcx), %eax # -- -- -- -- 0F B4 .. | |
56 | LFS (%rax), %cx # 66 -- -- -- 0F B4 .. | |
57 | LFSw (%rcx), %ax # 66 -- -- -- 0F B4 .. | |
58 | LGS (%rcx), %edx # -- -- -- -- 0F B5 .. | |
59 | LGSl (%rdx), %ecx # -- -- -- -- 0F B5 .. | |
60 | LGS (%rcx), %dx # 66 -- -- -- 0F B5 .. | |
61 | LGSw (%rdx), %cx # 66 -- -- -- 0F B5 .. | |
62 | LSS (%rdx), %ebx # -- -- -- -- 0F B2 .. | |
63 | LSSl (%rbx), %edx # -- -- -- -- 0F B2 .. | |
64 | LSS (%rdx), %bx # 66 -- -- -- 0F B2 .. | |
65 | LSSw (%rbx), %dx # 66 -- -- -- 0F B2 .. | |
66 | ||
858bc62d | 67 | # MOVNTI |
831b02f6 NC |
68 | MOVNTI %eax,(%r8) # -- -- -- 41 0f c3 00 ; REX to access upper reg. |
69 | MOVNTI %eax,(%rax) # -- -- -- -- 0f c3 00 | |
70 | MOVNTI %rax,(%r8) # -- -- -- 49 0F C3 00 ; REX to access upper reg. REX for 64-bit operand size | |
71 | MOVNTI %rax,(%rax) # -- -- -- 48 0F C3 00 ; REX for 64-bit operand size. REX to access upper reg. | |
72 | MOVNTI %r8,(%r8) # -- -- -- 4D 0F C3 00 ; REX to access upper reg. REX for 64-bit operand size | |
73 | MOVNTI %r8,(%rax) # -- -- -- 4C 0F C3 00 ; REX to access upper reg. REX for 64-bit operand size | |
74 | ||
75 | # Conditionals | |
76 | ||
77 | # LOOP | |
5f77db52 JB |
78 | LOOP . # -- -- -- -- E2 FE ; RCX used as counter. |
79 | LOOPq . # -- -- -- -- E2 FE ; RCX used as counter. | |
80 | LOOPl . # -- 67 -- -- E2 FD ; ECX used as counter. | |
831b02f6 NC |
81 | |
82 | ||
83 | # Jcc | |
5f77db52 JB |
84 | # 66 -- -- -- 77 FD ; O16 override: (Addr64) = ZEXT(Addr16) |
85 | # 66 -- -- -- 0F 87 F9 FF FF FF ; O16 override: (Addr64) = ZEXT(Addr16) | |
831b02f6 NC |
86 | |
87 | # J*CXZ | |
5f77db52 JB |
88 | JRCXZ . # -- -- -- -- E3 FE ; RCX used as counter. |
89 | JECXZ . # -- 67 -- -- E3 FD ; ECX used as counter. | |
831b02f6 NC |
90 | |
91 | ||
92 | ||
93 | # Integer | |
94 | ||
95 | # IDIV | |
96 | ||
97 | IDIVb (%r8) # -- -- -- 41 F6 38 ; Sign extended result. REX to access upper reg. | |
98 | IDIVb (%rax) # -- -- -- -- F6 38 ; Sign extended result | |
99 | IDIVw (%r8) # 66 -- -- 41 F7 38 ; Sign extended result. REX to access upper reg. O16 for 16-bit | |
100 | IDIVw (%rax) # 66 -- -- -- F7 38 ; Sign extended result. O16 for 16-bit operand size | |
101 | IDIVl (%r8) # -- -- -- 41 F7 38 ; Sign extended result. REX to access upper reg | |
102 | IDIVl (%rax) # -- -- -- -- F7 38 ; Sign extended result | |
103 | IDIVq (%r8) # -- -- -- 49 F7 38 ; Sign extended result. REX for 64-bit operand size. REX to access u | |
104 | IDIVq (%rax) # -- -- -- 48 F7 38 ; Sign extended result. REX for 64-bit operand size | |
105 | ||
106 | # IMUL | |
107 | IMULb (%r8) # -- -- -- 41 F6 28 ; Sign extended result. REX to access upper reg | |
108 | IMULb (%rax) # -- -- -- -- F6 28 ; Sign extended result | |
109 | IMULw (%r8) # 66 -- -- 41 F7 28 ; Sign extended result. O16 for 16-bit operand size. REX to access | |
110 | IMULw (%rax) # 66 -- -- -- F7 28 ; Sign extended result. O16 for 16-bit operand size | |
111 | IMULl (%r8) # -- -- -- 41 F7 28 ; Sign extended result. REX to access upper reg | |
112 | IMULl (%rax) # -- -- -- -- F7 28 ; Sign extended result | |
113 | IMULq (%r8) # -- -- -- 49 F7 28 ; Sign extended result. REX for 64-bit operand size. REX to access u | |
114 | IMULq (%rax) # -- -- -- 48 F7 28 ; Sign extended result. REX for 64-bit operand size | |
115 | ||
116 | ||
117 | ||
118 | # SIMD/SSE | |
119 | ||
120 | # ADDPD | |
121 | ADDPD (%r8),%xmm0 # -- -- 66 41 0F 58 00 ; REX to access upper reg. OVR 128bit MMinstr. | |
122 | ADDPD (%rax),%xmm0 # -- -- 66 -- 0F 58 00 ; OVR 128bit MMinstr. | |
123 | ADDPD (%r8),%xmm15 # -- -- 66 45 0F 58 38 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
124 | ADDPD (%rax),%xmm15 # -- -- 66 44 0F 58 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
125 | ADDPD (%r8),%xmm8 # -- -- 66 45 0F 58 00 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
126 | ADDPD (%rax),%xmm8 # -- -- 66 44 0F 58 00 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
127 | ADDPD (%r8),%xmm7 # -- -- 66 41 0F 58 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
128 | ADDPD (%rax),%xmm7 # -- -- 66 -- 0F 58 38 ; OVR 128bit MMinstr. | |
129 | ADDPD %xmm0,%xmm0 # -- -- 66 -- 0F 58 C0 ; OVR 128bit MMinstr. | |
130 | ADDPD %xmm15,%xmm15 # -- -- 66 45 0F 58 FF ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
131 | ADDPD %xmm15,%xmm8 # -- -- 66 45 0F 58 C7 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
132 | ||
133 | # CMPPD | |
858bc62d AJ |
134 | |
135 | # CVTSD2SI | |
136 | CVTSD2SIq (%r8),%rax # -- -- F2 49 0f 2d 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
137 | CVTSD2SIq (%rax),%rax # -- -- F2 48 0f 2d 00 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
138 | CVTSD2SIq (%r8),%r8 # -- -- F2 4D 0f 2d 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
139 | CVTSD2SIq (%rax),%r8 # -- -- F2 4C 0f 2d 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
140 | CVTSD2SIq %xmm0,%rax # -- -- F2 48 0f 2d c0 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
141 | CVTSD2SIq %xmm15,%r8 # -- -- F2 4D 0f 2d c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
142 | CVTSD2SIq %xmm15,%rax # -- -- F2 49 0f 2d c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg | |
143 | CVTSD2SIq %xmm8,%r8 # -- -- F2 4D 0f 2d c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
144 | CVTSD2SIq %xmm8,%rax # -- -- F2 49 0f 2d c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg | |
145 | CVTSD2SIq %xmm7,%r8 # -- -- F2 4C 0f 2d c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
146 | CVTSD2SIq %xmm7,%rax # -- -- F2 48 0f 2d c7 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
147 | CVTSD2SIq %xmm0,%r8 # -- -- F2 4C 0f 2d c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
148 | ||
149 | # CVTTSD2SI | |
150 | CVTTSD2SIq (%r8),%rax # -- -- F2 49 0f 2c 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
151 | CVTTSD2SIq (%rax),%rax # -- -- F2 48 0f 2c 00 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
152 | CVTTSD2SIq (%r8),%r8 # -- -- F2 4D 0f 2c 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
153 | CVTTSD2SIq (%rax),%r8 # -- -- F2 4C 0f 2c 00 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
154 | CVTTSD2SIq %xmm0,%rax # -- -- F2 48 0f 2c c0 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
155 | CVTTSD2SIq %xmm15,%r8 # -- -- F2 4D 0f 2c c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
156 | CVTTSD2SIq %xmm15,%rax # -- -- F2 49 0f 2c c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg | |
157 | CVTTSD2SIq %xmm8,%r8 # -- -- F2 4D 0f 2c c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
158 | CVTTSD2SIq %xmm8,%rax # -- -- F2 49 0f 2c c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper XMM reg | |
159 | CVTTSD2SIq %xmm7,%r8 # -- -- F2 4C 0f 2c c7 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
160 | CVTTSD2SIq %xmm7,%rax # -- -- F2 48 0f 2c c7 ; OVR 128-bit media instruction override REX for 64-bit operand size | |
161 | CVTTSD2SIq %xmm0,%r8 # -- -- F2 4C 0f 2c c0 ; OVR 128-bit media instruction override REX for 64-bit operand size REX to access upper reg. | |
162 | ||
163 | # CVTSS2SI | |
164 | CVTSS2SIq (%r8),%rax # -- -- F3 49 0f 2d 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
165 | CVTSS2SIq (%rax),%rax # -- -- F3 48 0f 2d 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
166 | CVTSS2SIq (%r8),%r8 # -- -- F3 4D 0f 2d 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
167 | CVTSS2SIq (%rax),%r8 # -- -- F3 4C 0f 2d 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
168 | CVTSS2SIq %xmm0,%rax # -- -- F3 48 0f 2d c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
169 | CVTSS2SIq %xmm15,%r8 # -- -- F3 4D 0f 2d c7 ; OVR 128-bit media instruction override Result is sign extended REX to access upper XMM reg REX to access upper reg. | |
170 | CVTSS2SIq %xmm15,%rax # -- -- F3 49 0f 2d c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper XMM reg | |
171 | CVTSS2SIq %xmm8,%r8 # -- -- F3 4D 0f 2d c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
172 | CVTSS2SIq %xmm8,%rax # -- -- F3 49 0f 2d c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
173 | CVTSS2SIq %xmm7,%r8 # -- -- F3 4C 0f 2d c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
174 | CVTSS2SIq %xmm7,%rax # -- -- F3 48 0f 2d c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
175 | CVTSS2SIq %xmm0,%r8 # -- -- F3 4C 0f 2d c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
176 | ||
177 | # CVTTSS2SI | |
178 | CVTTSS2SIq (%r8),%rax # -- -- F3 49 0f 2c 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
179 | CVTTSS2SIq (%rax),%rax # -- -- F3 48 0f 2c 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
180 | CVTTSS2SIq (%r8),%r8 # -- -- F3 4D 0f 2c 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
181 | CVTTSS2SIq (%rax),%r8 # -- -- F3 4C 0f 2c 00 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
182 | CVTTSS2SIq %xmm0,%rax # -- -- F3 48 0f 2c c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
183 | CVTTSS2SIq %xmm15,%r8 # -- -- F3 4D 0f 2c c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
184 | CVTTSS2SIq %xmm15,%rax # -- -- F3 49 0f 2c c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper XMM reg | |
185 | CVTTSS2SIq %xmm8,%r8 # -- -- F3 4D 0f 2c c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper XMM reg REX to access upper reg. | |
186 | CVTTSS2SIq %xmm8,%rax # -- -- F3 49 0f 2c c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size | |
187 | CVTTSS2SIq %xmm7,%r8 # -- -- F3 4C 0f 2c c7 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
188 | CVTTSS2SIq %xmm7,%rax # -- -- F3 48 0f 2c c7 ; OVR 128-bit media instruction override Result is sign extended | |
189 | CVTTSS2SIq %xmm0,%r8 # -- -- F3 4C 0f 2c c0 ; OVR 128-bit media instruction override Result is sign extended REX for 64-bit operand size REX to access upper reg. | |
190 | ||
191 | # CVTSI2SS | |
c006a730 JB |
192 | CVTSI2SSl (%r8),%xmm0 # -- -- F3 41 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper reg. |
193 | CVTSI2SSl (%rax),%xmm0 # -- -- F3 -- 0f 2a 00 ; OVR 128-bit media instruction override | |
194 | CVTSI2SSl (%r8),%xmm15 # -- -- F3 45 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper XMM reg REX to access upper reg. | |
195 | CVTSI2SSl (%rax),%xmm15 # -- -- F3 44 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
196 | CVTSI2SSl (%r8),%xmm8 # -- -- F3 45 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper XMM reg REX to access upper reg. | |
197 | CVTSI2SSl (%rax),%xmm8 # -- -- F3 44 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
198 | CVTSI2SSl (%r8),%xmm7 # -- -- F3 41 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper reg. | |
199 | CVTSI2SSl (%rax),%xmm7 # -- -- F3 -- 0f 2a 38 ; OVR 128-bit media instruction override | |
858bc62d AJ |
200 | CVTSI2SS %eax,%xmm0 # -- -- F3 -- 0f 2a c0 ; OVR 128-bit media instruction override |
201 | CVTSI2SS %eax,%xmm15 # -- -- F3 44 0f 2a f8 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
202 | CVTSI2SS %eax,%xmm8 # -- -- F3 44 0f 2a c0 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
203 | CVTSI2SS %eax,%xmm7 # -- -- F3 -- 0f 2a f8 ; OVR 128-bit media instruction override | |
c006a730 JB |
204 | CVTSI2SSl (%r8),%xmm0 # -- -- F3 41 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper reg. |
205 | CVTSI2SSl (%rax),%xmm0 # -- -- F3 -- 0f 2a 00 ; OVR 128-bit media instruction override | |
206 | CVTSI2SSl (%r8),%xmm15 # -- -- F3 45 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper XMM reg REX to access upper reg. | |
207 | CVTSI2SSl (%rax),%xmm15 # -- -- F3 44 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
208 | CVTSI2SSl (%r8),%xmm8 # -- -- F3 45 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper XMM reg REX to access upper reg. | |
209 | CVTSI2SSl (%rax),%xmm8 # -- -- F3 44 0f 2a 00 ; OVR 128-bit media instruction override REX to access upper XMM reg | |
210 | CVTSI2SSl (%r8),%xmm7 # -- -- F3 41 0f 2a 38 ; OVR 128-bit media instruction override REX to access upper reg. | |
211 | CVTSI2SSl (%rax),%xmm7 # -- -- F3 -- 0f 2a 38 ; OVR 128-bit media instruction override | |
858bc62d | 212 | |
831b02f6 | 213 | # CVTSI2SD |
c006a730 JB |
214 | CVTSI2SDl (%r8),%xmm0 # -- -- F2 41 0F 2A 00 ; REX to access upper reg. OVR 128bit MMinstr. |
215 | CVTSI2SDl (%rax),%xmm0 # -- -- F2 -- 0F 2A 00 ; OVR 128bit MMinstr. | |
216 | CVTSI2SDl (%r8),%xmm15 # -- -- F2 45 0F 2A 38 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
217 | CVTSI2SDl (%rax),%xmm15 # -- -- F2 44 0F 2A 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
218 | CVTSI2SDl (%r8),%xmm8 # -- -- F2 45 0F 2A 00 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
219 | CVTSI2SDl (%rax),%xmm8 # -- -- F2 44 0F 2A 00 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
220 | CVTSI2SDl (%r8),%xmm7 # -- -- F2 41 0F 2A 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
221 | CVTSI2SDl (%rax),%xmm7 # -- -- F2 -- 0F 2A 38 ; OVR 128bit MMinstr. | |
831b02f6 NC |
222 | CVTSI2SD %eax,%xmm0 # -- -- F2 -- 0F 2A C0 ; OVR 128bit MMinstr. |
223 | CVTSI2SD %eax,%xmm15 # -- -- F2 44 0F 2A F8 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
224 | CVTSI2SD %eax,%xmm8 # -- -- F2 44 0F 2A C0 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
225 | CVTSI2SD %eax,%xmm7 # -- -- F2 -- 0F 2A F8 ; OVR 128bit MMinstr. | |
c006a730 JB |
226 | CVTSI2SDl (%r8),%xmm0 # -- -- F2 41 0F 2A 00 ; REX to access upper reg. OVR 128bit MMinstr. |
227 | CVTSI2SDl (%rax),%xmm0 # -- -- F2 -- 0F 2A 00 ; OVR 128bit MMinstr. | |
228 | CVTSI2SDl (%r8),%xmm15 # -- -- F2 45 0F 2A 38 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
229 | CVTSI2SDl (%rax),%xmm15 # -- -- F2 44 0F 2A 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
230 | CVTSI2SDl (%r8),%xmm8 # -- -- F2 45 0F 2A 00 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
231 | CVTSI2SDl (%rax),%xmm8 # -- -- F2 44 0F 2A 00 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
232 | CVTSI2SDl (%r8),%xmm7 # -- -- F2 41 0F 2A 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
233 | CVTSI2SDl (%rax),%xmm7 # -- -- F2 -- 0F 2A 38 ; OVR 128bit MMinstr. | |
831b02f6 NC |
234 | |
235 | # MOVD | |
236 | MOVD (%r8),%xmm0 # -- -- 66 41 0F 6E 00 ; REX to access upper reg. Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
237 | MOVD (%rax),%xmm0 # -- -- 66 -- 0F 6E 00 ; Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
238 | MOVD (%r8),%xmm15 # -- -- 66 45 0F 6E 38 ; REX to access upper XMM reg. REX to access upper reg. Data128 = ZEXT(Data32) | |
239 | MOVD (%rax),%xmm15 # -- -- 66 44 0F 6E 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
240 | MOVD (%r8),%xmm8 # -- -- 66 45 0F 6E 00 ; REX to access upper XMM reg. REX to access upper reg. Data128 = ZEXT(Data32) | |
241 | MOVD (%rax),%xmm8 # -- -- 66 44 0F 6E 00 ; REX to access upper XMM reg. Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
242 | MOVD (%r8),%xmm7 # -- -- 66 41 0F 6E 38 ; REX to access upper reg. Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
243 | MOVD (%rax),%xmm7 # -- -- 66 -- 0F 6E 38 ; Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
244 | MOVD %eax,%xmm0 # -- -- 66 -- 0F 6E C0 ; Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
245 | MOVD %eax,%xmm15 # -- -- 66 44 0F 6E F8 ; REX to access upper XMM reg. Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
246 | MOVD %eax,%xmm8 # -- -- 66 44 0F 6E C0 ; REX to access upper XMM reg. Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
247 | MOVD %eax,%xmm7 # -- -- 66 -- 0F 6E F8 ; Data128 = ZEXT(Data32). OVR 128bit MMinstr. | |
248 | MOVD %xmm0,(%r8) # -- -- 66 41 0F 7E 00 ; REX to access upper reg. OVR 128bit MMinstr. | |
249 | MOVD %xmm0,(%rax) # -- -- 66 -- 0F 7E 00 ; OVR 128bit MMinstr. | |
250 | MOVD %xmm15,(%r8) # -- -- 66 45 0F 7E 38 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
251 | MOVD %xmm15,(%rax) # -- -- 66 44 0F 7E 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
252 | MOVD %xmm8,(%r8) # -- -- 66 45 0F 7E 00 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
253 | MOVD %xmm8,(%rax) # -- -- 66 44 0F 7E 00 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
254 | MOVD %xmm7,(%r8) # -- -- 66 41 0F 7E 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
255 | MOVD %xmm7,(%rax) # -- -- 66 -- 0F 7E 38 ; OVR 128bit MMinstr. | |
256 | MOVD %xmm0,%eax # -- -- 66 -- 0F 7E C0 ; OVR 128bit MMinstr. | |
257 | MOVD %xmm15,%eax # -- -- 66 44 0F 7E F8 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
258 | MOVD %xmm8,%eax # -- -- 66 44 0F 7E C0 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
259 | MOVD %xmm7,%eax # -- -- 66 -- 0F 7E F8 ; OVR 128bit MMinstr. | |
43e9b450 AM |
260 | MOVD %rax,%xmm0 # -- -- 66 48 0F 6E C0 ; Data128 = ZEXT(Data64). OVR 128bit MMinstr. REX for 64-bit operand size. |
261 | MOVD %r8,%xmm0 # -- -- 66 49 0F 6E C0 ; REX to access upper reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. REX for 64-bit operand size. | |
262 | MOVD %r8,%xmm15 # -- -- 66 4D 0F 6E F8 ; REX to access upper reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. REX for 64-bit operand size. | |
263 | MOVD %xmm0,%rax # -- -- 66 48 0F 7E C0 ; OVR 128bit MMinstr. REX for 64-bit operand size. | |
264 | MOVD %xmm0,%r8 # -- -- 66 49 0F 7E C0 ; OVR 128bit MMinstr. REX for 64-bit operand size. | |
265 | MOVD %xmm7,%r8 # -- -- 66 49 0F 7E F8 ; OVR 128bit MMinstr. REX for 64-bit operand size. | |
831b02f6 NC |
266 | |
267 | # MOVQ | |
268 | MOVQ (%r8),%xmm0 # -- -- F3 41 0F 7E 00 ; REX to access upper reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
269 | MOVQ (%rax),%xmm0 # -- -- F3 -- 0F 7E 00 ; Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
270 | MOVQ (%r8),%xmm15 # -- -- F3 45 0F 7E 38 ; REX to access upper XMM reg. REX to access upper reg. Data128 = ZEXT(Data64) | |
271 | MOVQ (%rax),%xmm15 # -- -- F3 44 0F 7E 38 ; REX to access upper XMM reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
272 | MOVQ (%r8),%xmm8 # -- -- F3 45 0F 7E 00 ; REX to access upper XMM reg. REX to access upper reg. Data128 = ZEXT(Data64) | |
273 | MOVQ (%rax),%xmm8 # -- -- F3 44 0F 7E 00 ; REX to access upper XMM reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
274 | MOVQ (%r8),%xmm7 # -- -- F3 41 0F 7E 38 ; REX to access upper reg. Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
275 | MOVQ (%rax),%xmm7 # -- -- F3 -- 0F 7E 38 ; Data128 = ZEXT(Data64). OVR 128bit MMinstr. | |
276 | MOVQ %xmm0,%xmm0 # -- -- F3 -- 0F 7E C0 ; OVR 128bit MMinstr. | |
277 | MOVQ %xmm15,%xmm15 # -- -- F3 45 0F 7E FF ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
278 | MOVQ %xmm15,%xmm8 # -- -- F3 45 0F 7E C7 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
279 | MOVQ %xmm15,%xmm7 # -- -- F3 41 0F 7E FF ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
280 | MOVQ %xmm15,%xmm0 # -- -- F3 41 0F 7E C7 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
281 | MOVQ %xmm8,%xmm15 # -- -- F3 45 0F 7E F8 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
282 | MOVQ %xmm8,%xmm8 # -- -- F3 45 0F 7E C0 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
283 | MOVQ %xmm8,%xmm7 # -- -- F3 41 0F 7E F8 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
284 | MOVQ %xmm8,%xmm0 # -- -- F3 41 0F 7E C0 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
285 | MOVQ %xmm7,%xmm15 # -- -- F3 44 0F 7E FF ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
286 | MOVQ %xmm7,%xmm8 # -- -- F3 44 0F 7E C7 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
287 | MOVQ %xmm7,%xmm7 # -- -- F3 -- 0F 7E FF ; OVR 128bit MMinstr. | |
288 | MOVQ %xmm7,%xmm0 # -- -- F3 -- 0F 7E C7 ; OVR 128bit MMinstr. | |
289 | MOVQ %xmm0,%xmm15 # -- -- F3 44 0F 7E F8 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
290 | MOVQ %xmm0,%xmm8 # -- -- F3 44 0F 7E C0 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
291 | MOVQ %xmm0,%xmm7 # -- -- F3 -- 0F 7E F8 ; OVR 128bit MMinstr. | |
292 | MOVQ %xmm0,(%r8) # -- -- 66 41 0F D6 00 ; REX to access upper reg. OVR 128bit MMinstr. | |
293 | MOVQ %xmm0,(%rax) # -- -- 66 -- 0F D6 00 ; OVR 128bit MMinstr. | |
294 | MOVQ %xmm15,(%r8) # -- -- 66 45 0F D6 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
295 | MOVQ %xmm15,(%rax) # -- -- 66 44 0F D6 38 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
296 | MOVQ %xmm8,(%r8) # -- -- 66 45 0F D6 00 ; REX to access upper XMM reg. REX to access upper reg. OVR 128bit MMinstr. | |
297 | MOVQ %xmm8,(%rax) # -- -- 66 44 0F D6 00 ; REX to access upper XMM reg. OVR 128bit MMinstr. | |
298 | MOVQ %xmm7,(%r8) # -- -- 66 41 0F D6 38 ; REX to access upper reg. OVR 128bit MMinstr. | |
299 | ||
300 | # 64-bit MMX | |
301 | ||
302 | # CVTPD2PI | |
303 | ||
304 | # MOVD | |
305 | MOVD (%r8),%mm0 # -- -- -- 41 0F 6E 00 ; REX to access upper reg. Data64 = ZEXT(Data32) | |
306 | MOVD (%rax),%mm0 # -- -- -- -- 0F 6E 00 ; Data64 = ZEXT(Data32) | |
307 | MOVD (%r8),%mm7 # -- -- -- 41 0F 6E 38 ; REX to access upper reg. Data64 = ZEXT(Data32) | |
308 | MOVD (%rax),%mm7 # -- -- -- -- 0F 6E 38 ; Data64 = ZEXT(Data32) | |
309 | MOVD %eax,%mm0 # -- -- -- -- 0F 6E C0 ; Data64 = ZEXT(Data32) | |
310 | MOVD %eax,%mm7 # -- -- -- -- 0F 6E F8 ; Data64 = ZEXT(Data32) | |
311 | MOVD %mm0,(%r8) # -- -- -- 41 0F 7E 00 ; REX to access upper reg. | |
312 | MOVD %mm0,(%rax) # -- -- -- -- 0F 7E 00 | |
313 | MOVD %mm7,(%r8) # -- -- -- 41 0F 7E 38 ; REX to access upper reg. | |
314 | MOVD %mm7,(%rax) # -- -- -- -- 0F 7E 38 | |
315 | MOVD %mm0,%eax # -- -- -- -- 0F 7E C0 | |
316 | MOVD %mm7,%eax # -- -- -- -- 0F 7E F8 | |
317 | ||
318 | # MOVQ | |
319 | MOVQ (%r8),%mm0 # -- -- -- 41 0F 6F 00 ; REX to access upper reg. | |
320 | MOVQ (%rax),%mm0 # -- -- -- -- 0F 6F 00 | |
321 | MOVQ (%r8),%mm7 # -- -- -- 41 0F 6F 38 ; REX to access upper reg. | |
322 | MOVQ (%rax),%mm7 # -- -- -- -- 0F 6F 38 | |
323 | MOVQ %mm0,(%r8) # -- -- -- 41 0F 7F 00 ; REX to access upper reg. | |
324 | MOVQ %mm0,(%rax) # -- -- -- -- 0F 7F 00 | |
325 | MOVQ %mm7,(%r8) # -- -- -- 41 0F 7F 38 ; REX to access upper reg. | |
326 | MOVQ %mm7,(%rax) # -- -- -- -- 0F 7F 38 | |
327 | ||
328 | # X87 | |
329 | # FADDP | |
330 | ||
331 | ||
332 | # FDIV | |
333 | ||
334 | # Stack Operations | |
335 | ||
336 | # POP | |
337 | POPq (%r8) # -- -- -- 41 8F 00 ; REX to access upper reg. | |
338 | POPq (%rax) # -- -- -- -- 8F 00 | |
21df382b | 339 | POP %fs # -- -- -- -- 0F A1 |
3f9aad11 | 340 | POPq %fs # -- -- -- -- 0F A1 |
21df382b | 341 | POP %gs # -- -- -- -- 0F A9 |
3f9aad11 JB |
342 | POPq %gs # -- -- -- -- 0F A9 |
343 | POPF # -- -- -- -- 9D | |
344 | POPFq # -- -- -- -- 9D | |
831b02f6 NC |
345 | |
346 | # PUSH | |
347 | PUSHq (%r8) # -- -- -- 41 FF 30 ; REX to access upper reg. | |
348 | PUSHq (%rax) # -- -- -- -- FF 30 | |
21df382b | 349 | PUSH %fs # -- -- -- -- 0F A0 |
3f9aad11 | 350 | PUSHq %fs # -- -- -- -- 0F A0 |
21df382b | 351 | PUSH %gs # -- -- -- -- 0F A8 |
3f9aad11 JB |
352 | PUSHq %gs # -- -- -- -- 0F A8 |
353 | PUSHF # -- -- -- -- 9C | |
354 | PUSHFq # -- -- -- -- 9C | |
831b02f6 NC |
355 | |
356 | ||
357 | ||
358 | ||
359 | ||
360 | # MMX/XMM/x87 State | |
361 | # FNSAVE | |
362 | # FRSTOR | |
363 | # FSAVE | |
364 | # FXRSTOR | |
365 | # FXSAVE | |
366 | # EMMS | |
367 | EMMS # -- -- -- -- 0F 77 | |
368 | # FEMMS | |
369 | FEMMS # -- -- -- -- 0F 0E | |
370 | ||
371 | # LEA calculation | |
372 | ||
373 | # MISC System Instructions | |
374 | # CLFLUSH | |
375 | ||
376 | # INVD | |
377 | INVD # -- -- -- -- 0F 08 | |
378 | ||
379 | # INVLPG | |
380 | INVLPG (%r8) # -- -- -- 41 0F 01 38 ; REX to access upper reg. | |
381 | INVLPG (%rax) # -- -- -- -- 0F 01 38 | |
382 | INVLPG (%r8) # -- -- -- 41 0F 01 38 ; REX to access upper reg. | |
383 | INVLPG (%rax) # -- -- -- -- 0F 01 38 | |
384 | INVLPG (%r8) # -- -- -- 41 0F 01 38 ; REX to access upper reg. | |
385 | INVLPG (%rax) # -- -- -- -- 0F 01 38 | |
386 | ||
387 | # LAR | |
388 | ||
389 | # LGDT | |
390 | ||
391 | # LIDT | |
392 | ||
393 | ||
394 | # LLDT | |
395 | ||
396 | # SGDT | |
397 | ||
398 | # SIDT | |
399 | ||
400 | # SLDT | |
858bc62d AJ |
401 | # SLDT (%eax) # -- 67 -- -- 0F 00 00 ; A32 override: (Addr64) = ZEXT(Addr32 ) |
402 | SLDT %eax # -- -- -- -- 0F 00 C0 | |
2b516b72 L |
403 | SLDT %rax # -- -- -- 48 0F 00 C0 |
404 | SLDT %ax # 66 -- -- -- 0F 00 C0 | |
405 | SLDT (%rax) # -- -- -- -- 0F 00 00 | |
831b02f6 NC |
406 | |
407 | # SWAPGS | |
408 | ||
409 | ||
410 | ||
411 | # IO | |
412 | ||
413 | # OUT | |
414 | OUT %al,$0 # -- -- -- -- E6 00 | |
415 | OUT %ax,$0 # 66 -- -- -- E7 00 ; O16 for 16-bit operand size | |
416 | OUT %eax,$0 # -- -- -- -- E7 00 | |
417 | ||
418 | # IN | |
6fb63971 | 419 | |
46e883c5 L |
420 | |
421 | ||
422 | xchg %ax,%ax # 66 -- -- -- 90 | |
423 | xchg %eax,%eax # -- -- -- -- 87 C0 | |
424 | xchg %rax,%rax # -- -- -- -- 90 | |
2b516b72 | 425 | rex64 xchg %rax,%rax # -- -- -- 48 90 |
46e883c5 | 426 | xchg %rax,%r8 # -- -- -- 49 90 |
8b38ad71 L |
427 | xchg %eax,%r8d # -- -- -- 41 90 |
428 | xchg %r8d,%eax # -- -- -- 41 90 | |
429 | xchg %eax,%r9d # -- -- -- 41 91 | |
430 | xchg %r9d,%eax # -- -- -- 41 91 | |
431 | xchg %ebx,%eax # -- -- -- 93 | |
432 | xchg %eax,%ebx # -- -- -- 93 | |
433 | xchg %ax,%r8w # -- -- -- 66 41 90 | |
434 | xchg %r8w,%ax # -- -- -- 66 41 90 | |
435 | xchg %ax,%r9w # -- -- -- 66 41 91 | |
436 | xchg %r9w,%ax # -- -- -- 66 41 91 | |
46e883c5 | 437 | |
2b516b72 L |
438 | smsw %rax # -- -- -- 48 0F 01 e0 |
439 | smsw %eax # -- -- -- -- 0F 01 e0 | |
440 | smsw %ax # 66 -- -- -- 0F 01 e0 | |
441 | smsw (%rax) # -- -- -- -- 0F 01 20 | |
442 | ||
443 | str %rax # -- -- -- 48 0F 00 c8 | |
444 | str %eax # -- -- -- -- 0F 00 c8 | |
445 | str %ax # 66 -- -- -- 0F 00 c8 | |
446 | str (%rax) # -- -- -- -- 0F 00 08 | |
447 | ||
dfb07592 | 448 | syscall # -- -- -- -- 0F 05 |
c006a730 JB |
449 | sysretl # -- -- -- -- 0F 07 |
450 | sysretq # -- -- -- 48 0F 07 | |
dfb07592 | 451 | |
bbedc832 L |
452 | swapgs # -- -- -- -- 0F 01 f8 |
453 | ||
d9e3625e | 454 | pushw $0x2222 |
7db2c588 JB |
455 | |
456 | .byte 0xf6, 0xc9, 0x01 | |
457 | .byte 0x66, 0xf7, 0xc9, 0x02, 0x00 | |
458 | .byte 0xf7, 0xc9, 0x04, 0x00, 0x00, 0x00 | |
459 | .byte 0x48, 0xf7, 0xc9, 0x08, 0x00, 0x00, 0x00 | |
e4bdd679 BP |
460 | .byte 0xc0, 0xf0, 0x02 |
461 | .byte 0xc1, 0xf0, 0x01 | |
462 | .byte 0x48, 0xc1, 0xf0, 0x01 | |
463 | .byte 0xd0, 0xf0 | |
464 | .byte 0xd1, 0xf0 | |
465 | .byte 0x48, 0xd1, 0xf0 | |
466 | .byte 0xd2, 0xf0 | |
467 | .byte 0xd3, 0xf0 | |
468 | .byte 0x48, 0xd3, 0xf0 |