[llvm] r326673 - [X86][MMX] Remove completed _mm_cvtsi32_si64 todo
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 4 06:57:26 PST 2018
Author: rksimon
Date: Sun Mar 4 06:57:26 2018
New Revision: 326673
URL: http://llvm.org/viewvc/llvm-project?rev=326673&view=rev
Log:
[X86][MMX] Remove completed _mm_cvtsi32_si64 todo
rL322525 - mmx zero constant support
rL322553 - mmx i32 zero extended value
rL326497 - mmx i64 general constant handling
Not all constants are folded, we generate some on the GPRs (similar to SSE build vector) where appropriate
Modified:
llvm/trunk/lib/Target/X86/README-MMX.txt
Modified: llvm/trunk/lib/Target/X86/README-MMX.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/README-MMX.txt?rev=326673&r1=326672&r2=326673&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/README-MMX.txt (original)
+++ llvm/trunk/lib/Target/X86/README-MMX.txt Sun Mar 4 06:57:26 2018
@@ -40,32 +40,3 @@ _qux:
movl %edx, 4(%eax)
addl $12, %esp
ret $4
-
-//===---------------------------------------------------------------------===//
-
-We generate crappy code for this:
-
-__m64 t() {
- return _mm_cvtsi32_si64(1);
-}
-
-_t:
- subl $12, %esp
- movl $1, %eax
- movd %eax, %mm0
- movq %mm0, (%esp)
- movl (%esp), %eax
- movl 4(%esp), %edx
- addl $12, %esp
- ret
-
-The extra stack traffic is covered in the previous entry. But the other reason
-is we are not smart about materializing constants in MMX registers. With -m64
-
- movl $1, %eax
- movd %eax, %mm0
- movd %mm0, %rax
- ret
-
-We should be using a constantpool load instead:
- movq LC0(%rip), %rax
More information about the llvm-commits
mailing list