[PATCH] [x86] Combine x86mmx/i64 to v2i64 conversion to use scalar_to_vector
Bruno Cardoso Lopes
bruno.cardoso at gmail.com
Thu Jan 22 05:10:22 PST 2015
Hi chandlerc, spatel, nadav,
Handle the poor codegen for i64/x86xmm->v2i64 (%mm -> %xmm) moves. Instead of using stack store/load pair to do the job, use scalar_to_vector directly, which in the MMX case can use movq2dq. This was the current behavior prior to improvements for vector legalization of extloads in r213897. This patch fixes the regression and as a side-effect also remove some unnecessary shuffles.
In the new attached testcase, we go from:
pshufw $-18, (%rdi), %mm0
movq %mm0, -8(%rsp)
movq -8(%rsp), %xmm0
pshufd $-44, %xmm0, %xmm0
movd %xmm0, %eax
...
To:
pshufw $-18, (%rdi), %mm0
movq2dq %mm0, %xmm0
movd %xmm0, %eax
...
REPOSITORY
rL LLVM
http://reviews.llvm.org/D7126
Files:
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/2012-01-18-vbitcast.ll
test/CodeGen/X86/lower-bitcast.ll
test/CodeGen/X86/mmx-movq2dq.ll
test/CodeGen/X86/widen_load-2.ll
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7126.18606.patch
Type: text/x-patch
Size: 4914 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150122/caa79df4/attachment.bin>
More information about the llvm-commits
mailing list