[llvm] [AArch64] Generate BSP instead of TBL for select shuffles. (PR #121474)
Alexandros Lamprineas via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 6 02:48:06 PST 2025
================
@@ -13985,6 +13985,23 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
dl);
}
+ // Check for a "select shuffle", generating a BSL to pick between lanes in
+ // V1/V2.
+ if (ShuffleVectorInst::isSelectMask(ShuffleMask, NumElts)) {
+ assert(VT.getScalarSizeInBits() <= 32 &&
+ "Expected larger vector element sizes to be handled already");
+ SmallVector<SDValue> MaskElts;
+ for (int M : ShuffleMask)
+ MaskElts.push_back(
+ DAG.getConstant(M >= (int)NumElts ? 0 : 0xffffffff, dl, MVT::i32));
----------------
labrinea wrote:
Nit: static cast here?
https://github.com/llvm/llvm-project/pull/121474
More information about the llvm-commits
mailing list