[llvm] [LLVM][CodeGen][AArch64] Simplify lowering for predicate inserts. (PR #89072)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 17 06:32:23 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: Paul Walker (paulwalker-arm)
<details>
<summary>Changes</summary>
The original code has an invalid use of UZP1 because the result vector type does not match its input vector types. Rather than insert extra nop casts I figure it would be better to use CONCAT_VECTORS because that's the operation we're performing.
NOTE: This is a step to enable more asserts in verifyTargetSDNode.
---
Full diff: https://github.com/llvm/llvm-project/pull/89072.diff
1 Files Affected:
- (modified) llvm/lib/Target/AArch64/AArch64ISelLowering.cpp (+8-10)
``````````diff
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index eee67a0f823c19..67f341adc598ff 100644
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -13896,16 +13896,14 @@ SDValue AArch64TargetLowering::LowerINSERT_SUBVECTOR(SDValue Op,
DAG.getVectorIdxConstant(0, DL));
Hi = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, HalfVT, Vec0,
DAG.getVectorIdxConstant(NumElts / 2, DL));
- if (Idx < (NumElts / 2)) {
- SDValue NewLo = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, HalfVT, Lo, Vec1,
- DAG.getVectorIdxConstant(Idx, DL));
- return DAG.getNode(AArch64ISD::UZP1, DL, VT, NewLo, Hi);
- } else {
- SDValue NewHi =
- DAG.getNode(ISD::INSERT_SUBVECTOR, DL, HalfVT, Hi, Vec1,
- DAG.getVectorIdxConstant(Idx - (NumElts / 2), DL));
- return DAG.getNode(AArch64ISD::UZP1, DL, VT, Lo, NewHi);
- }
+ if (Idx < (NumElts / 2))
+ Lo = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, HalfVT, Lo, Vec1,
+ DAG.getVectorIdxConstant(Idx, DL));
+ else
+ Hi = DAG.getNode(ISD::INSERT_SUBVECTOR, DL, HalfVT, Hi, Vec1,
+ DAG.getVectorIdxConstant(Idx - (NumElts / 2), DL));
+
+ return DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, Lo, Hi);
}
// Ensure the subvector is half the size of the main vector.
``````````
</details>
https://github.com/llvm/llvm-project/pull/89072
More information about the llvm-commits
mailing list