xref: /llvm-project/clang/test/CodeGen/AArch64/fp8-intrinsics/acle_sme2_fp8_mla.c (revision 908e30658ddf634f7c929f0c7e78dd40405c795a)
138099d06SSpencerAbson // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
238099d06SSpencerAbson // REQUIRES: aarch64-registered-target
338099d06SSpencerAbson 
438099d06SSpencerAbson // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +sme-f8f16 -target-feature +sme-f8f32 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,instcombine,tailcallelim | FileCheck %s
538099d06SSpencerAbson // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +sme-f8f16 -target-feature +sme-f8f32 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
638099d06SSpencerAbson // RUN: %clang_cc1 -DSME_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +sme-f8f16 -target-feature +sme-f8f32 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,instcombine,tailcallelim | FileCheck %s
738099d06SSpencerAbson // RUN: %clang_cc1 -DSME_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +sme-f8f16 -target-feature +sme-f8f32 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
838099d06SSpencerAbson // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +sme-f8f16 -target-feature +sme-f8f32 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
938099d06SSpencerAbson 
1038099d06SSpencerAbson #include <arm_sme.h>
1138099d06SSpencerAbson 
1238099d06SSpencerAbson #ifdef SME_OVERLOADED_FORMS
139c89b40fSSpencerAbson #define SME_ACLE_FUNC(A1, A2_UNUSED, A3, A4_UNUSED, A5) A1##A3##A5
1438099d06SSpencerAbson #else
159c89b40fSSpencerAbson #define SME_ACLE_FUNC(A1, A2, A3, A4, A5) A1##A2##A3##A4##A5
1638099d06SSpencerAbson #endif
1738099d06SSpencerAbson 
1838099d06SSpencerAbson // FMLAL (indexed)
1938099d06SSpencerAbson 
2038099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za16_vg2x1(
2138099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
2238099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
2338099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
2438099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]], i32 0)
2538099d06SSpencerAbson // CHECK-NEXT:    ret void
2638099d06SSpencerAbson //
2738099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za16_vg2x1ju13__SVMfloat8_tS_m(
2838099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
2938099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
3038099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
3138099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]], i32 0)
3238099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
3338099d06SSpencerAbson //
3438099d06SSpencerAbson void test_svmla_lane_za16_vg2x1(uint32_t slice, svmfloat8_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
359c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za16,_mf8,_vg2x1_fpm,,)(slice, zn, zm, 0, fpm);
3638099d06SSpencerAbson }
3738099d06SSpencerAbson 
3838099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za16_vg2x2(
3938099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
4038099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
4138099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
4238099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]], i32 15)
4338099d06SSpencerAbson // CHECK-NEXT:    ret void
4438099d06SSpencerAbson //
4538099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za16_vg2x2j13svmfloat8x2_tu13__SVMfloat8_tm(
4638099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
4738099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
4838099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
4938099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]], i32 15)
5038099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
5138099d06SSpencerAbson //
5238099d06SSpencerAbson void test_svmla_lane_za16_vg2x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
539c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za16,_mf8,_vg2x2_fpm,,)(slice, zn, zm, 15, fpm);
5438099d06SSpencerAbson }
5538099d06SSpencerAbson 
5638099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za16_vg2x4(
5738099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
5838099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
5938099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
6038099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]], i32 7)
6138099d06SSpencerAbson // CHECK-NEXT:    ret void
6238099d06SSpencerAbson //
6338099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za16_vg2x4j13svmfloat8x4_tu13__SVMfloat8_tm(
6438099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
6538099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
6638099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
6738099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.lane.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]], i32 7)
6838099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
6938099d06SSpencerAbson //
7038099d06SSpencerAbson void test_svmla_lane_za16_vg2x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
719c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za16,_mf8,_vg2x4_fpm,,)(slice, zn, zm, 7, fpm);
7238099d06SSpencerAbson }
7338099d06SSpencerAbson 
7438099d06SSpencerAbson // FMLALL (indexed)
7538099d06SSpencerAbson 
7638099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za32_vg4x1(
7738099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
7838099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
7938099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
8038099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]], i32 0)
8138099d06SSpencerAbson // CHECK-NEXT:    ret void
8238099d06SSpencerAbson //
8338099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za32_vg4x1ju13__SVMfloat8_tS_m(
8438099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
8538099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
8638099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
8738099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]], i32 0)
8838099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
8938099d06SSpencerAbson //
9038099d06SSpencerAbson void test_svmla_lane_za32_vg4x1(uint32_t slice, svmfloat8_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
919c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za32,_mf8,_vg4x1_fpm,,)(slice, zn, zm, 0, fpm);
9238099d06SSpencerAbson }
9338099d06SSpencerAbson 
9438099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za32_vg4x2(
9538099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
9638099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
9738099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
9838099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]], i32 15)
9938099d06SSpencerAbson // CHECK-NEXT:    ret void
10038099d06SSpencerAbson //
10138099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za32_vg4x2j13svmfloat8x2_tu13__SVMfloat8_tm(
10238099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
10338099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
10438099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
10538099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]], i32 15)
10638099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
10738099d06SSpencerAbson //
10838099d06SSpencerAbson void test_svmla_lane_za32_vg4x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
1099c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za32,_mf8,_vg4x2_fpm,,)(slice, zn, zm, 15, fpm);
11038099d06SSpencerAbson }
11138099d06SSpencerAbson 
11238099d06SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_lane_za32_vg4x4(
11338099d06SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
11438099d06SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
11538099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
11638099d06SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]], i32 7)
11738099d06SSpencerAbson // CHECK-NEXT:    ret void
11838099d06SSpencerAbson //
11938099d06SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z26test_svmla_lane_za32_vg4x4j13svmfloat8x4_tu13__SVMfloat8_tm(
12038099d06SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
12138099d06SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
12238099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
12338099d06SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.lane.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]], i32 7)
12438099d06SSpencerAbson // CPP-CHECK-NEXT:    ret void
12538099d06SSpencerAbson //
12638099d06SSpencerAbson void test_svmla_lane_za32_vg4x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
1279c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla_lane_za32,_mf8,_vg4x4_fpm,,)(slice, zn, zm, 7, fpm);
1289c89b40fSSpencerAbson }
1299c89b40fSSpencerAbson 
1309c89b40fSSpencerAbson // FMLAL (single)
1319c89b40fSSpencerAbson 
1329c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za16_vg2x1(
1339c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
1349c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
1359c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1369c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
1379c89b40fSSpencerAbson // CHECK-NEXT:    ret void
1389c89b40fSSpencerAbson //
1399c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za16_vg2x1ju13__SVMfloat8_tS_m(
1409c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
1419c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
1429c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1439c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
1449c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
1459c89b40fSSpencerAbson //
1469c89b40fSSpencerAbson void test_svmla_single_za16_vg2x1(uint32_t slice, svmfloat8_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
1479c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za16,_mf8,_vg2x1_fpm)(slice, zn, zm, fpm);
1489c89b40fSSpencerAbson }
1499c89b40fSSpencerAbson 
1509c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za16_vg2x2(
1519c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1529c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
1539c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1549c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]])
1559c89b40fSSpencerAbson // CHECK-NEXT:    ret void
1569c89b40fSSpencerAbson //
1579c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za16_vg2x2j13svmfloat8x2_tu13__SVMfloat8_tm(
1589c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1599c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
1609c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1619c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]])
1629c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
1639c89b40fSSpencerAbson //
1649c89b40fSSpencerAbson void test_svmla_single_za16_vg2x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
1659c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za16,_mf8,_vg2x2_fpm)(slice, zn, zm, fpm);
1669c89b40fSSpencerAbson }
1679c89b40fSSpencerAbson 
1689c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za16_vg2x4(
1699c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1709c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
1719c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1729c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]])
1739c89b40fSSpencerAbson // CHECK-NEXT:    ret void
1749c89b40fSSpencerAbson //
1759c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za16_vg2x4j13svmfloat8x4_tu13__SVMfloat8_tm(
1769c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1779c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
1789c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1799c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.single.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]])
1809c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
1819c89b40fSSpencerAbson //
1829c89b40fSSpencerAbson void test_svmla_single_za16_vg2x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
1839c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za16,_mf8,_vg2x4_fpm)(slice, zn, zm, fpm);
1849c89b40fSSpencerAbson }
1859c89b40fSSpencerAbson 
1869c89b40fSSpencerAbson // FMLALL (single)
1879c89b40fSSpencerAbson 
1889c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za32_vg4x1(
1899c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1909c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
1919c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1929c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
1939c89b40fSSpencerAbson // CHECK-NEXT:    ret void
1949c89b40fSSpencerAbson //
1959c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za32_vg4x1ju13__SVMfloat8_tS_m(
1969c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
1979c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
1989c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
1999c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x1(i32 [[SLICE]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
2009c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
2019c89b40fSSpencerAbson //
2029c89b40fSSpencerAbson void test_svmla_single_za32_vg4x1(uint32_t slice, svmfloat8_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
2039c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za32,_mf8,_vg4x1_fpm)(slice, zn, zm, fpm);
2049c89b40fSSpencerAbson }
2059c89b40fSSpencerAbson 
2069c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za32_vg4x2(
2079c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
2089c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
2099c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
2109c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]])
2119c89b40fSSpencerAbson // CHECK-NEXT:    ret void
2129c89b40fSSpencerAbson //
2139c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za32_vg4x2j13svmfloat8x2_tu13__SVMfloat8_tm(
2149c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
2159c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
2169c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
2179c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM]])
2189c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
2199c89b40fSSpencerAbson //
2209c89b40fSSpencerAbson void test_svmla_single_za32_vg4x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
2219c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za32,_mf8,_vg4x2_fpm)(slice, zn, zm, fpm);
2229c89b40fSSpencerAbson }
2239c89b40fSSpencerAbson 
2249c89b40fSSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_single_za32_vg4x4(
2259c89b40fSSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
2269c89b40fSSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
2279c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
2289c89b40fSSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]])
2299c89b40fSSpencerAbson // CHECK-NEXT:    ret void
2309c89b40fSSpencerAbson //
2319c89b40fSSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z28test_svmla_single_za32_vg4x4j13svmfloat8x4_tu13__SVMfloat8_tm(
2329c89b40fSSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
2339c89b40fSSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
2349c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
2359c89b40fSSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.single.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM]])
2369c89b40fSSpencerAbson // CPP-CHECK-NEXT:    ret void
2379c89b40fSSpencerAbson //
2389c89b40fSSpencerAbson void test_svmla_single_za32_vg4x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
2399c89b40fSSpencerAbson     SME_ACLE_FUNC(svmla,_single,_za32,_mf8,_vg4x4_fpm)(slice, zn, zm, fpm);
24038099d06SSpencerAbson }
241*908e3065SSpencerAbson 
242*908e3065SSpencerAbson // FMLAL (multi)
243*908e3065SSpencerAbson 
244*908e3065SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_multi_za16_vg2x2(
245*908e3065SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
246*908e3065SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
247*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
248*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.multi.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]])
249*908e3065SSpencerAbson // CHECK-NEXT:    ret void
250*908e3065SSpencerAbson //
251*908e3065SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z27test_svmla_multi_za16_vg2x2j13svmfloat8x2_tS_m(
252*908e3065SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0:[0-9]+]] {
253*908e3065SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
254*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
255*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.multi.za16.vg2x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]])
256*908e3065SSpencerAbson // CPP-CHECK-NEXT:    ret void
257*908e3065SSpencerAbson //
258*908e3065SSpencerAbson void test_svmla_multi_za16_vg2x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8x2_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
259*908e3065SSpencerAbson     SME_ACLE_FUNC(svmla_za16,_mf8,_vg2x2_fpm,,)(slice, zn, zm, fpm);
260*908e3065SSpencerAbson }
261*908e3065SSpencerAbson 
262*908e3065SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_multi_za16_vg2x4(
263*908e3065SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE2:%.*]], <vscale x 16 x i8> [[ZM_COERCE3:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
264*908e3065SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
265*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
266*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.multi.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE2]], <vscale x 16 x i8> [[ZM_COERCE3]])
267*908e3065SSpencerAbson // CHECK-NEXT:    ret void
268*908e3065SSpencerAbson //
269*908e3065SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z27test_svmla_multi_za16_vg2x4j13svmfloat8x4_tS_m(
270*908e3065SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE2:%.*]], <vscale x 16 x i8> [[ZM_COERCE3:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
271*908e3065SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
272*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
273*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlal.multi.za16.vg2x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE2]], <vscale x 16 x i8> [[ZM_COERCE3]])
274*908e3065SSpencerAbson // CPP-CHECK-NEXT:    ret void
275*908e3065SSpencerAbson //
276*908e3065SSpencerAbson void test_svmla_multi_za16_vg2x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8x4_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
277*908e3065SSpencerAbson     SME_ACLE_FUNC(svmla_za16,_mf8,_vg2x4_fpm,,)(slice, zn, zm, fpm);
278*908e3065SSpencerAbson }
279*908e3065SSpencerAbson 
280*908e3065SSpencerAbson // FMLALL (multi)
281*908e3065SSpencerAbson 
282*908e3065SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_multi_za32_vg4x2(
283*908e3065SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
284*908e3065SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
285*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
286*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.multi.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]])
287*908e3065SSpencerAbson // CHECK-NEXT:    ret void
288*908e3065SSpencerAbson //
289*908e3065SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z27test_svmla_multi_za32_vg4x2j13svmfloat8x2_tS_m(
290*908e3065SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
291*908e3065SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
292*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
293*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.multi.za32.vg4x2(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]])
294*908e3065SSpencerAbson // CPP-CHECK-NEXT:    ret void
295*908e3065SSpencerAbson //
296*908e3065SSpencerAbson void test_svmla_multi_za32_vg4x2(uint32_t slice, svmfloat8x2_t zn, svmfloat8x2_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
297*908e3065SSpencerAbson     SME_ACLE_FUNC(svmla_za32,_mf8,_vg4x2_fpm,,)(slice, zn, zm, fpm);
298*908e3065SSpencerAbson }
299*908e3065SSpencerAbson 
300*908e3065SSpencerAbson // CHECK-LABEL: define dso_local void @test_svmla_multi_za32_vg4x4(
301*908e3065SSpencerAbson // CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE2:%.*]], <vscale x 16 x i8> [[ZM_COERCE3:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
302*908e3065SSpencerAbson // CHECK-NEXT:  [[ENTRY:.*:]]
303*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
304*908e3065SSpencerAbson // CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.multi.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE2]], <vscale x 16 x i8> [[ZM_COERCE3]])
305*908e3065SSpencerAbson // CHECK-NEXT:    ret void
306*908e3065SSpencerAbson //
307*908e3065SSpencerAbson // CPP-CHECK-LABEL: define dso_local void @_Z27test_svmla_multi_za32_vg4x4j13svmfloat8x4_tS_m(
308*908e3065SSpencerAbson // CPP-CHECK-SAME: i32 noundef [[SLICE:%.*]], <vscale x 16 x i8> [[ZN_COERCE0:%.*]], <vscale x 16 x i8> [[ZN_COERCE1:%.*]], <vscale x 16 x i8> [[ZN_COERCE2:%.*]], <vscale x 16 x i8> [[ZN_COERCE3:%.*]], <vscale x 16 x i8> [[ZM_COERCE0:%.*]], <vscale x 16 x i8> [[ZM_COERCE1:%.*]], <vscale x 16 x i8> [[ZM_COERCE2:%.*]], <vscale x 16 x i8> [[ZM_COERCE3:%.*]], i64 noundef [[FPM:%.*]]) #[[ATTR0]] {
309*908e3065SSpencerAbson // CPP-CHECK-NEXT:  [[ENTRY:.*:]]
310*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.set.fpmr(i64 [[FPM]])
311*908e3065SSpencerAbson // CPP-CHECK-NEXT:    tail call void @llvm.aarch64.sme.fp8.fmlall.multi.za32.vg4x4(i32 [[SLICE]], <vscale x 16 x i8> [[ZN_COERCE0]], <vscale x 16 x i8> [[ZN_COERCE1]], <vscale x 16 x i8> [[ZN_COERCE2]], <vscale x 16 x i8> [[ZN_COERCE3]], <vscale x 16 x i8> [[ZM_COERCE0]], <vscale x 16 x i8> [[ZM_COERCE1]], <vscale x 16 x i8> [[ZM_COERCE2]], <vscale x 16 x i8> [[ZM_COERCE3]])
312*908e3065SSpencerAbson // CPP-CHECK-NEXT:    ret void
313*908e3065SSpencerAbson //
314*908e3065SSpencerAbson void test_svmla_multi_za32_vg4x4(uint32_t slice, svmfloat8x4_t zn, svmfloat8x4_t zm, fpm_t fpm) __arm_streaming __arm_inout("za") {
315*908e3065SSpencerAbson     SME_ACLE_FUNC(svmla_za32,_mf8,_vg4x4_fpm,,)(slice, zn, zm, fpm);
316*908e3065SSpencerAbson }
317