From 3a76bc29d79cf7e2b9d118ffe52dc62a3165c1ca Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sun, 4 Mar 2018 14:57:26 +0000 Subject: [PATCH] [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 llvm-svn: 326673 --- llvm/lib/Target/X86/README-MMX.txt | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/llvm/lib/Target/X86/README-MMX.txt b/llvm/lib/Target/X86/README-MMX.txt index a6c8616b6d2c..f3a625e65dc6 100644 --- a/llvm/lib/Target/X86/README-MMX.txt +++ b/llvm/lib/Target/X86/README-MMX.txt @@ -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