[llvm] [AArch64] Extend usage of `XAR` instruction for fixed-length operations (PR #139460)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 3 00:37:09 PDT 2025
================
@@ -4661,12 +4694,28 @@ bool AArch64DAGToDAGISel::trySelectXAR(SDNode *N) {
}
SDValue Ops[] = {R1, R2, Imm};
- SDNode *XAR = CurDAG->getMachineNode(AArch64::XAR, DL, MVT::v2i64, Ops);
+ SDNode *XAR = nullptr;
+
+ if (SVT != VT && VT != MVT::v1i64) {
+ if (auto Opc = SelectOpcodeFromVT<SelectTypeKind::Int>(
+ SVT, {AArch64::XAR_ZZZI_B, AArch64::XAR_ZZZI_H, AArch64::XAR_ZZZI_S,
+ AArch64::XAR_ZZZI_D}))
+ XAR = CurDAG->getMachineNode(Opc, DL, VT, Ops);
+ } else {
+ XAR = CurDAG->getMachineNode(AArch64::XAR, DL, MVT::v2i64, Ops);
+ }
+
+ if (!XAR)
+ return false;
----------------
davemgreen wrote:
I think this should always succeed and could be an assert.
https://github.com/llvm/llvm-project/pull/139460
More information about the llvm-commits
mailing list