[llvm-commits] [llvm] r77940 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86InstrMMX.td test/CodeGen/X86/2009-08-02-mmx-scalar-to-vector.ll test/CodeGen/X86/mmx-bitcast-to-i64.ll

Rafael Espindola espindola at google.com
Sun Aug 2 20:20:41 PDT 2009


> Really?  I get two movd's for the following testcase:

So do I. I noticed the movq in the test for bug 4669. I now realize
that it was in a load. For example, gcc produces a movq for

__m64 c(__m64 *x) { return *x;}

On interesting experiment is assembling and disassembling the file. We get
--------------
objdump  -S a.out
a.out:     file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <a>:
   0:   66 48 0f 7e c0          movq   %xmm0,%rax
   5:   c3                      retq

0000000000000006 <b>:
   6:   66 48 0f 6e c7          movq   %rdi,%xmm0
   b:   c3                      retq

000000000000000c <c>:
   c:   f3 0f 7e 07             movq   (%rdi),%xmm0
  10:   c3                      retq
----------------

So it looks like the gnu assembler will convert movd into movq. This
might still be a problem for the JIT, since it can't use the
assembler's help.

Cheers,
-- 
Rafael Avila de Espindola

Google | Gordon House | Barrow Street | Dublin 4 | Ireland
Registered in Dublin, Ireland | Registration Number: 368047




More information about the llvm-commits mailing list