[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