[all-commits] [llvm/llvm-project] 958408: [X86] Improve v2i64->v2f32 and v4i64->v4f32 uint_t...
topperc via All-commits
all-commits at lists.llvm.org
Sun Jan 5 18:36:08 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 95840866b7d86794490ed46278fa9a9d798ee5bf
https://github.com/llvm/llvm-project/commit/95840866b7d86794490ed46278fa9a9d798ee5bf
Author: Craig Topper <craig.topper at gmail.com>
Date: 2020-01-05 (Sun, 05 Jan 2020)
Changed paths:
M llvm/lib/Target/X86/X86ISelLowering.cpp
M llvm/test/CodeGen/X86/vec-strict-inttofp-128.ll
M llvm/test/CodeGen/X86/vec-strict-inttofp-256.ll
M llvm/test/CodeGen/X86/vec_int_to_fp.ll
M llvm/test/CodeGen/X86/vector-constrained-fp-intrinsics.ll
Log Message:
-----------
[X86] Improve v2i64->v2f32 and v4i64->v4f32 uint_to_fp on avx and avx2 targets.
Summary:
Based on Simon's D52965, but improved to handle strict fp and improve some of the shuffling.
Rather than use v2i1/v4i1 and let type legalization continue, just generate all the code with legal types and use an explicit shuffle.
I also added an explicit setcc to the v4i64 code to match the semantics of vselect which doesn't just use the sign bit. I'm also using a v4i64->v4i32 truncate instead of the shuffle in Simon's original code. With the setcc this will become a pack.
Future work can look into using X86ISD::BLENDV and a different shuffle that only moves the sign bit.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71956
More information about the All-commits
mailing list