[llvm] [AArch64] Optimize more floating-point round+convert combinations into fcvt instructions (PR #170018)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 3 07:51:00 PST 2025
================
@@ -5830,6 +5830,33 @@ multiclass SIMDTwoVectorFPToIntSatPats<SDNode to_int_sat, SDNode to_int_sat_gi,
defm : SIMDTwoVectorFPToIntSatPats<fp_to_sint_sat, fp_to_sint_sat_gi, "FCVTZS">;
defm : SIMDTwoVectorFPToIntSatPats<fp_to_uint_sat, fp_to_uint_sat_gi, "FCVTZU">;
+// Fused round + convert to int patterns for vectors
+multiclass SIMDTwoVectorFPToIntRoundPats<SDNode to_int, SDNode round, string INST> {
----------------
Lukacma wrote:
As far as I understand, _gi nodes are nodes which globalISel produces when lowering the saturating conversion. As for why they couldn't reuse SDAG ones, I have no idea. But since you added patterns for GlobalISel, I think we should test those as well by adding the globalISel runline to vcvt-fused-round test.
As for why patterns are sometimes split, I have no idea. I have just added bitconvert patterns to the classes as they were.
https://github.com/llvm/llvm-project/pull/170018
More information about the llvm-commits
mailing list