mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-21 00:32:23 +00:00
2ab3b563da
Instructions like 'fxsave' and control flow instructions like 'jne' match any operand size. The loop I added to the Intel syntax matcher assumed that using a different size would give a different instruction. Now it handles the case where we get the same instruction for different memory operand sizes. This also allows us to remove the hack we had for unsized absolute memory operands, because we can successfully match things like 'jnz' without reporting ambiguity. Removing this hack uncovered test case involving 'fadd' that was ambiguous. The memory operand could have been single or double precision. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216604 91177308-0d34-0410-b5e6-96231b3b80d8
48 lines
1.3 KiB
ArmAsm
48 lines
1.3 KiB
ArmAsm
// RUN: not llvm-mc -triple i686-unknown-unknown %s -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
.intel_syntax
|
|
|
|
// Basic case of ambiguity for inc.
|
|
|
|
inc [eax]
|
|
// CHECK: error: ambiguous operand size for instruction 'inc'
|
|
inc dword ptr [eax]
|
|
inc word ptr [eax]
|
|
inc byte ptr [eax]
|
|
// CHECK-NOT: error:
|
|
|
|
// Other ambiguous instructions. Anything that doesn't take a register,
|
|
// basically.
|
|
|
|
dec [eax]
|
|
// CHECK: error: ambiguous operand size for instruction 'dec'
|
|
mov [eax], 1
|
|
// CHECK: error: ambiguous operand size for instruction 'mov'
|
|
and [eax], 0
|
|
// CHECK: error: ambiguous operand size for instruction 'and'
|
|
or [eax], 1
|
|
// CHECK: error: ambiguous operand size for instruction 'or'
|
|
add [eax], 1
|
|
// CHECK: error: ambiguous operand size for instruction 'add'
|
|
sub [eax], 1
|
|
// CHECK: error: ambiguous operand size for instruction 'sub'
|
|
|
|
// gas assumes these instructions are pointer-sized by default, and we follow
|
|
// suit.
|
|
push [eax]
|
|
call [eax]
|
|
jmp [eax]
|
|
// CHECK-NOT: error:
|
|
|
|
add byte ptr [eax], eax
|
|
// CHECK: error: invalid operand for instruction
|
|
|
|
add byte ptr [eax], eax
|
|
// CHECK: error: invalid operand for instruction
|
|
|
|
add rax, 3
|
|
// CHECK: error: register %rax is only available in 64-bit mode
|
|
|
|
fadd "?half@?0??bar@@YAXXZ@4NA"
|
|
// CHECK: error: ambiguous operand size for instruction 'fadd'
|