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