Properly handle multiple opcode prefixes
[external/binutils.git] / gas / testsuite / gas / i386 / prefix.s
index 2bf3c71..07020ea 100644 (file)
@@ -4,5 +4,357 @@
 
  es fwait
 
+       .byte 0x66
+       .byte 0xf2
+       .byte 0x0f
+       .byte 0x38
+       .byte 0x17
+
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x54
+
+       .byte 0xf2
+       .byte 0x0f
+       .byte 0x54
+
+# data16 movsd %xmm4,(%edx)
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 movsd %xmm4,(%bp,%si)
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# lock data16 movsd %xmm4,(%bp,%si)
+       .byte 0xf2
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 movss %xmm4,(%edx)
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# lock data16 movss %xmm4,(%bp,%si)
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# repz data16 movsd %xmm4,(%bp,%si)
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 movss %xmm4,%ds:(%edx)
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 movsd %xmm4,%ss:(%edx)
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# repz lock data16 movsd %xmm4,%ss:(%edx)
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 ds movsd %xmm4,%ss:(%edx)
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 ds movsd %xmm4,%ss:(%bp,%si)
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# lock data16 ds movsd %xmm4,%ss:(%bp,%si)
+       .byte 0xf2
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# data16 ds movss %xmm4,%ss:(%edx)
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# lock data16 ds movss %xmm4,%ss:(%edx)
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# repz data16 ds movsd %xmm4,%ss:(%bp,%si)
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x0f
+       .byte 0x11
+       .byte 0x22
+
+# repnz; xchg %ax,%ax
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x90
+
+# repnz; addr16 xchg %ax,%ax
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x66
+       .byte 0x90
+
+# repnz; addr16 lock xchg %ax,%ax
+       .byte 0xf2
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x90
+
+# data16 pause
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x90
+
+# addr16 lock data16 pause
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x90
+
+# repz; addr16; repnz; xchg %ax,%ax
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x90
+
+# repnz; ds nop
+       .byte 0xf2
+       .byte 0x3e
+       .byte 0x90
+
+# repnz; lock addr16 ds nop
+       .byte 0xf2
+       .byte 0xf0
+       .byte 0x67
+       .byte 0x3e
+       .byte 0x90
+
+# ds pause
+       .byte 0xf3
+       .byte 0x3e
+       .byte 0x90
+
+# data16 ds pause
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x90
+
+# lock ds pause
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0x3e
+       .byte 0x90
+
+# lock addr16 ds pause
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0x67
+       .byte 0x3e
+       .byte 0x90
+
+# repz; repnz; addr16 ds nop
+       .byte 0xf3
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x3e
+       .byte 0x90
+
+# lock ss xchg %ax,%ax
+       .byte 0x66
+       .byte 0xf0
+       .byte 0x36
+       .byte 0x90
+
+# repnz; ss nop
+       .byte 0xf2
+       .byte 0x36
+       .byte 0x90
+
+# repnz; ss xchg %ax,%ax
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x36
+       .byte 0x90
+
+# repnz; lock ss nop
+       .byte 0xf2
+       .byte 0xf0
+       .byte 0x36
+       .byte 0x90
+
+# repnz; lock addr16 ss nop
+       .byte 0xf2
+       .byte 0xf0
+       .byte 0x67
+       .byte 0x36
+       .byte 0x90
+
+# ss pause
+       .byte 0xf3
+       .byte 0x36
+       .byte 0x90
+
+# addr16 ss pause
+       .byte 0xf3
+       .byte 0x67
+       .byte 0x36
+       .byte 0x90
+
+# lock addr16 ss pause
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0x67
+       .byte 0x36
+       .byte 0x90
+
+# repz; repnz; ss nop
+       .byte 0xf3
+       .byte 0xf2
+       .byte 0x36
+       .byte 0x90
+
+# repz; repnz; addr16 ss nop
+       .byte 0xf3
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x36
+       .byte 0x90
+
+# repz; lock; repnz; ss xchg %ax,%ax
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x36
+       .byte 0x90
+
+# ds ss xchg %ax,%ax
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# addr16 ds ss xchg %ax,%ax
+       .byte 0x67
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# addr16 lock ds ss xchg %ax,%ax
+       .byte 0x67
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# data16 ds ss pause
+       .byte 0xf3
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# lock data16 ds ss pause
+       .byte 0xf3
+       .byte 0xf0
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# repz; repnz; addr16 ds ss nop
+       .byte 0xf3
+       .byte 0xf2
+       .byte 0x67
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
+# repz; addr16; repnz; ds ss xchg %ax,%ax
+       .byte 0xf3
+       .byte 0x67
+       .byte 0xf2
+       .byte 0x66
+       .byte 0x3e
+       .byte 0x36
+       .byte 0x90
+
 # Get a good alignment.
  .p2align      4,0