Testcase: test.s: .text Foo: cvtpd2pi %xmm0,%mm0 cvttpd2pi %xmm0,%mm0 cvtpi2pd %mm0,%xmm0
Assemble it: as test.s Disassemble : objdump -dw a.out 0000000000000000 <foo>: 0: 66 0f 2d c0 cvtpd2pi %xmm0,%xmm0 4: 66 0f 2c c0 cvttpd2pi %xmm0,%xmm0 8: 66 0f 2a c0 cvtpi2pd %xmm0,%xmm0 As seen abovce the disassembler emits %xmm instead of %mm as register operands. This is because cvt* are the only instructions which have both mmx and xmm register operands and have "66" in their opcodes. In general "66" was used in differentiating between having xmm(SSE) and mm (MMX) operands/instructions.(eg:padd*,pand etc.,). Hence the above cvt* are special cases and need to handled separately. -- Summary: Disassembler: wrong operands are emitted with cvt* instructions Product: binutils Version: 2.18 (HEAD) Status: NEW Severity: normal Priority: P2 Component: gas AssignedTo: unassigned at sources dot redhat dot com ReportedBy: dwarak dot rajagopal at amd dot com CC: bug-binutils at gnu dot org,dwarak dot rajagopal at amd dot com http://sourceware.org/bugzilla/show_bug.cgi?id=3000 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils