[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