Page MenuHomePhabricator

[AArch64][SVE] Create AArch64ISD node for DUPQLANE128
ClosedPublic

Authored by MattDevereau on Jun 30 2022, 3:20 AM.

Details

Summary

Create an AArch64ISD node instead of emitting machine node DUP_ZZI_Q. This allows a simpler DAG combine for work previously attempted in https://reviews.llvm.org/D128503

Diff Detail

Event Timeline

MattDevereau created this revision.Jun 30 2022, 3:20 AM
MattDevereau requested review of this revision.Jun 30 2022, 3:20 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 30 2022, 3:20 AM
paulwalker-arm added inline comments.Jun 30 2022, 3:27 AM
llvm/lib/Target/AArch64/AArch64ISelLowering.h
163

Given the existing naming perhaps DUPLANE128 is more consistent?

llvm/lib/Target/AArch64/AArch64InstrGISel.td
114–118 ↗(On Diff #441337)

Do you need any of the AArch64InstrGISel.td changes? I suspect not.

llvm/lib/Target/AArch64/AArch64InstrInfo.td
283

There's nothing different about SDT_AArch64DupQLane compared to SDT_AArch64DupLane so you can just reuse SDT_AArch64DupLane?

removed redundant changes and made naming more consistent with previously added patterns

paulwalker-arm accepted this revision.Jun 30 2022, 4:27 AM

A potential code placement improvement but otherwise looks good.

llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
675–690 ↗(On Diff #441342)

Sorry I didn't have access to code or would have suggested this before but I think these can be moved into the multiclass that defines sve_int_perm_dup_i. I can see it already has patterns for the B,H,S and D forms.

This revision is now accepted and ready to land.Jun 30 2022, 4:27 AM
MattDevereau retitled this revision from [AArch64][SVE] Create AArch64ISD node for DUPQLANE to [AArch64][SVE] Create AArch64ISD node for DUPQLANE128.Jun 30 2022, 5:07 AM
MattDevereau added inline comments.
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
675–690 ↗(On Diff #441342)

Moving them there works fine, I'll push that change without updating the phabricator review

Matt added a subscriber: Matt.Jun 30 2022, 10:25 AM
This revision was landed with ongoing or failed builds.Jul 1 2022, 4:47 AM
This revision was automatically updated to reflect the committed changes.