diff --git a/llvm/test/CodeGen/AArch64/sve-fp-combine.ll b/llvm/test/CodeGen/AArch64/sve-fp-combine.ll index ef68f8e7eeca9..87562b49f84b6 100644 --- a/llvm/test/CodeGen/AArch64/sve-fp-combine.ll +++ b/llvm/test/CodeGen/AArch64/sve-fp-combine.ll @@ -1267,3 +1267,37 @@ define @fadd_sel_fmul_no_contract_s( %a %fadd = fadd nsz %a, %sel ret %fadd } + +define @fma_sel_h_different_arg_order( %pred, %m1, %m2, %acc) { +; CHECK-LABEL: fma_sel_h_different_arg_order: +; CHECK: // %bb.0: +; CHECK-NEXT: fmad z0.h, p0/m, z1.h, z2.h +; CHECK-NEXT: ret + %mul.add = call @llvm.fma.nxv8f16( %m1, %m2, %acc) + %masked.mul.add = select %pred, %mul.add, %acc + ret %masked.mul.add +} + +define @fma_sel_s_different_arg_order( %pred, %m1, %m2, %acc) { +; CHECK-LABEL: fma_sel_s_different_arg_order: +; CHECK: // %bb.0: +; CHECK-NEXT: fmad z0.s, p0/m, z1.s, z2.s +; CHECK-NEXT: ret + %mul.add = call @llvm.fma.nxv4f32( %m1, %m2, %acc) + %masked.mul.add = select %pred, %mul.add, %acc + ret %masked.mul.add +} + +define @fma_sel_d_different_arg_order( %pred, %m1, %m2, %acc) { +; CHECK-LABEL: fma_sel_d_different_arg_order: +; CHECK: // %bb.0: +; CHECK-NEXT: fmad z0.d, p0/m, z1.d, z2.d +; CHECK-NEXT: ret + %mul.add = call @llvm.fma.nxv2f64( %m1, %m2, %acc) + %masked.mul.add = select %pred, %mul.add, %acc + ret %masked.mul.add +} + +declare @llvm.fma.nxv8f16(, , ) +declare @llvm.fma.nxv4f32(, , ) +declare @llvm.fma.nxv2f64(, , )