[llvm] 67b3b87 - [LLVM][GlobalISel] Make CSEMIRBuilder::buildFConstant scalable vector aware. (#200386)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 2 04:22:53 PDT 2026
Author: Paul Walker
Date: 2026-06-02T12:22:48+01:00
New Revision: 67b3b87e6d64d7d706e14be8c5bba6acdc200623
URL: https://github.com/llvm/llvm-project/commit/67b3b87e6d64d7d706e14be8c5bba6acdc200623
DIFF: https://github.com/llvm/llvm-project/commit/67b3b87e6d64d7d706e14be8c5bba6acdc200623.diff
LOG: [LLVM][GlobalISel] Make CSEMIRBuilder::buildFConstant scalable vector aware. (#200386)
Added:
Modified:
llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp
llvm/test/CodeGen/AArch64/GlobalISel/select-splat-vector.ll
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp b/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp
index 8e5bf2120dd40..19eafa5b147d8 100644
--- a/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp
@@ -364,8 +364,10 @@ MachineInstrBuilder CSEMIRBuilder::buildFConstant(const DstOp &Res,
// For vectors, CSE the element only for now.
LLT Ty = Res.getLLTTy(*getMRI());
- if (Ty.isVector())
+ if (Ty.isFixedVector())
return buildSplatBuildVector(Res, buildFConstant(Ty.getElementType(), Val));
+ if (Ty.isScalableVector())
+ return buildSplatVector(Res, buildFConstant(Ty.getElementType(), Val));
FoldingSetNodeID ID;
GISelInstProfileBuilder ProfBuilder(ID, *getMRI());
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-splat-vector.ll b/llvm/test/CodeGen/AArch64/GlobalISel/select-splat-vector.ll
index 8705e3aa2c305..2caa66948b97c 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-splat-vector.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-splat-vector.ll
@@ -69,5 +69,21 @@ entry:
ret <vscale x 4 x i32> splat (i32 9)
}
+define <vscale x 4 x float> @splatnxv4f32() {
+; CHECK-SDAG-LABEL: splatnxv4f32:
+; CHECK-SDAG: // %bb.0: // %entry
+; CHECK-SDAG-NEXT: fmov z0.s, #1.00000000
+; CHECK-SDAG-NEXT: ret
+;
+; CHECK-GS-LABEL: splatnxv4f32:
+; CHECK-GS: // %bb.0: // %entry
+; CHECK-GS-NEXT: fmov s0, #1.00000000
+; CHECK-GS-NEXT: fmov w8, s0
+; CHECK-GS-NEXT: mov z0.s, w8
+; CHECK-GS-NEXT: ret
+entry:
+ ret <vscale x 4 x float> splat (float 1.0)
+}
+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; CHECK: {{.*}}
More information about the llvm-commits
mailing list