[llvm] [AArch64] Keep floating-point conversion in SIMD (PR #147707)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 25 04:40:39 PDT 2025
================
@@ -6627,6 +6627,17 @@ def : Pat<(f16 (any_uint_to_fp (i32 (any_fp_to_uint f16:$Rn)))),
(UCVTFv1i16 (f16 (FCVTZUv1f16 f16:$Rn)))>;
}
+let Predicates = [HasNEONandIsSME2p2StreamingSafe] in {
+def : Pat<(v2i32 (fp_to_uint (v2f32 (scalar_to_vector (f32 FPR32:$src))))),
+ (v2i32 (INSERT_SUBREG (IMPLICIT_DEF), (i32 (FCVTZUv1i32 (f32 FPR32:$src))), ssub))>;
+def : Pat<(v2i32 (fp_to_sint (v2f32 (scalar_to_vector (f32 FPR32:$src))))),
+ (v2i32 (INSERT_SUBREG (IMPLICIT_DEF), (i32 (FCVTZSv1i32 (f32 FPR32:$src))), ssub))>;
+def : Pat<(v2i64 (fp_to_uint (v2f64 (scalar_to_vector (f64 FPR64:$src))))),
+ (v2i64 (INSERT_SUBREG (IMPLICIT_DEF), (i64 (FCVTZUv1i64 (f64 FPR64:$src))), dsub))>;
+def : Pat<(v2i64 (fp_to_sint (v2f64 (scalar_to_vector (f64 FPR64:$src))))),
+ (v2i64 (INSERT_SUBREG (IMPLICIT_DEF), (i64 (FCVTZSv1i64 (f64 FPR64:$src))), dsub))>;
----------------
paulwalker-arm wrote:
Can these use the `any_fp_to_{s,u}int` variants?
https://github.com/llvm/llvm-project/pull/147707
More information about the llvm-commits
mailing list