[llvm] [AArch64] Wrap integer SCALAR_TO_VECTOR nodes in bitcasts (PR #172837)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 20 07:24:55 PST 2026
================
@@ -200,10 +200,34 @@ def dup_v4f32 :
[(v2f32 (extract_subvector (v4f32 (AArch64duplane32 (v4f32 node:$LHS), node:$RHS)), (i64 0))),
(v2f32 (AArch64duplane32 (v4f32 node:$LHS), node:$RHS))]>;
+// Match scalar_to_vector values, optionally wrapped in a bitcast through
+// f32/f64.
+def scalar_to_vector_v1f64 : PatFrags<(ops node:$src),
+ [(scalar_to_vector node:$src),
+ (bitconvert (v1f64 (scalar_to_vector (f64 (bitconvert node:$src)))))]>;
+def scalar_to_vector_v2f32 : PatFrags<(ops node:$src),
+ [(scalar_to_vector node:$src),
+ (bitconvert (v2f32 (scalar_to_vector (f32 (bitconvert node:$src)))))]>;
+def scalar_to_vector_v2f64 : PatFrags<(ops node:$src),
+ [(scalar_to_vector node:$src),
+ (bitconvert (v2f64 (scalar_to_vector (f64 (bitconvert node:$src)))))]>;
+def scalar_to_vector_v4f32 : PatFrags<(ops node:$src),
+ [(scalar_to_vector node:$src),
+ (bitconvert (v4f32 (scalar_to_vector (f32 (bitconvert node:$src)))))]>;
+
// Match either a scalar_to_vector (from SDAG) or a vector_insert of undef (from GISel)
def vec_ins_or_scal_vec : PatFrags<(ops node:$src),
[(vector_insert undef, node:$src, (i64 0)),
(scalar_to_vector node:$src)]>;
+def vec_ins_or_scal_vec_v2f32 : PatFrags<(ops node:$src),
----------------
CarolineConcatto wrote:
Do you mind if we push this change to a second PR?
I am not sure why some many changes in places that it should not. I do think it is because of these patterns that change some loads.
https://github.com/llvm/llvm-project/pull/172837
More information about the llvm-commits
mailing list