; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -verify-machineinstrs < %s | FileCheck %s define void @bfmops( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: bfmops: ; CHECK: // %bb.0: ; CHECK-NEXT: bfmops za3.s, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.mops.wide.nxv8bf16(i32 3, %pn, %pm, %zn, %zm) ret void } define void @fmops( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: fmops: ; CHECK: // %bb.0: ; CHECK-NEXT: fmops za3.s, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.mops.wide.nxv8f16(i32 3, %pn, %pm, %zn, %zm) ret void } define void @smops_s( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: smops_s: ; CHECK: // %bb.0: ; CHECK-NEXT: smops za3.s, p0/m, p1/m, z0.b, z1.b ; CHECK-NEXT: ret call void @llvm.aarch64.sme.smops.wide.nxv16i8(i32 3, %pn, %pm, %zn, %zm) ret void } define void @smops_d( %pn, %pm, %zn, %zm) #0 { ; CHECK-LABEL: smops_d: ; CHECK: // %bb.0: ; CHECK-NEXT: smops za7.d, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.smops.wide.nxv8i16(i32 7, %pn, %pm, %zn, %zm) ret void } define void @umops_s( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: umops_s: ; CHECK: // %bb.0: ; CHECK-NEXT: umops za3.s, p0/m, p1/m, z0.b, z1.b ; CHECK-NEXT: ret call void @llvm.aarch64.sme.umops.wide.nxv16i8(i32 3, %pn, %pm, %zn, %zm) ret void } define void @umops_d( %pn, %pm, %zn, %zm) #0 { ; CHECK-LABEL: umops_d: ; CHECK: // %bb.0: ; CHECK-NEXT: umops za7.d, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.umops.wide.nxv8i16(i32 7, %pn, %pm, %zn, %zm) ret void } define void @fmops_s( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: fmops_s: ; CHECK: // %bb.0: ; CHECK-NEXT: fmops za3.s, p0/m, p1/m, z0.s, z1.s ; CHECK-NEXT: ret call void @llvm.aarch64.sme.mops.nxv4f32(i32 3, %pn, %pm, %zn, %zm) ret void } define void @fmops_d( %pn, %pm, %zn, %zm) #1 { ; CHECK-LABEL: fmops_d: ; CHECK: // %bb.0: ; CHECK-NEXT: fmops za7.d, p0/m, p1/m, z0.d, z1.d ; CHECK-NEXT: ret call void @llvm.aarch64.sme.mops.nxv2f64(i32 7, %pn, %pm, %zn, %zm) ret void } define void @sumops_s( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: sumops_s: ; CHECK: // %bb.0: ; CHECK-NEXT: sumops za3.s, p0/m, p1/m, z0.b, z1.b ; CHECK-NEXT: ret call void @llvm.aarch64.sme.sumops.wide.nxv16i8(i32 3, %pn, %pm, %zn, %zm) ret void } define void @sumops_d( %pn, %pm, %zn, %zm) #0 { ; CHECK-LABEL: sumops_d: ; CHECK: // %bb.0: ; CHECK-NEXT: sumops za7.d, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.sumops.wide.nxv8i16(i32 7, %pn, %pm, %zn, %zm) ret void } define void @usmops_s( %pn, %pm, %zn, %zm) { ; CHECK-LABEL: usmops_s: ; CHECK: // %bb.0: ; CHECK-NEXT: usmops za3.s, p0/m, p1/m, z0.b, z1.b ; CHECK-NEXT: ret call void @llvm.aarch64.sme.usmops.wide.nxv16i8(i32 3, %pn, %pm, %zn, %zm) ret void } define void @usmops_d( %pn, %pm, %zn, %zm) #0 { ; CHECK-LABEL: usmops_d: ; CHECK: // %bb.0: ; CHECK-NEXT: usmops za7.d, p0/m, p1/m, z0.h, z1.h ; CHECK-NEXT: ret call void @llvm.aarch64.sme.usmops.wide.nxv8i16(i32 7, %pn, %pm, %zn, %zm) ret void } attributes #0 = { "target-features"="+sme-i16i64" } attributes #1 = { "target-features"="+sme-f64f64" } declare void @llvm.aarch64.sme.mops.wide.nxv8bf16(i32, , , , ) declare void @llvm.aarch64.sme.mops.wide.nxv8f16(i32, , , , ) declare void @llvm.aarch64.sme.mops.nxv4f32(i32, , , , ) declare void @llvm.aarch64.sme.mops.nxv2f64(i32, , , , ) declare void @llvm.aarch64.sme.smops.wide.nxv16i8(i32, , , , ) declare void @llvm.aarch64.sme.smops.wide.nxv8i16(i32, , , , ) declare void @llvm.aarch64.sme.umops.wide.nxv16i8(i32, , , , ) declare void @llvm.aarch64.sme.umops.wide.nxv8i16(i32, , , , ) declare void @llvm.aarch64.sme.sumops.wide.nxv16i8(i32, , , , ) declare void @llvm.aarch64.sme.sumops.wide.nxv8i16(i32, , , , ) declare void @llvm.aarch64.sme.usmops.wide.nxv16i8(i32, , , , ) declare void @llvm.aarch64.sme.usmops.wide.nxv8i16(i32, , , , )