[x86] Allow segment and address-size overrides for LODS[BWLQ] (PR9385)
[oota-llvm.git] / test / MC / X86 / index-operations.s
1 // RUN: not llvm-mc -triple x86_64-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=64 %s
2 // RUN: FileCheck --check-prefix=ERR64 < %t.err %s
3 // RUN: not llvm-mc -triple i386-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=32 %s
4 // RUN: FileCheck --check-prefix=ERR32 < %t.err %s
5 // RUN: not llvm-mc -triple i386-unknown-unknown-code16 --show-encoding %s 2> %t.err | FileCheck --check-prefix=16 %s
6 // RUN: FileCheck --check-prefix=ERR16 < %t.err %s
7
8 lodsb
9 // 64: lodsb (%rsi), %al # encoding: [0xac]
10 // 32: lodsb (%esi), %al # encoding: [0xac]
11 // 16: lodsb (%si), %al # encoding: [0xac]
12
13 lodsb (%rsi), %al
14 // 64: lodsb (%rsi), %al # encoding: [0xac]
15 // ERR32: 64-bit
16 // ERR16: 64-bit
17
18 lodsb (%esi), %al
19 // 64: lodsb (%esi), %al # encoding: [0x67,0xac]
20 // 32: lodsb (%esi), %al # encoding: [0xac]
21 // 16: lodsb (%esi), %al # encoding: [0x67,0xac]
22
23 lodsb (%si), %al
24 // ERR64: invalid 16-bit base register
25 // 32: lodsb (%si), %al # encoding: [0x67,0xac]
26 // 16: lodsb (%si), %al # encoding: [0xac]
27
28 lodsl %gs:(%esi)
29 // 64: lodsl %gs:(%esi), %eax # encoding: [0x65,0x67,0xad]
30 // 32: lodsl %gs:(%esi), %eax # encoding: [0x65,0xad]
31 // 16: lodsl %gs:(%esi), %eax # encoding: [0x66,0x65,0x67,0xad]
32
33 lodsl (%edi), %eax
34 // ERR64: invalid operand
35 // ERR32: invalid operand
36 // ERR16: invalid operand
37
38 lodsl 44(%edi), %eax
39 // ERR64: invalid operand
40 // ERR32: invalid operand
41 // ERR16: invalid operand
42
43 lods (%esi), %ax
44 // 64: lodsw (%esi), %ax # encoding: [0x66,0x67,0xad]
45 // 32: lodsw (%esi), %ax # encoding: [0x66,0xad]
46 // 16: lodsw (%esi), %ax # encoding: [0x67,0xad]