[PATCH] [X86][FastISel] Avoid introducing legacy SSE instructions if the subtarget has AVX.

Andrea Di Biagio Andrea_DiBiagio at sn.scee.net
Thu Feb 5 08:06:41 PST 2015


Hi craig.topper, mkuper, ributzka,

This patch teaches X86FastISel how to select scalar float/double convert operations using AVX instructions.

Before this patch, X86FastISel always selected legacy SSE instructions for FPExt (from float to double) and FPTrunc (from double to float).

For example:
\code
  define double @foo(float %f) {
    %conv = fpext float %f to double
    ret double %conv
  }
\end code

Before (with -mattr=+avx -fast-isel), X86FastIsel selected a CVTSS2SDrr which is
legacy SSE:
  cvtss2sd %xmm0, %xmm0

With this patch (with -mattr=+avx -fast-isel), X86FastIsel selects a VCVTSS2SDrr instead:
  vcvtss2sd %xmm0, %xmm0, %xmm0

Added test fast-isel-fptrunc-fpext.ll to check both the register-register and the register-memory float/double conversion variants.

Please let me know if ok to submit.

Thanks!
Andrea

http://reviews.llvm.org/D7438

Files:
  lib/Target/X86/X86FastISel.cpp
  test/CodeGen/X86/fast-isel-fptrunc-fpext.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7438.19407.patch
Type: text/x-patch
Size: 4897 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150205/929e23d5/attachment.bin>


More information about the llvm-commits mailing list