This is an archive of the discontinued LLVM Phabricator instance.

[SelectionDAG] Use SimplifyDemandedBits on truncated SCALAR_TO_VECTORs
AbandonedPublic

Authored by RKSimon on Mar 15 2019, 10:22 AM.

Details

Summary

Definite win on AVX512 as it allows us to avoid some gpr2mask transfers when a rematerializable 'allones' constant could be used.

I don't think the aarch64 fmov -> dup change is a regression, but would like confirmation if possible.

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon created this revision.Mar 15 2019, 10:22 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 15 2019, 10:22 AM
efriedma added inline comments.Mar 15 2019, 11:39 AM
test/CodeGen/AArch64/arm64-build-vector.ll
28

This is in fact a regression, at least on some targets; on an A57, it has higher latency and uses an extra execution unit.

I'm guessing there's some issue with the priority between splat vs. zeroing in the case where the high elements are all undef?

RKSimon marked an inline comment as done.
RKSimon added a subscriber: spatel.
RKSimon added inline comments.
test/CodeGen/AArch64/arm64-build-vector.ll
28

Adding @spatel who I think hit some similar issue with splat vector vs scalarization combines recently

RKSimon abandoned this revision.Apr 22 2019, 7:13 AM

Abandoning - the x86 improvements were handled by rL358019