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