466 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2 3// REQUIRES: aarch64-registered-target4// RUN: %clang_cc1 -triple aarch64 -target-feature +sme-mop4 -target-feature +sme-f16f16 -target-feature +sme-i16i64 -target-feature +sme-b16b16 -target-feature +sme-f64f64 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s5// RUN: %clang_cc1 -triple aarch64 -target-feature +sme-mop4 -target-feature +sme-f16f16 -target-feature +sme-i16i64 -target-feature +sme-b16b16 -target-feature +sme-f64f64 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK6// RUN: %clang_cc1 -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-mop4 -target-feature +sme-f16f16 -target-feature +sme-i16i64 -target-feature +sme-b16b16 -target-feature +sme-f64f64 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s7// RUN: %clang_cc1 -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-mop4 -target-feature +sme-f16f16 -target-feature +sme-i16i64 -target-feature +sme-b16b16 -target-feature +sme-f64f64 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK8// RUN: %clang_cc1 -triple aarch64 -target-feature +sme-mop4 -target-feature +sme-f16f16 -target-feature +sme-i16i64 -target-feature +sme-b16b16 -target-feature +sme-f64f64 -target-feature +sme -target-feature +sme2 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s9 10 11#include <arm_sme.h>12 13#ifdef SME_OVERLOADED_FORMS14#define SME_ACLE_FUNC(A1,A2_UNUSED,A3, A4_UNUSED) A1##A315#else16#define SME_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A417#endif18 19// CHECK-LABEL: @test_svmop4a_1x1_za32_s8_s8(20// CHECK-NEXT: entry:21// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])22// CHECK-NEXT: ret void23//24// CPP-CHECK-LABEL: @_Z27test_svmop4a_1x1_za32_s8_s8u10__SVInt8_tS_(25// CPP-CHECK-NEXT: entry:26// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])27// CPP-CHECK-NEXT: ret void28//29void test_svmop4a_1x1_za32_s8_s8(svint8_t zn, svint8_t zm) __arm_streaming __arm_inout("za") {30 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_s8_s8)(1, zn, zm);31}32 33// CHECK-LABEL: @test_svmop4s_1x1_za32_s8_s8(34// CHECK-NEXT: entry:35// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])36// CHECK-NEXT: ret void37//38// CPP-CHECK-LABEL: @_Z27test_svmop4s_1x1_za32_s8_s8u10__SVInt8_tS_(39// CPP-CHECK-NEXT: entry:40// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])41// CPP-CHECK-NEXT: ret void42//43void test_svmop4s_1x1_za32_s8_s8(svint8_t zn, svint8_t zm) __arm_streaming __arm_inout("za") {44 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_s8_s8)(1, zn, zm);45}46 47// CHECK-LABEL: @test_svmop4a_1x1_za32_u8_u8(48// CHECK-NEXT: entry:49// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])50// CHECK-NEXT: ret void51//52// CPP-CHECK-LABEL: @_Z27test_svmop4a_1x1_za32_u8_u8u11__SVUint8_tS_(53// CPP-CHECK-NEXT: entry:54// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])55// CPP-CHECK-NEXT: ret void56//57void test_svmop4a_1x1_za32_u8_u8(svuint8_t zn, svuint8_t zm) __arm_streaming __arm_inout("za") {58 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_u8_u8)(1, zn, zm);59}60 61// CHECK-LABEL: @test_svmop4s_1x1_za32_u8_u8(62// CHECK-NEXT: entry:63// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])64// CHECK-NEXT: ret void65//66// CPP-CHECK-LABEL: @_Z27test_svmop4s_1x1_za32_u8_u8u11__SVUint8_tS_(67// CPP-CHECK-NEXT: entry:68// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])69// CPP-CHECK-NEXT: ret void70//71void test_svmop4s_1x1_za32_u8_u8(svuint8_t zn, svuint8_t zm) __arm_streaming __arm_inout("za") {72 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_u8_u8)(1, zn, zm);73}74 75// CHECK-LABEL: @test_svmop4a_1x1_za32_s8_u8(76// CHECK-NEXT: entry:77// CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])78// CHECK-NEXT: ret void79//80// CPP-CHECK-LABEL: @_Z27test_svmop4a_1x1_za32_s8_u8u10__SVInt8_tu11__SVUint8_t(81// CPP-CHECK-NEXT: entry:82// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])83// CPP-CHECK-NEXT: ret void84//85void test_svmop4a_1x1_za32_s8_u8(svint8_t zn, svuint8_t zm) __arm_streaming __arm_inout("za") {86 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_s8_u8)(1, zn, zm);87}88 89// CHECK-LABEL: @test_svmop4s_1x1_za32_s8_u8(90// CHECK-NEXT: entry:91// CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])92// CHECK-NEXT: ret void93//94// CPP-CHECK-LABEL: @_Z27test_svmop4s_1x1_za32_s8_u8u10__SVInt8_tu11__SVUint8_t(95// CPP-CHECK-NEXT: entry:96// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])97// CPP-CHECK-NEXT: ret void98//99void test_svmop4s_1x1_za32_s8_u8(svint8_t zn, svuint8_t zm) __arm_streaming __arm_inout("za") {100 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_s8_u8)(1, zn, zm);101}102 103// CHECK-LABEL: @test_svmop4a_1x1_za32_u8_s8(104// CHECK-NEXT: entry:105// CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])106// CHECK-NEXT: ret void107//108// CPP-CHECK-LABEL: @_Z27test_svmop4a_1x1_za32_u8_s8u11__SVUint8_tu10__SVInt8_t(109// CPP-CHECK-NEXT: entry:110// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4a.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])111// CPP-CHECK-NEXT: ret void112//113void test_svmop4a_1x1_za32_u8_s8(svuint8_t zn, svint8_t zm) __arm_streaming __arm_inout("za") {114 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_u8_s8)(1, zn, zm);115}116 117// CHECK-LABEL: @test_svmop4s_1x1_za32_u8_s8(118// CHECK-NEXT: entry:119// CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])120// CHECK-NEXT: ret void121//122// CPP-CHECK-LABEL: @_Z27test_svmop4s_1x1_za32_u8_s8u11__SVUint8_tu10__SVInt8_t(123// CPP-CHECK-NEXT: entry:124// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4s.wide.1x1.nxv16i8(i32 1, <vscale x 16 x i8> [[ZN:%.*]], <vscale x 16 x i8> [[ZM:%.*]])125// CPP-CHECK-NEXT: ret void126//127void test_svmop4s_1x1_za32_u8_s8(svuint8_t zn, svint8_t zm) __arm_streaming __arm_inout("za") {128 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_u8_s8)(1, zn, zm);129}130 131// CHECK-LABEL: @test_svmop4a_1x1_za32_s16_s16(132// CHECK-NEXT: entry:133// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])134// CHECK-NEXT: ret void135//136// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za32_s16_s16u11__SVInt16_tS_(137// CPP-CHECK-NEXT: entry:138// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])139// CPP-CHECK-NEXT: ret void140//141void test_svmop4a_1x1_za32_s16_s16(svint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {142 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_s16_s16)(1, zn, zm);143}144 145// CHECK-LABEL: @test_svmop4s_1x1_za32_s16_s16(146// CHECK-NEXT: entry:147// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])148// CHECK-NEXT: ret void149//150// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za32_s16_s16u11__SVInt16_tS_(151// CPP-CHECK-NEXT: entry:152// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])153// CPP-CHECK-NEXT: ret void154//155void test_svmop4s_1x1_za32_s16_s16(svint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {156 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_s16_s16)(1, zn, zm);157}158 159// CHECK-LABEL: @test_svmop4a_1x1_za32_u16_u16(160// CHECK-NEXT: entry:161// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])162// CHECK-NEXT: ret void163//164// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za32_u16_u16u12__SVUint16_tS_(165// CPP-CHECK-NEXT: entry:166// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])167// CPP-CHECK-NEXT: ret void168//169void test_svmop4a_1x1_za32_u16_u16(svuint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {170 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_u16_u16)(1, zn, zm);171}172 173// CHECK-LABEL: @test_svmop4s_1x1_za32_u16_u16(174// CHECK-NEXT: entry:175// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])176// CHECK-NEXT: ret void177//178// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za32_u16_u16u12__SVUint16_tS_(179// CPP-CHECK-NEXT: entry:180// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])181// CPP-CHECK-NEXT: ret void182//183void test_svmop4s_1x1_za32_u16_u16(svuint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {184 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_u16_u16)(1, zn, zm);185}186 187// CHECK-LABEL: @test_svmop4a_1x1_za32_f16_f16(188// CHECK-NEXT: entry:189// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.wide.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])190// CHECK-NEXT: ret void191//192// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za32_f16_f16u13__SVFloat16_tS_(193// CPP-CHECK-NEXT: entry:194// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.wide.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])195// CPP-CHECK-NEXT: ret void196//197void test_svmop4a_1x1_za32_f16_f16(svfloat16_t zn, svfloat16_t zm) __arm_streaming __arm_inout("za") {198 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_f16_f16)(1, zn, zm);199}200 201// CHECK-LABEL: @test_svmop4s_1x1_za32_f16_f16(202// CHECK-NEXT: entry:203// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.wide.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])204// CHECK-NEXT: ret void205//206// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za32_f16_f16u13__SVFloat16_tS_(207// CPP-CHECK-NEXT: entry:208// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.wide.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])209// CPP-CHECK-NEXT: ret void210//211void test_svmop4s_1x1_za32_f16_f16(svfloat16_t zn, svfloat16_t zm) __arm_streaming __arm_inout("za") {212 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_f16_f16)(1, zn, zm);213}214 215// CHECK-LABEL: @test_svmop4a_1x1_za32_bf16_bf16(216// CHECK-NEXT: entry:217// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.wide.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])218// CHECK-NEXT: ret void219//220// CPP-CHECK-LABEL: @_Z31test_svmop4a_1x1_za32_bf16_bf16u14__SVBfloat16_tS_(221// CPP-CHECK-NEXT: entry:222// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.wide.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])223// CPP-CHECK-NEXT: ret void224//225void test_svmop4a_1x1_za32_bf16_bf16(svbfloat16_t zn, svbfloat16_t zm) __arm_streaming __arm_inout("za") {226 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_bf16_bf16)(1, zn, zm);227}228 229// CHECK-LABEL: @test_svmop4s_1x1_za32_bf16_bf16(230// CHECK-NEXT: entry:231// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.wide.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])232// CHECK-NEXT: ret void233//234// CPP-CHECK-LABEL: @_Z31test_svmop4s_1x1_za32_bf16_bf16u14__SVBfloat16_tS_(235// CPP-CHECK-NEXT: entry:236// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.wide.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])237// CPP-CHECK-NEXT: ret void238//239void test_svmop4s_1x1_za32_bf16_bf16(svbfloat16_t zn, svbfloat16_t zm) __arm_streaming __arm_inout("za") {240 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_bf16_bf16)(1, zn, zm);241}242 243// CHECK-LABEL: @test_svmop4a_1x1_za64_s16_s16(244// CHECK-NEXT: entry:245// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])246// CHECK-NEXT: ret void247//248// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za64_s16_s16u11__SVInt16_tS_(249// CPP-CHECK-NEXT: entry:250// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])251// CPP-CHECK-NEXT: ret void252//253void test_svmop4a_1x1_za64_s16_s16(svint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {254 SME_ACLE_FUNC(svmop4a,_1x1,_za64,_s16_s16)(1, zn, zm);255}256 257// CHECK-LABEL: @test_svmop4s_1x1_za64_s16_s16(258// CHECK-NEXT: entry:259// CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])260// CHECK-NEXT: ret void261//262// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za64_s16_s16u11__SVInt16_tS_(263// CPP-CHECK-NEXT: entry:264// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.smop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])265// CPP-CHECK-NEXT: ret void266//267void test_svmop4s_1x1_za64_s16_s16(svint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {268 SME_ACLE_FUNC(svmop4s,_1x1,_za64,_s16_s16)(1, zn, zm);269}270 271// CHECK-LABEL: @test_svmop4a_1x1_za64_u16_u16(272// CHECK-NEXT: entry:273// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])274// CHECK-NEXT: ret void275//276// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za64_u16_u16u12__SVUint16_tS_(277// CPP-CHECK-NEXT: entry:278// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])279// CPP-CHECK-NEXT: ret void280//281void test_svmop4a_1x1_za64_u16_u16(svuint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {282 SME_ACLE_FUNC(svmop4a,_1x1,_za64,_u16_u16)(1, zn, zm);283}284 285// CHECK-LABEL: @test_svmop4s_1x1_za64_u16_u16(286// CHECK-NEXT: entry:287// CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])288// CHECK-NEXT: ret void289//290// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za64_u16_u16u12__SVUint16_tS_(291// CPP-CHECK-NEXT: entry:292// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.umop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])293// CPP-CHECK-NEXT: ret void294//295void test_svmop4s_1x1_za64_u16_u16(svuint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {296 SME_ACLE_FUNC(svmop4s,_1x1,_za64,_u16_u16)(1, zn, zm);297}298 299// CHECK-LABEL: @test_svmop4a_1x1_za64_s16_u16(300// CHECK-NEXT: entry:301// CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])302// CHECK-NEXT: ret void303//304// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za64_s16_u16u11__SVInt16_tu12__SVUint16_t(305// CPP-CHECK-NEXT: entry:306// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])307// CPP-CHECK-NEXT: ret void308//309void test_svmop4a_1x1_za64_s16_u16(svint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {310 SME_ACLE_FUNC(svmop4a,_1x1,_za64,_s16_u16)(1, zn, zm);311}312 313// CHECK-LABEL: @test_svmop4s_1x1_za64_s16_u16(314// CHECK-NEXT: entry:315// CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])316// CHECK-NEXT: ret void317//318// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za64_s16_u16u11__SVInt16_tu12__SVUint16_t(319// CPP-CHECK-NEXT: entry:320// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.sumop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])321// CPP-CHECK-NEXT: ret void322//323void test_svmop4s_1x1_za64_s16_u16(svint16_t zn, svuint16_t zm) __arm_streaming __arm_inout("za") {324 SME_ACLE_FUNC(svmop4s,_1x1,_za64,_s16_u16)(1, zn, zm);325}326 327// CHECK-LABEL: @test_svmop4a_1x1_za64_u16_s16(328// CHECK-NEXT: entry:329// CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])330// CHECK-NEXT: ret void331//332// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za64_u16_s16u12__SVUint16_tu11__SVInt16_t(333// CPP-CHECK-NEXT: entry:334// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4a.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])335// CPP-CHECK-NEXT: ret void336//337void test_svmop4a_1x1_za64_u16_s16(svuint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {338 SME_ACLE_FUNC(svmop4a,_1x1,_za64,_u16_s16)(1, zn, zm);339}340 341// CHECK-LABEL: @test_svmop4s_1x1_za64_u16_s16(342// CHECK-NEXT: entry:343// CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])344// CHECK-NEXT: ret void345//346// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za64_u16_s16u12__SVUint16_tu11__SVInt16_t(347// CPP-CHECK-NEXT: entry:348// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.usmop4s.za64.wide.1x1.nxv8i16(i32 1, <vscale x 8 x i16> [[ZN:%.*]], <vscale x 8 x i16> [[ZM:%.*]])349// CPP-CHECK-NEXT: ret void350//351void test_svmop4s_1x1_za64_u16_s16(svuint16_t zn, svint16_t zm) __arm_streaming __arm_inout("za") {352 SME_ACLE_FUNC(svmop4s,_1x1,_za64,_u16_s16)(1, zn, zm);353}354 355// CHECK-LABEL: @test_svmop4a_1x1_za16_f16_f16(356// CHECK-NEXT: entry:357// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])358// CHECK-NEXT: ret void359//360// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za16_f16_f16u13__SVFloat16_tS_(361// CPP-CHECK-NEXT: entry:362// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])363// CPP-CHECK-NEXT: ret void364//365void test_svmop4a_1x1_za16_f16_f16(svfloat16_t zn, svfloat16_t zm) __arm_streaming __arm_inout("za") {366 SME_ACLE_FUNC(svmop4a,_1x1,_za16,_f16_f16)(1, zn, zm);367}368 369// CHECK-LABEL: @test_svmop4s_1x1_za16_f16_f16(370// CHECK-NEXT: entry:371// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])372// CHECK-NEXT: ret void373//374// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za16_f16_f16u13__SVFloat16_tS_(375// CPP-CHECK-NEXT: entry:376// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv8f16(i32 1, <vscale x 8 x half> [[ZN:%.*]], <vscale x 8 x half> [[ZM:%.*]])377// CPP-CHECK-NEXT: ret void378//379void test_svmop4s_1x1_za16_f16_f16(svfloat16_t zn, svfloat16_t zm) __arm_streaming __arm_inout("za") {380 SME_ACLE_FUNC(svmop4s,_1x1,_za16,_f16_f16)(1, zn, zm);381}382 383// CHECK-LABEL: @test_svmop4a_1x1_za32_f32_f32(384// CHECK-NEXT: entry:385// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv4f32(i32 1, <vscale x 4 x float> [[ZN:%.*]], <vscale x 4 x float> [[ZM:%.*]])386// CHECK-NEXT: ret void387//388// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za32_f32_f32u13__SVFloat32_tS_(389// CPP-CHECK-NEXT: entry:390// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv4f32(i32 1, <vscale x 4 x float> [[ZN:%.*]], <vscale x 4 x float> [[ZM:%.*]])391// CPP-CHECK-NEXT: ret void392//393void test_svmop4a_1x1_za32_f32_f32(svfloat32_t zn, svfloat32_t zm) __arm_streaming __arm_inout("za") {394 SME_ACLE_FUNC(svmop4a,_1x1,_za32,_f32_f32)(1, zn, zm);395}396 397// CHECK-LABEL: @test_svmop4s_1x1_za32_f32_f32(398// CHECK-NEXT: entry:399// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv4f32(i32 1, <vscale x 4 x float> [[ZN:%.*]], <vscale x 4 x float> [[ZM:%.*]])400// CHECK-NEXT: ret void401//402// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za32_f32_f32u13__SVFloat32_tS_(403// CPP-CHECK-NEXT: entry:404// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv4f32(i32 1, <vscale x 4 x float> [[ZN:%.*]], <vscale x 4 x float> [[ZM:%.*]])405// CPP-CHECK-NEXT: ret void406//407void test_svmop4s_1x1_za32_f32_f32(svfloat32_t zn, svfloat32_t zm) __arm_streaming __arm_inout("za") {408 SME_ACLE_FUNC(svmop4s,_1x1,_za32,_f32_f32)(1, zn, zm);409}410 411// CHECK-LABEL: @test_svmop4a_1x1_za64_f64_f64(412// CHECK-NEXT: entry:413// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv2f64(i32 1, <vscale x 2 x double> [[ZN:%.*]], <vscale x 2 x double> [[ZM:%.*]])414// CHECK-NEXT: ret void415//416// CPP-CHECK-LABEL: @_Z29test_svmop4a_1x1_za64_f64_f64u13__SVFloat64_tS_(417// CPP-CHECK-NEXT: entry:418// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv2f64(i32 1, <vscale x 2 x double> [[ZN:%.*]], <vscale x 2 x double> [[ZM:%.*]])419// CPP-CHECK-NEXT: ret void420//421void test_svmop4a_1x1_za64_f64_f64(svfloat64_t zn, svfloat64_t zm) __arm_streaming __arm_inout("za") {422 SME_ACLE_FUNC(svmop4a,_1x1,_za64,_f64_f64)(1, zn, zm);423}424 425// CHECK-LABEL: @test_svmop4s_1x1_za64_f64_f64(426// CHECK-NEXT: entry:427// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv2f64(i32 1, <vscale x 2 x double> [[ZN:%.*]], <vscale x 2 x double> [[ZM:%.*]])428// CHECK-NEXT: ret void429//430// CPP-CHECK-LABEL: @_Z29test_svmop4s_1x1_za64_f64_f64u13__SVFloat64_tS_(431// CPP-CHECK-NEXT: entry:432// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv2f64(i32 1, <vscale x 2 x double> [[ZN:%.*]], <vscale x 2 x double> [[ZM:%.*]])433// CPP-CHECK-NEXT: ret void434//435void test_svmop4s_1x1_za64_f64_f64(svfloat64_t zn, svfloat64_t zm) __arm_streaming __arm_inout("za") {436 SME_ACLE_FUNC(svmop4s,_1x1,_za64,_f64_f64)(1, zn, zm);437}438 439// CHECK-LABEL: @test_svmop4a_1x1_za16_bf16_bf16(440// CHECK-NEXT: entry:441// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])442// CHECK-NEXT: ret void443//444// CPP-CHECK-LABEL: @_Z31test_svmop4a_1x1_za16_bf16_bf16u14__SVBfloat16_tS_(445// CPP-CHECK-NEXT: entry:446// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4a.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])447// CPP-CHECK-NEXT: ret void448//449void test_svmop4a_1x1_za16_bf16_bf16(svbfloat16_t zn, svbfloat16_t zm) __arm_streaming __arm_inout("za") {450 SME_ACLE_FUNC(svmop4a,_1x1,_za16,_bf16_bf16)(1, zn, zm);451}452 453// CHECK-LABEL: @test_svmop4s_1x1_za16_bf16_bf16(454// CHECK-NEXT: entry:455// CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])456// CHECK-NEXT: ret void457//458// CPP-CHECK-LABEL: @_Z31test_svmop4s_1x1_za16_bf16_bf16u14__SVBfloat16_tS_(459// CPP-CHECK-NEXT: entry:460// CPP-CHECK-NEXT: tail call void @llvm.aarch64.sme.mop4s.1x1.nxv8bf16(i32 1, <vscale x 8 x bfloat> [[ZN:%.*]], <vscale x 8 x bfloat> [[ZM:%.*]])461// CPP-CHECK-NEXT: ret void462//463void test_svmop4s_1x1_za16_bf16_bf16(svbfloat16_t zn, svbfloat16_t zm) __arm_streaming __arm_inout("za") {464 SME_ACLE_FUNC(svmop4s,_1x1,_za16,_bf16_bf16)(1, zn, zm);465}466