diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2014-05-02 11:22:04 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2014-05-05 14:25:14 -0700 |
commit | 285ca99246160d12a3173076a661b6c524338baf (patch) | |
tree | 795e3b35ccd330d5ee60ebc04746ed242da80fc0 /gas | |
parent | c888a17da5c7b06eec4b1ed21e4afe84f9a41347 (diff) | |
download | gdb-285ca99246160d12a3173076a661b6c524338baf.zip gdb-285ca99246160d12a3173076a661b6c524338baf.tar.gz gdb-285ca99246160d12a3173076a661b6c524338baf.tar.bz2 |
Properly handle multiple opcode prefixes
This patch updates multiple opcode prefix processing:
1. Always print prefix together with bad opcode.
2. Since the last seen segment register prefix is active, we only print
the active segment register in the memory operand.
3. The 0xf2 and 0xf3 prefixes take precedence over the 0x66 prefix as the
opcode prefix. Also the last of the 0xf2 and 0xf3 prefixes wins.
4. Ignore invalid 0xf2/0xf3 prefixes if they aren't mandatory.
gas/testsuite/
PR binutils/16893
* gas/i386/katmai.d: Expect "gs" as prefix.
* gas/i386/long-1.s: Replace movapd with movss.
* gas/i386/x86-64-long-1.s: Likewise.
* gas/i386/long-1-intel.d: Updated.
* gas/i386/long-1.d: Likewise.
* gas/i386/x86-64-long-1-intel.d: Likewise.
* gas/i386/x86-64-long-1.d: Likewise.
* gas/i386/prefix.s: Add tests for multiple 0x66, 0x67, 0xf0,
0xf2 and 0xf3 prefixes.
* gas/i386/prefix.d: Updated.
opcodes/
PR binutils/16893
* i386-dis.c (twobyte_has_mandatory_prefix): New variable.
(end_codep): Likewise.
(mandatory_prefix): Likewise.
(active_seg_prefix): Likewise.
(ckprefix): Set active_seg_prefix to the active segment register
prefix.
(seg_prefix): Removed.
(get_valid_dis386): Use the last of PREFIX_REPNZ and PREFIX_REPZ
for prefix index. Ignore the index if it is invalid and the
mandatory prefix isn't required.
(print_insn): Set mandatory_prefix if the PREFIX_XXX prefix is
mandatory. Don't set PREFIX_REPZ/PREFIX_REPNZ/PREFIX_LOCK bits
in used_prefixes here. Don't print unused prefixes. Check
active_seg_prefix for the active segment register prefix.
Restore the DFLAG bit in sizeflag if the data size prefix is
unused. Check the unused mandatory PREFIX_XXX prefixes
(append_seg): Only print the segment register which gets used.
(OP_E_memory): Check active_seg_prefix for the segment register
prefix.
(OP_OFF): Likewise.
(OP_OFF64): Likewise.
(OP_DSreg): Set active_seg_prefix to PREFIX_DS if it is unset.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/testsuite/ChangeLog | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/katmai.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/long-1-intel.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/long-1.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/long-1.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/prefix.d | 63 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/prefix.s | 352 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-long-1-intel.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-long-1.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-long-1.s | 4 |
10 files changed, 437 insertions, 21 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 928adc4..8a92fe9 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,19 @@ +2014-05-05 H.J. Lu <hongjiu.lu@intel.com> + + PR binutils/16893 + * gas/i386/katmai.d: Expect "gs" as prefix. + + * gas/i386/long-1.s: Replace movapd with movss. + * gas/i386/x86-64-long-1.s: Likewise. + * gas/i386/long-1-intel.d: Updated. + * gas/i386/long-1.d: Likewise. + * gas/i386/x86-64-long-1-intel.d: Likewise. + * gas/i386/x86-64-long-1.d: Likewise. + + * gas/i386/prefix.s: Add tests for multiple 0x66, 0x67, 0xf0, + 0xf2 and 0xf3 prefixes. + * gas/i386/prefix.d: Updated. + 2014-05-02 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/opcode-intel.d: Undo the last change. diff --git a/gas/testsuite/gas/i386/katmai.d b/gas/testsuite/gas/i386/katmai.d index a1c6b97..50e573f 100644 --- a/gas/testsuite/gas/i386/katmai.d +++ b/gas/testsuite/gas/i386/katmai.d @@ -160,7 +160,6 @@ Disassembly of section .text: 237: 0f 18 0c 98 [ ]*prefetcht0 \(%eax,%ebx,4\) 23b: 0f 18 12 [ ]*prefetcht1 \(%edx\) 23e: 0f 18 19 [ ]*prefetcht2 \(%ecx\) - 241: 65 [ ]*gs - 242: 0f ae[ ]*\(bad\).* + 241: 65 0f ae[ ]*gs \(bad\).* 244: ff 00 [ ]*incl \(%eax\) #pass diff --git a/gas/testsuite/gas/i386/long-1-intel.d b/gas/testsuite/gas/i386/long-1-intel.d index 7a73462..2e52136 100644 --- a/gas/testsuite/gas/i386/long-1-intel.d +++ b/gas/testsuite/gas/i386/long-1-intel.d @@ -8,7 +8,7 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 66 0f 28 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) +[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 f3 0f 10 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) [ ]*[a-f0-9]+: 00 f2 add dl,dh -[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 66 0f 28 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movapd xmm0,XMMWORD PTR \[eax\] +[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 f3 0f 10 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movss xmm0,DWORD PTR \[eax\] #pass diff --git a/gas/testsuite/gas/i386/long-1.d b/gas/testsuite/gas/i386/long-1.d index 1dccd36..a8cd073 100644 --- a/gas/testsuite/gas/i386/long-1.d +++ b/gas/testsuite/gas/i386/long-1.d @@ -7,7 +7,7 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 66 0f 28 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) +[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 f3 0f 10 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) [ ]*[a-f0-9]+: 00 f2 add %dh,%dl -[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 66 0f 28 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movapd \(%eax\),%xmm0 +[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 f3 0f 10 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movss \(%eax\),%xmm0 #pass diff --git a/gas/testsuite/gas/i386/long-1.s b/gas/testsuite/gas/i386/long-1.s index 4551068..b7e509d 100644 --- a/gas/testsuite/gas/i386/long-1.s +++ b/gas/testsuite/gas/i386/long-1.s @@ -14,7 +14,7 @@ foo: .byte 0xf2 .byte 0xf0 .byte 0xf0 -movapd (%eax), %xmm0 +movss (%eax), %xmm0 .byte 0xf2 .byte 0xf0 .byte 0xf0 @@ -27,4 +27,4 @@ movapd (%eax), %xmm0 .byte 0xf0 .byte 0xf0 .byte 0xf0 -movapd (%eax), %xmm0 +movss (%eax), %xmm0 diff --git a/gas/testsuite/gas/i386/prefix.d b/gas/testsuite/gas/i386/prefix.d index 4139658..d9f0ae2 100644 --- a/gas/testsuite/gas/i386/prefix.d +++ b/gas/testsuite/gas/i386/prefix.d @@ -5,11 +5,60 @@ Disassembly of section .text: -0+000 <foo>: - 0: 9b 26 67 d9 3c[ ]+fstcw[ ]+%es:\(%si\) - 5: 9b df e0 [ ]*fstsw %ax - 8: 9b df e0 [ ]*fstsw %ax - b: 9b 67 df e0 [ ]*addr16 fstsw %ax - f: 36 67 66 f3 a7 [ ]*repz cmpsw %es:\(%di\),%ss:\(%si\) - 14: 26 9b[ ]*es fwait +0+ <foo>: +[ ]*[a-f0-9]+: 9b 26 67 d9 3c fstcw %es:\(%si\) +[ ]*[a-f0-9]+: 9b df e0 fstsw %ax +[ ]*[a-f0-9]+: 9b df e0 fstsw %ax +[ ]*[a-f0-9]+: 9b 67 df e0 addr16 fstsw %ax +[ ]*[a-f0-9]+: 36 67 66 f3 a7 repz cmpsw %es:\(%di\),%ss:\(%si\) +[ ]*[a-f0-9]+: 26 9b es fwait +[ ]*[a-f0-9]+: 66 f2 0f 38 17 data16 \(bad\) +[ ]*[a-f0-9]+: f2 66 0f 54 repnz \(bad\) +[ ]*[a-f0-9]+: f2 0f 54 repnz \(bad\) +[ ]*[a-f0-9]+: f2 66 0f 11 22 data16 movsd %xmm4,\(%edx\) +[ ]*[a-f0-9]+: f2 67 66 0f 11 22 data16 movsd %xmm4,\(%bp,%si\) +[ ]*[a-f0-9]+: f2 67 f0 66 0f 11 22 lock data16 movsd %xmm4,\(%bp,%si\) +[ ]*[a-f0-9]+: f3 66 0f 11 22 data16 movss %xmm4,\(%edx\) +[ ]*[a-f0-9]+: f3 67 f0 66 0f 11 22 lock data16 movss %xmm4,\(%bp,%si\) +[ ]*[a-f0-9]+: f3 67 f2 66 0f 11 22 repz data16 movsd %xmm4,\(%bp,%si\) +[ ]*[a-f0-9]+: f3 66 3e 0f 11 22 data16 movss %xmm4,%ds:\(%edx\) +[ ]*[a-f0-9]+: f2 66 36 0f 11 22 data16 movsd %xmm4,%ss:\(%edx\) +[ ]*[a-f0-9]+: f3 f0 f2 66 36 0f 11 22 repz lock data16 movsd %xmm4,%ss:\(%edx\) +[ ]*[a-f0-9]+: f2 66 3e 36 0f 11 22 data16 ds movsd %xmm4,%ss:\(%edx\) +[ ]*[a-f0-9]+: f2 67 66 3e 36 0f 11 22 data16 ds movsd %xmm4,%ss:\(%bp,%si\) +[ ]*[a-f0-9]+: f2 67 f0 66 3e 36 0f 11 22 lock data16 ds movsd %xmm4,%ss:\(%bp,%si\) +[ ]*[a-f0-9]+: f3 66 3e 36 0f 11 22 data16 ds movss %xmm4,%ss:\(%edx\) +[ ]*[a-f0-9]+: f3 f0 66 3e 36 0f 11 22 lock data16 ds movss %xmm4,%ss:\(%edx\) +[ ]*[a-f0-9]+: f3 67 f2 66 3e 36 0f 11 22 repz data16 ds movsd %xmm4,%ss:\(%bp,%si\) +[ ]*[a-f0-9]+: f2 66 90 repnz xchg %ax,%ax +[ ]*[a-f0-9]+: f2 67 66 90 repnz addr16 xchg %ax,%ax +[ ]*[a-f0-9]+: f2 67 f0 66 90 repnz addr16 lock xchg %ax,%ax +[ ]*[a-f0-9]+: f3 66 90 data16 pause +[ ]*[a-f0-9]+: f3 67 f0 66 90 addr16 lock data16 pause +[ ]*[a-f0-9]+: f3 67 f2 66 90 repz addr16 repnz xchg %ax,%ax +[ ]*[a-f0-9]+: f2 3e 90 repnz ds nop +[ ]*[a-f0-9]+: f2 f0 67 3e 90 repnz lock addr16 ds nop +[ ]*[a-f0-9]+: f3 3e 90 ds pause +[ ]*[a-f0-9]+: f3 66 3e 90 data16 ds pause +[ ]*[a-f0-9]+: f3 f0 3e 90 lock ds pause +[ ]*[a-f0-9]+: f3 f0 67 3e 90 lock addr16 ds pause +[ ]*[a-f0-9]+: f3 f2 67 3e 90 repz repnz addr16 ds nop +[ ]*[a-f0-9]+: 66 f0 36 90 lock ss xchg %ax,%ax +[ ]*[a-f0-9]+: f2 36 90 repnz ss nop +[ ]*[a-f0-9]+: f2 66 36 90 repnz ss xchg %ax,%ax +[ ]*[a-f0-9]+: f2 f0 36 90 repnz lock ss nop +[ ]*[a-f0-9]+: f2 f0 67 36 90 repnz lock addr16 ss nop +[ ]*[a-f0-9]+: f3 36 90 ss pause +[ ]*[a-f0-9]+: f3 67 36 90 addr16 ss pause +[ ]*[a-f0-9]+: f3 f0 67 36 90 lock addr16 ss pause +[ ]*[a-f0-9]+: f3 f2 36 90 repz repnz ss nop +[ ]*[a-f0-9]+: f3 f2 67 36 90 repz repnz addr16 ss nop +[ ]*[a-f0-9]+: f3 f0 f2 66 36 90 repz lock repnz ss xchg %ax,%ax +[ ]*[a-f0-9]+: 66 3e 36 90 ds ss xchg %ax,%ax +[ ]*[a-f0-9]+: 67 66 3e 36 90 addr16 ds ss xchg %ax,%ax +[ ]*[a-f0-9]+: 67 f0 66 3e 36 90 addr16 lock ds ss xchg %ax,%ax +[ ]*[a-f0-9]+: f3 66 3e 36 90 data16 ds ss pause +[ ]*[a-f0-9]+: f3 f0 66 3e 36 90 lock data16 ds ss pause +[ ]*[a-f0-9]+: f3 f2 67 3e 36 90 repz repnz addr16 ds ss nop +[ ]*[a-f0-9]+: f3 67 f2 66 3e 36 90 repz addr16 repnz ds ss xchg %ax,%ax #pass diff --git a/gas/testsuite/gas/i386/prefix.s b/gas/testsuite/gas/i386/prefix.s index 2bf3c71..07020ea 100644 --- a/gas/testsuite/gas/i386/prefix.s +++ b/gas/testsuite/gas/i386/prefix.s @@ -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 diff --git a/gas/testsuite/gas/i386/x86-64-long-1-intel.d b/gas/testsuite/gas/i386/x86-64-long-1-intel.d index 28b291a..0ced3f0 100644 --- a/gas/testsuite/gas/i386/x86-64-long-1-intel.d +++ b/gas/testsuite/gas/i386/x86-64-long-1-intel.d @@ -8,7 +8,7 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 66 0f 28 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) +[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 f3 0f 10 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) [ ]*[a-f0-9]+: 00 f2 add dl,dh -[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 66 0f 28 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movapd xmm0,XMMWORD PTR \[rax\] +[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 f3 0f 10 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movss xmm0,DWORD PTR \[rax\] #pass diff --git a/gas/testsuite/gas/i386/x86-64-long-1.d b/gas/testsuite/gas/i386/x86-64-long-1.d index dbb603a..20be6f4 100644 --- a/gas/testsuite/gas/i386/x86-64-long-1.d +++ b/gas/testsuite/gas/i386/x86-64-long-1.d @@ -7,7 +7,7 @@ Disassembly of section .text: 0+ <foo>: -[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 66 0f 28 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) +[ ]*[a-f0-9]+: f2 f0 f0 f0 f2 f2 f2 f2 f2 f2 f0 f0 f3 0f 10 repnz lock lock lock repnz repnz repnz repnz repnz repnz lock lock \(bad\) [ ]*[a-f0-9]+: 00 f2 add %dh,%dl -[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 66 0f 28 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movapd \(%rax\),%xmm0 +[ ]*[a-f0-9]+: f0 f0 f0 f2 f2 f2 f2 f0 f0 f0 f0 f3 0f 10 00 lock lock lock repnz repnz repnz repnz lock lock lock lock movss \(%rax\),%xmm0 #pass diff --git a/gas/testsuite/gas/i386/x86-64-long-1.s b/gas/testsuite/gas/i386/x86-64-long-1.s index 73f9a53..2b91242 100644 --- a/gas/testsuite/gas/i386/x86-64-long-1.s +++ b/gas/testsuite/gas/i386/x86-64-long-1.s @@ -14,7 +14,7 @@ foo: .byte 0xf2 .byte 0xf0 .byte 0xf0 -movapd (%rax), %xmm0 +movss (%rax), %xmm0 .byte 0xf2 .byte 0xf0 .byte 0xf0 @@ -27,4 +27,4 @@ movapd (%rax), %xmm0 .byte 0xf0 .byte 0xf0 .byte 0xf0 -movapd (%rax), %xmm0 +movss (%rax), %xmm0 |