diff options
Diffstat (limited to 'test/MC/X86/intel-syntax.s')
-rw-r--r-- | test/MC/X86/intel-syntax.s | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s index c7ec77eadfee..795893673f81 100644 --- a/test/MC/X86/intel-syntax.s +++ b/test/MC/X86/intel-syntax.s @@ -1,4 +1,6 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s > %t 2> %t.err +// RUN: FileCheck < %t %s +// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s _test: xor EAX, EAX @@ -72,8 +74,8 @@ _main: // CHECK: vshufpd $1, %xmm2, %xmm1, %xmm0 vshufpd XMM0, XMM1, XMM2, 1 // CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1 - vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8 -// CHECK: movsd -8, %xmm5 + vpgatherdd XMM10, XMMWORD PTR [R15 + 2*XMM9], XMM8 +// CHECK: movsd -8, %xmm5 movsd XMM5, QWORD PTR [-8] // CHECK: movl %ecx, (%eax) mov [eax], ecx @@ -751,3 +753,44 @@ loopnz _foo sidt fword ptr [eax] // CHECK: sidtq (%eax) + +ins byte ptr [eax], dx +// CHECK: insb %dx, %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: ins byte ptr [eax], dx +outs dx, word ptr [eax] +// CHECK: outsw (%esi), %dx +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: outs dx, word ptr [eax] +lods dword ptr [eax] +// CHECK: lodsl (%esi), %eax +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: lods dword ptr [eax] +stos qword ptr [eax] +// CHECK: stosq %rax, %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: stos qword ptr [eax] +scas byte ptr [eax] +// CHECK: scasb %es:(%edi), %al +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: scas byte ptr [eax] +cmps word ptr [eax], word ptr [ebx] +// CHECK: cmpsw %es:(%edi), (%esi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx] +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx] +movs dword ptr [eax], dword ptr [ebx] +// CHECK: movsl (%esi), %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx] +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx] + +movsd qword ptr [rax], xmm0 +// CHECK: movsd %xmm0, (%rax) +// CHECK-STDERR-NOT: movsd qword ptr [rax], xmm0 + +xlat byte ptr [eax] +// CHECK: xlatb +// CHECK-STDERR: memory operand is only for determining the size, (R|E)BX will be used for the location |