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
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
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
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. |
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 |
Given the existing naming perhaps DUPLANE128 is more consistent?