This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Improve support for forming widening multiplies when one input is a scalar splat.
ClosedPublic

Authored by craig.topper on Sep 18 2021, 4:38 PM.

Details

Summary

If one input of a fixed vector multiply is a sign/zero extend and
the other operand is a splat of a scalar, we can use a widening
multiply if the scalar value has sufficient sign/zero bits.

Diff Detail

Event Timeline

craig.topper created this revision.Sep 18 2021, 4:38 PM
craig.topper requested review of this revision.Sep 18 2021, 4:38 PM
Herald added a project: Restricted Project. · View Herald TranscriptSep 18 2021, 4:38 PM
Herald added a subscriber: MaskRay. · View Herald Transcript
frasercrmck added inline comments.Sep 24 2021, 2:02 AM
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
6631

Is ScalarBits not always XLenVT? Is this basically a "i64 vector on RV32" check?

craig.topper added inline comments.Sep 24 2021, 9:22 AM
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
6631

Yes it should be XLenVT. So this is an i64 on RV32 check.

This revision is now accepted and ready to land.Sep 27 2021, 8:21 AM
This revision was landed with ongoing or failed builds.Sep 27 2021, 9:45 AM
This revision was automatically updated to reflect the committed changes.