This is an archive of the discontinued LLVM Phabricator instance.

[X86][SSE] Improve UINT_TO_FP v2i32 -> v2f64
ClosedPublic

Authored by RKSimon on Nov 21 2016, 2:10 PM.

Details

Summary

Vectorize UINT_TO_FP v2i32 -> v2f64 instead of scalarization (albeit still on the SIMD unit).

The codegen matches that generated by legalization (and is in fact used by AVX for UINT_TO_FP v4i32 -> v4f64), but has to be done in the x86 backend to account for legalization via 4i32.

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon updated this revision to Diff 78780.Nov 21 2016, 2:10 PM
RKSimon retitled this revision from to [X86][SSE] Improve UINT_TO_FP v2i32 -> v2f64.
RKSimon updated this object.
RKSimon set the repository for this revision to rL LLVM.
RKSimon added a subscriber: llvm-commits.
craig.topper accepted this revision.Nov 23 2016, 7:45 PM
craig.topper edited edge metadata.

LGTM with that one comment.

This revision is now accepted and ready to land.Nov 23 2016, 7:45 PM

LGTM with that one comment.

Sorry, what comment?

Weird I thought I wrote a comment before. But here it is again.

lib/Target/X86/X86ISelLowering.cpp
14135 ↗(On Diff #78780)

SrcVT is known to be v2i32 here right? Should we just assert that that is the case and just write it explicitly in the getUNDEF call below?

This revision was automatically updated to reflect the committed changes.