1// RUN: not llvm-mc -triple i686-unknown-unknown %s -o /dev/null 2>&1 | FileCheck %s
2
3.intel_syntax
4
5// Basic case of ambiguity for inc.
6
7inc [eax]
8// CHECK: error: ambiguous operand size for instruction 'inc'
9inc dword ptr [eax]
10inc word ptr [eax]
11inc byte ptr [eax]
12// CHECK-NOT: error:
13
14// Other ambiguous instructions.  Anything that doesn't take a register,
15// basically.
16
17dec [eax]
18// CHECK: error: ambiguous operand size for instruction 'dec'
19mov [eax], 1
20// CHECK: error: ambiguous operand size for instruction 'mov'
21and [eax], 0
22// CHECK: error: ambiguous operand size for instruction 'and'
23or [eax], 1
24// CHECK: error: ambiguous operand size for instruction 'or'
25add [eax], 1
26// CHECK: error: ambiguous operand size for instruction 'add'
27sub [eax], 1
28// CHECK: error: ambiguous operand size for instruction 'sub'
29
30// gas assumes these instructions are pointer-sized by default, and we follow
31// suit.
32push [eax]
33call [eax]
34jmp [eax]
35// CHECK-NOT: error:
36
37add byte ptr [eax], eax
38// CHECK: error: invalid operand for instruction
39
40add byte ptr [eax], eax
41// CHECK: error: invalid operand for instruction
42
43add rax, 3
44// CHECK: error: register %rax is only available in 64-bit mode
45
46fadd   "?half@?0??bar@@YAXXZ@4NA"
47// CHECK: error: ambiguous operand size for instruction 'fadd'
48
49// Instruction line with PTR inside check that they don't accept register as memory.
50
51// CHECK:  error: expected memory operand after 'ptr', found register operand instead
52// CHECK: andps xmm1, xmmword ptr xmm1
53andps xmm1, xmmword ptr xmm1
54// CHECK:  error: expected memory operand after 'ptr', found register operand instead
55// CHECK: andps xmmword ptr xmm1, xmm1
56andps xmmword ptr xmm1, xmm1
57// CHECK:  error: expected memory operand after 'ptr', found register operand instead
58// CHECK: mov dword ptr eax, ebx
59mov dword ptr eax, ebx
60