This is an archive of the discontinued LLVM Phabricator instance.

[SME2/SVE2p1] Change psel intrinsic such that the result/first operand are not overloaded.
ClosedPublic

Authored by sdesmalen on May 19 2023, 3:38 AM.

Details

Summary

All the bits of the first operand are copied to the destination register,
if the tested bit (in the second source operand) is active. This means we
copy over all vscale x 16 x i1's of the first operand. There is no need to
overload that type.

Diff Detail

Event Timeline

sdesmalen created this revision.May 19 2023, 3:38 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 19 2023, 3:38 AM
sdesmalen requested review of this revision.May 19 2023, 3:38 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 19 2023, 3:38 AM
llvm/lib/Target/AArch64/SMEInstrFormats.td
1326

Can you change this to be PPR8?

sdesmalen added inline comments.May 22 2023, 6:28 AM
llvm/lib/Target/AArch64/SMEInstrFormats.td
1326

The instruction itself uses PPRAny (on purpose, because it should print e.g. p0 instead of p0.b). It probably won't make any difference for the pattern, because PPR8 and PPRAny use the same register class, but still I'd rather stay aligned with the instruction definition.

This revision is now accepted and ready to land.May 22 2023, 6:47 AM