xref: /aosp_15_r20/external/llvm/test/MC/X86/index-operations.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple x86_64-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=64 %s
2*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR64 < %t.err %s
3*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple i386-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=32 %s
4*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR32 < %t.err %s
5*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple i386-unknown-unknown-code16 --show-encoding %s 2> %t.err | FileCheck --check-prefix=16 %s
6*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR16 < %t.err %s
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerlodsb
9*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%rsi), %al # encoding: [0xac]
10*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%esi), %al # encoding: [0xac]
11*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%si), %al # encoding: [0xac]
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerlodsb (%rsi), %al
14*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%rsi), %al # encoding: [0xac]
15*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit
16*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerlodsb (%esi), %al
19*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%esi), %al # encoding: [0x67,0xac]
20*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%esi), %al # encoding: [0xac]
21*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%esi), %al # encoding: [0x67,0xac]
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerlodsb (%si), %al
24*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register
25*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%si), %al # encoding: [0x67,0xac]
26*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%si), %al # encoding: [0xac]
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerlodsl %gs:(%esi)
29*9880d681SAndroid Build Coastguard Worker// 64: lodsl %gs:(%esi), %eax # encoding: [0x65,0x67,0xad]
30*9880d681SAndroid Build Coastguard Worker// 32: lodsl %gs:(%esi), %eax # encoding: [0x65,0xad]
31*9880d681SAndroid Build Coastguard Worker// 16: lodsl %gs:(%esi), %eax # encoding: [0x66,0x65,0x67,0xad]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerlodsl (%edi), %eax
34*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand
35*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand
36*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerlodsl 44(%edi), %eax
39*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand
40*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand
41*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerlods (%esi), %ax
44*9880d681SAndroid Build Coastguard Worker// 64: lodsw (%esi), %ax # encoding: [0x66,0x67,0xad]
45*9880d681SAndroid Build Coastguard Worker// 32: lodsw (%esi), %ax # encoding: [0x66,0xad]
46*9880d681SAndroid Build Coastguard Worker// 16: lodsw (%esi), %ax # encoding: [0x67,0xad]
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerstosw
49*9880d681SAndroid Build Coastguard Worker// 64: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab]
50*9880d681SAndroid Build Coastguard Worker// 32: stosw %ax, %es:(%edi) # encoding: [0x66,0xab]
51*9880d681SAndroid Build Coastguard Worker// 16: stosw %ax, %es:(%di) # encoding: [0xab]
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerstos %eax, (%edi)
54*9880d681SAndroid Build Coastguard Worker// 64: stosl %eax, %es:(%edi) # encoding: [0x67,0xab]
55*9880d681SAndroid Build Coastguard Worker// 32: stosl %eax, %es:(%edi) # encoding: [0xab]
56*9880d681SAndroid Build Coastguard Worker// 16: stosl %eax, %es:(%edi) # encoding: [0x66,0x67,0xab]
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerstosb %al, %fs:(%edi)
59*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand for instruction
60*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand for instruction
61*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand for instruction
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerstosb %al, %es:(%edi)
64*9880d681SAndroid Build Coastguard Worker// 64: stosb %al, %es:(%edi) # encoding: [0x67,0xaa]
65*9880d681SAndroid Build Coastguard Worker// 32: stosb %al, %es:(%edi) # encoding: [0xaa]
66*9880d681SAndroid Build Coastguard Worker// 16: stosb %al, %es:(%edi) # encoding: [0x67,0xaa]
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerstosq
69*9880d681SAndroid Build Coastguard Worker// 64: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab]
70*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit
71*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerstos %rax, (%edi)
74*9880d681SAndroid Build Coastguard Worker// 64: 	stosq %rax, %es:(%edi) # encoding: [0x48,0x67,0xab]
75*9880d681SAndroid Build Coastguard Worker// ERR32: only available in 64-bit mode
76*9880d681SAndroid Build Coastguard Worker// ERR16: only available in 64-bit mode
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerscas %es:(%edi), %al
79*9880d681SAndroid Build Coastguard Worker// 64: scasb %es:(%edi), %al # encoding: [0x67,0xae]
80*9880d681SAndroid Build Coastguard Worker// 32: scasb %es:(%edi), %al # encoding: [0xae]
81*9880d681SAndroid Build Coastguard Worker// 16: scasb %es:(%edi), %al # encoding: [0x67,0xae]
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerscasq %es:(%edi)
84*9880d681SAndroid Build Coastguard Worker// 64: scasq %es:(%edi), %rax # encoding: [0x48,0x67,0xaf]
85*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit
86*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerscasl %es:(%edi), %al
89*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand
90*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand
91*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerscas %es:(%di), %ax
94*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register
95*9880d681SAndroid Build Coastguard Worker// 16: scasw %es:(%di), %ax # encoding: [0xaf]
96*9880d681SAndroid Build Coastguard Worker// 32: scasw %es:(%di), %ax # encoding: [0x66,0x67,0xaf]
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workercmpsb
99*9880d681SAndroid Build Coastguard Worker// 64: cmpsb %es:(%rdi), (%rsi) # encoding: [0xa6]
100*9880d681SAndroid Build Coastguard Worker// 32: cmpsb %es:(%edi), (%esi) # encoding: [0xa6]
101*9880d681SAndroid Build Coastguard Worker// 16: cmpsb %es:(%di), (%si) # encoding: [0xa6]
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workercmpsw (%edi), (%esi)
104*9880d681SAndroid Build Coastguard Worker// 64: cmpsw %es:(%edi), (%esi) # encoding: [0x66,0x67,0xa7]
105*9880d681SAndroid Build Coastguard Worker// 32: cmpsw %es:(%edi), (%esi) # encoding: [0x66,0xa7]
106*9880d681SAndroid Build Coastguard Worker// 16: cmpsw %es:(%edi), (%esi) # encoding: [0x67,0xa7]
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Workercmpsb (%di), (%esi)
109*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register
110*9880d681SAndroid Build Coastguard Worker// ERR32: mismatching source and destination
111*9880d681SAndroid Build Coastguard Worker// ERR16: mismatching source and destination
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workercmpsl %es:(%edi), %ss:(%esi)
114*9880d681SAndroid Build Coastguard Worker// 64: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x36,0x67,0xa7]
115*9880d681SAndroid Build Coastguard Worker// 32: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x36,0xa7]
116*9880d681SAndroid Build Coastguard Worker// 16: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x66,0x36,0x67,0xa7]
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workercmpsq (%rdi), (%rsi)
119*9880d681SAndroid Build Coastguard Worker// 64: cmpsq %es:(%rdi), (%rsi) # encoding: [0x48,0xa7]
120*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit
121*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workermovsb (%esi), (%edi)
124*9880d681SAndroid Build Coastguard Worker// 64: movsb (%esi), %es:(%edi) # encoding: [0x67,0xa4]
125*9880d681SAndroid Build Coastguard Worker// 32: movsb (%esi), %es:(%edi) # encoding: [0xa4]
126*9880d681SAndroid Build Coastguard Worker// 16: movsb (%esi), %es:(%edi) # encoding: [0x67,0xa4]
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Workermovsl %gs:(%esi), (%edi)
129*9880d681SAndroid Build Coastguard Worker// 64: movsl %gs:(%esi), %es:(%edi) # encoding: [0x65,0x67,0xa5]
130*9880d681SAndroid Build Coastguard Worker// 32: movsl %gs:(%esi), %es:(%edi) # encoding: [0x65,0xa5]
131*9880d681SAndroid Build Coastguard Worker// 16: movsl %gs:(%esi), %es:(%edi) # encoding: [0x66,0x65,0x67,0xa5]
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workeroutsb
134*9880d681SAndroid Build Coastguard Worker// 64: outsb (%rsi), %dx # encoding: [0x6e]
135*9880d681SAndroid Build Coastguard Worker// 32: outsb (%esi), %dx # encoding: [0x6e]
136*9880d681SAndroid Build Coastguard Worker// 16: outsb (%si), %dx # encoding: [0x6e]
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workeroutsw %fs:(%esi), %dx
139*9880d681SAndroid Build Coastguard Worker// 64: outsw %fs:(%esi), %dx # encoding: [0x66,0x64,0x67,0x6f]
140*9880d681SAndroid Build Coastguard Worker// 32: outsw %fs:(%esi), %dx # encoding: [0x66,0x64,0x6f]
141*9880d681SAndroid Build Coastguard Worker// 16: outsw %fs:(%esi), %dx # encoding: [0x64,0x67,0x6f]
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerinsw %dx, (%edi)
144*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d]
145*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d]
146*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d]
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Workerinsw %dx, (%bx)
149*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register
150*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%di) # encoding: [0x66,0x67,0x6d]
151*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%di) # encoding: [0x6d]
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerinsw %dx, (%ebx)
154*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d]
155*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d]
156*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d]
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerinsw %dx, (%rbx)
159*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d]
160*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit
161*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit
162*9880d681SAndroid Build Coastguard Worker
163