[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