; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
; RUN:   -mattr=+zvfh -mattr=+xsfmm32a32f -mattr=+xsfmm64a64f \
; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
; RUN:   -mattr=+zvfh -mattr=+xsfmm32a32f -mattr=+xsfmm64a64f \
; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK

define void @test_sf_mm_f_f_w2_f16m8(iXLen %mtd, <vscale x 32 x half> %v1, <vscale x 32 x half> %v2, iXLen %tm, iXLen %tn, iXLen %tk) {
; CHECK-LABEL: test_sf_mm_f_f_w2_f16m8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    sf.vsettnt zero, a2, e16, w2
; CHECK-NEXT:    sf.vsettm zero, a1
; CHECK-NEXT:    sf.vsettk zero, a3
; CHECK-NEXT:    sf.mm.f.f mt0, v8, v16
; CHECK-NEXT:    ret
  entry:
    call void @llvm.riscv.sf.mm.f.f.iXLen.nxv32f16(iXLen 0, <vscale x 32 x half> %v1, <vscale x 32 x half> %v2, iXLen %tm, iXLen %tn, iXLen %tk, iXLen 2)
    ret void
}

define void @test_sf_mm_f_f_w1_f32m8(iXLen %mtd, <vscale x 16 x float> %v1, <vscale x 16 x float> %v2, iXLen %tm, iXLen %tn, iXLen %tk) {
; CHECK-LABEL: test_sf_mm_f_f_w1_f32m8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    sf.vsettnt zero, a2, e32, w1
; CHECK-NEXT:    sf.vsettm zero, a1
; CHECK-NEXT:    sf.vsettk zero, a3
; CHECK-NEXT:    sf.mm.f.f mt0, v8, v16
; CHECK-NEXT:    ret
  entry:
    call void @llvm.riscv.sf.mm.f.f.iXLen.nxv16f32(iXLen 0, <vscale x 16 x float> %v1, <vscale x 16 x float> %v2, iXLen %tm, iXLen %tn, iXLen %tk, iXLen 1)
    ret void
}

define void @test_sf_mm_f_f_w1_f64m8(iXLen %mtd, <vscale x 8 x double> %v1, <vscale x 8 x double> %v2, iXLen %tm, iXLen %tn, iXLen %tk) {
; CHECK-LABEL: test_sf_mm_f_f_w1_f64m8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    sf.vsettnt zero, a2, e64, w1
; CHECK-NEXT:    sf.vsettm zero, a1
; CHECK-NEXT:    sf.vsettk zero, a3
; CHECK-NEXT:    sf.mm.f.f mt0, v8, v16
; CHECK-NEXT:    ret
  entry:
    call void @llvm.riscv.sf.mm.f.f.iXLen.nxv8f64(iXLen 0, <vscale x 8 x double> %v1, <vscale x 8 x double> %v2, iXLen %tm, iXLen %tn, iXLen %tk, iXLen 1)
    ret void
}
