x86/Intel: support "mmword ptr"
[deliverable/binutils-gdb.git] / gas / testsuite / gas / i386 / intelok.s
index 04fedbcc1bf94d8e9aeb23dac8ef6c346baf02d6..abd98b460c9fe45d36a926882ddcf1ea84ac86f5 100644 (file)
@@ -1,6 +1,9 @@
        .intel_syntax noprefix
        .text
 start:
+
+       # operand sizes
+
        add     al, [eax]
        add     al, byte ptr [eax]
        add     ax, [eax]
@@ -18,6 +21,8 @@ start:
        addsd   xmm0, qword ptr [eax]
        addss   xmm0, [eax]
        addss   xmm0, dword ptr [eax]
+       bound   ax, dword ptr [ecx]
+       bound   eax, qword ptr [ecx]
        call    word ptr [eax]
        call    dword ptr [eax]
        call    fword ptr [eax]
@@ -28,9 +33,9 @@ start:
        fadd    dword ptr [eax]
        fadd    qword ptr [eax]
        fbld    [eax]
-#XXX   fbld    tbyte ptr [eax]
+       fbld    tbyte ptr [eax]
        fbstp   [eax]
-#XXX   fbstp   tbyte ptr [eax]
+       fbstp   tbyte ptr [eax]
        fiadd   dword ptr [eax]
        fiadd   word ptr [eax]
        fild    dword ptr [eax]
@@ -48,7 +53,7 @@ start:
        fld     qword ptr [eax]
        fld     tbyte ptr [eax]
        fldcw   [eax]
-#XXX   fldcw   word ptr [eax]
+       fldcw   word ptr [eax]
        fldenv  [eax]
        fldenvd [eax]
        fldenvw [eax]
@@ -78,9 +83,11 @@ start:
        movsx   eax, byte ptr [eax]
        movsx   eax, word ptr [eax]
        paddb   mm0, [eax]
+       paddb   mm0, mmword ptr [eax]
        paddb   mm0, qword ptr [eax]
        paddb   xmm0, [eax]
        paddb   xmm0, xmmword ptr [eax]
+       paddb   xmm0, oword ptr [eax]
        pinsrw  mm0, word ptr [eax], 3
        pinsrw  xmm0, word ptr [eax], 7
        push    dword ptr [eax]
@@ -88,6 +95,65 @@ start:
        xlat    byte ptr [ebx]
        xlatb
 
+       # memory operands
+
+       mov     eax, dword ptr [byte+eax]
+       mov     eax, dword ptr byte[eax]
+       mov     eax, [dword+eax]
+       mov     eax, dword[eax]
+       mov     eax, [fword+eax]
+       mov     eax, fword[eax]
+       mov     eax, [qword+eax+dword]
+       mov     eax, qword[eax+dword]
+       mov     eax, [tbyte+eax+dword*2]
+       mov     eax, tbyte[eax+dword*2]
+       mov     eax, [word+eax*dword]
+       mov     eax, word[eax*dword]
+       movzx   eax, word ptr byte ptr [eax]
+       movzx   eax, byte ptr [word ptr [eax]]
+       movzx   eax, word ptr es:[eax]
+       movzx   eax, byte ptr [fs:[eax]]
+       movzx   eax, gs:word ptr [eax]
+
+       mov     eax, FLAT:1
+       mov     eax, FLAT:[1]
+       mov     eax, gs:1
+       mov     eax, gs:[1]
+       mov     eax, x
+       mov     eax, FLAT:x
+       mov     eax, gs:x
+       mov     eax, [x]
+
+       mov     eax, [eax*1]
+       mov     eax, [eax*+1]
+       mov     eax, [+1*eax]
+       mov     eax, [eax*+2]
+       mov     eax, [+2*eax]
+       mov     eax, [ecx*dword]
+       mov     eax, [dword*ecx]
+       mov     eax, 1[eax]
+       mov     eax, [eax]+1
+       mov     eax, [eax - 5 + ecx]
+       mov     eax, [eax + 5 and 3 + ecx]
+       mov     eax, [eax + 5 * 3 + ecx]
+       mov     eax, [oword][eax]
+       mov     eax, [eax][oword]
+       mov     eax, xmmword[eax][ecx]
+       mov     eax, [eax]+[ecx]
+       mov     eax, [eax]+1[ecx]
+       mov     eax, [eax+2[ecx]]
+       mov     eax, [eax][ecx]+3
+       mov     eax, [4][eax][ecx]
+       mov     eax, [eax][5][ecx]
+       mov     eax, [eax][ecx][6]
+       mov     eax, [eax+ecx*(2+2)+7]
+       mov     eax, [eax+(ecx+2)*4]
+       mov     eax, [[eax]]
+       mov     eax, [eax[ecx]]
+       mov     eax, [[eax][ecx]]
+       mov     eax, es:[eax]
+       mov     eax, fs:gs:[eax]
+
        # expressions
 
        push    + 1
@@ -103,3 +169,53 @@ start:
        push    6 and 3
        push    7 xor 4
        push    8 or 5
+
+       push    +dword
+       push    -dword
+       push    not dword
+       push    not +dword
+       push    not -dword
+       push    not not dword
+
+       # offset expressions
+
+       mov     eax, 1
+       mov     eax, [1]
+       mov     eax, dword ptr 1
+       mov     eax, dword ptr [1]
+       mov     eax, offset x
+       mov     eax, offset flat:x
+       mov     eax, offset gs:x
+       mov     eax, offset [x]
+       mov     eax, offset flat:[x]
+       mov     eax, offset gs:[x]
+       mov     eax, [offset x]
+       mov     eax, [offset [x]]
+       mov     eax, dword ptr [offset [x]]
+       mov     eax, FLAT:[offset [x]]
+       mov     eax, gs:[offset [x]]
+       mov     eax, offset [dword ptr [x]]
+       mov     eax, offset [gs:[x]]
+       mov     eax, [eax + offset x]
+       mov     eax, [eax + offset 1]
+       mov     eax, [offset x + eax]
+       mov     eax, [offset 1 + eax]
+       mov     eax, offset x + 1[eax]
+       mov     eax, [eax] + offset x
+       mov     eax, [eax] + offset 1
+       mov     eax, offset x + [1]
+       mov     eax, [offset x] - [1]
+       mov     eax, offset x + es:[2]
+       mov     eax, offset x + offset es:[3]
+       mov     eax, [4] + offset x
+       mov     eax, [5] + [offset x]
+       mov     eax, ss:[6] + offset x
+       mov     eax, ss:[7] + [offset x]
+
+       # other operands
+       call    3:5
+       jmp     5:[3]
+       call    dword ptr xtrn
+       jmp     word ptr xtrn
+       call    [xtrn]
+       jmp     [xtrn]
This page took 0.029724 seconds and 4 git commands to generate.