[llvm] [LLVM][CodeGen][SVE] Improve custom lowering for EXTRACT_SUBVECTOR. (PR #90963)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Mon May 13 07:41:19 PDT 2024
================
@@ -13856,45 +13856,52 @@ AArch64TargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
SDValue AArch64TargetLowering::LowerEXTRACT_SUBVECTOR(SDValue Op,
SelectionDAG &DAG) const {
- assert(Op.getValueType().isFixedLengthVector() &&
+ EVT VT = Op.getValueType();
+ assert(VT.isFixedLengthVector() &&
"Only cases that extract a fixed length vector are supported!");
-
EVT InVT = Op.getOperand(0).getValueType();
- unsigned Idx = Op.getConstantOperandVal(1);
- unsigned Size = Op.getValueSizeInBits();
// If we don't have legal types yet, do nothing
- if (!DAG.getTargetLoweringInfo().isTypeLegal(InVT))
+ if (!isTypeLegal(InVT))
return SDValue();
- if (InVT.isScalableVector()) {
- // This will be matched by custom code during ISelDAGToDAG.
- if (Idx == 0 && isPackedVectorType(InVT, DAG))
+ if (InVT.is128BitVector()) {
+ assert(VT.is64BitVector() && "Extracting unexpected vector type!");
----------------
david-arm wrote:
Is the rationale here that at this point all types should be legal and therefore the only possible result VTs are 64-bit and 128-bit. I guess we are assuming that for 128-bit result types we're relying on the EXTRACT_SUBVECTOR being folded away before hand?
https://github.com/llvm/llvm-project/pull/90963
More information about the llvm-commits
mailing list