xref: /llvm-project/llvm/test/MC/X86/intel-syntax-error.s (revision 10e2f73793981045ae35239fc5590d131a486f11)
1e7a552b5SReid Kleckner// RUN: not llvm-mc -triple i686-unknown-unknown -x86-asm-syntax=att %s -o /dev/null 2>&1 | FileCheck %s
2e7a552b5SReid Kleckner
3e7a552b5SReid Kleckner// This tests weird forms of Intel and AT&T syntax that gas accepts that we
4e7a552b5SReid Kleckner// don't.  The [no]prefix operand of the syntax directive indicates whether
5e7a552b5SReid Kleckner// registers need a '%' prefix.
6e7a552b5SReid Kleckner
7e7a552b5SReid Kleckner.intel_syntax prefix
8e7a552b5SReid Kleckner// CHECK: error: '.intel_syntax prefix' is not supported: registers must not have a '%' prefix in .intel_syntax
9e7a552b5SReid Kleckner_test2:
10e7a552b5SReid Kleckner	mov	DWORD PTR [%esp - 4], 257
11e7a552b5SReid Kleckner.att_syntax noprefix
12e7a552b5SReid Kleckner// CHECK: error: '.att_syntax noprefix' is not supported: registers must have a '%' prefix in .att_syntax
13e7a552b5SReid Kleckner	movl	$257, -4(esp)
148601ac11SNirav Dave
158601ac11SNirav Dave
168601ac11SNirav Dave.intel_syntax noprefix
178601ac11SNirav Dave
188601ac11SNirav Dave.global arr
198601ac11SNirav Dave.global i
208601ac11SNirav Dave.set FOO, 2
21d8912892SCoby Tayree
228449b238SDouglas Katzman//CHECK: error: cannot use more than one symbol in memory operand
238601ac11SNirav Davemov eax, DWORD PTR arr[i]
240411e866SDouglas Katzman//CHECK: error: rip can only be used as a base register
250411e866SDouglas Katzman.code64
260411e866SDouglas Katzmanmov rax, rip
270411e866SDouglas Katzman//CHECK: error: invalid base+index expression
280411e866SDouglas Katzmanmov rbx, [rax+rip]
29d8912892SCoby Tayree//CHECK: error: scale factor in address must be 1, 2, 4 or 8
30d8912892SCoby Tayreelea RDX, [unknown_number * RAX + RBX + _foo]
31d8912892SCoby Tayree//CHECK: error: BaseReg/IndexReg already set!
32d8912892SCoby Tayreelea RDX, [4 * RAX + 27 * RBX + _pat]
33d8912892SCoby Tayree//CHECK: error: unexpected bracket encountered
34d8912892SCoby Tayreelea RDX, [[arr]
35d8912892SCoby Tayree//CHECK: error: unexpected bracket encountered
36d8912892SCoby Tayreelea RDX, [arr[]
3703ddad85SAndrew V. Tischenko
3803ddad85SAndrew V. Tischenko.intel_syntax
3903ddad85SAndrew V. Tischenko
4003ddad85SAndrew V. Tischenko// CHECK: error: invalid operand for instruction
4103ddad85SAndrew V. Tischenkopunpcklbw mm0, qword ptr [rsp]
4203ddad85SAndrew V. Tischenko// CHECK: error: invalid operand for instruction
4303ddad85SAndrew V. Tischenkopunpcklwd mm0, word ptr [rsp]
4403ddad85SAndrew V. Tischenko// CHECK: error: invalid operand for instruction
4503ddad85SAndrew V. Tischenkopunpckldq mm0, qword ptr [rsp]
4603ddad85SAndrew V. Tischenko
47cd18bb52SCraig Topper// CHECK: error: invalid 16-bit base register
48cd18bb52SCraig Topperlea bx, [ax]
49*10e2f737SCraig Topper
50*10e2f737SCraig Topper// CHECK: invalid base+index expression
51*10e2f737SCraig Topperlea eax, [eax+esp*1]
52*10e2f737SCraig Topper
53*10e2f737SCraig Topper// CHECK: 16-bit addresses cannot have a scale
54*10e2f737SCraig Topperlea ax, [bx+si*1]
55