[llvm] [AArch64][SVE] Use SVE for scalar FP converts in streaming[-compatible] functions (PR #112564)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 24 05:59:12 PDT 2024
================
@@ -28295,7 +28352,21 @@ SDValue AArch64TargetLowering::LowerToPredicatedOp(SDValue Op,
unsigned NewOp) const {
EVT VT = Op.getValueType();
SDLoc DL(Op);
- auto Pg = getPredicateForVector(DAG, DL, VT);
+ SDValue Pg;
+
+ // FCVTZS_ZPmZ_DtoS and FCVTZU_ZPmZ_DtoS are special cases. These operations
+ // return nxv4i32 rather than the correct nxv2i32, as nxv2i32 is an illegal
+ // unpacked type. So, in this case, we take the predicate size from the
+ // operand.
+ SDValue LastOp{};
+ if ((NewOp == AArch64ISD::FCVTZU_MERGE_PASSTHRU ||
+ NewOp == AArch64ISD::FCVTZS_MERGE_PASSTHRU) &&
----------------
paulwalker-arm wrote:
As mentioned above, I would expect a DAG combine to require changes to the lowering code unless there's a real bug, which I don't think applies in this case.
https://github.com/llvm/llvm-project/pull/112564
More information about the llvm-commits
mailing list