This is an archive of the discontinued LLVM Phabricator instance.

[X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)
ClosedPublic

Authored by RKSimon on May 26 2016, 9:13 AM.

Details

Summary

This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.

A companion patch (D20684) removes/auto-upgrade the clang intrinsics.

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon updated this revision to Diff 58627.May 26 2016, 9:13 AM
RKSimon retitled this revision from to [X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm).
RKSimon updated this object.
RKSimon set the repository for this revision to rL LLVM.
RKSimon added a subscriber: llvm-commits.
ab accepted this revision.May 26 2016, 10:55 AM
ab added a reviewer: ab.
ab added a subscriber: ab.

Nice, LGTM! A few nits unrelated to your change.

test/CodeGen/X86/avx-intrinsics-x86-upgrade.ll
253 ↗(On Diff #58627)

Any reason this file isn't an opt test?

test/CodeGen/X86/avx-intrinsics-x86.ll
4033 ↗(On Diff #58627)

Gross! I thought the script turned these into {{LCPI.*}} ?

test/CodeGen/X86/avx2-pmovxrm-intrinsics.ll
1 ↗(On Diff #58627)

Drop -intrinsics from the filename?

Also, drop -mcpu? And maybe also update_llc_test_checks

3 ↗(On Diff #58627)

lvm -> llvm

This revision is now accepted and ready to land.May 26 2016, 10:55 AM
This revision was automatically updated to reflect the committed changes.

Thanks Ahmed, I stupidly committed this before the clang patch which resulted in buildbot clang failures as it removed the gcc builtins (I'd left the clang patch applied in my local source). Reverted in rL270976 until D20684 is committed.

llvm/trunk/test/Transforms/InstCombine/x86-pmovsx.ll