[llvm] [AArch64][SelectionDAG] use fmov for constant forming of {1.0,0.0} (PR #189921)
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 1 10:08:57 PDT 2026
================
@@ -329,3 +329,69 @@ define <4 x bfloat> @negzero_v4bf16(<4 x bfloat> %a) {
; CHECK-NEXT: ret
ret <4 x bfloat> <bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0>
}
+
+; Test that BUILD_VECTOR with an FP constant in lane 0 and +0.0 in upper lanes
+; lowers to a scalar FMOV. On AArch64, writing a scalar FP register zeroes the
+; upper bits of the enclosing vector register.
+
+define <2 x float> @fmov_lane0_zero_upper_v2f32() {
+; CHECK-LABEL: fmov_lane0_zero_upper_v2f32:
+; CHECK: // %bb.0:
+; CHECK-SD-NEXT: fmov s0, #1.00000000
+; CHECK-GI-NEXT: adrp x8, .LCPI23_0
+; CHECK-GI-NEXT: ldr d0, [x8, :lo12:.LCPI23_0]
+; CHECK-NEXT: ret
----------------
efriedma-quic wrote:
Please use update_llc_test_checks.py to update CHECK lines.
https://github.com/llvm/llvm-project/pull/189921
More information about the llvm-commits
mailing list