This is an archive of the discontinued LLVM Phabricator instance.

[X86][SSE] Sign extension for target vector sizes less than 128 bits.
ClosedPublic

Authored by RKSimon on Jun 20 2015, 11:10 AM.

Details

Summary

To add support for v2i8/v2i16 to v2f64, this patch adds support for sign extension for sub 128-bit vectors, such as to v2i32 (which can then be converted to v2f64). It concatenates with UNDEF subvectors up to 128-bits, performs the sign extension (i.e. as v4i32) and then extracts the target subvector.

This is really 2 patches (the sign extension of subvectors + conversion of v2i8/v2i16 to v2f64) so I will commit these separately after combined review.

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon updated this revision to Diff 28080.Jun 20 2015, 11:10 AM
RKSimon retitled this revision from to [X86][SSE] Sign extension for target vector sizes less than 128 bits..
RKSimon updated this object.
RKSimon edited the test plan for this revision. (Show Details)
RKSimon added reviewers: qcolombet, delena, andreadb, spatel.
RKSimon set the repository for this revision to rL LLVM.
RKSimon added a subscriber: Unknown Object (MLST).
RKSimon updated this revision to Diff 28081.Jun 20 2015, 2:36 PM

Minor fix + rebase.

qcolombet accepted this revision.Jul 1 2015, 11:01 AM
qcolombet edited edge metadata.

Hi Simon,

LGTM.

Thanks,
-Quentin

This revision is now accepted and ready to land.Jul 1 2015, 11:01 AM
This revision was automatically updated to reflect the committed changes.

Thanks Quentin. BTW, I'm still working on improving the vectorization costs mechanism - it's just taking a little longer than planned.