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