121 lines · cpp
1// RUN: %clang_cc1 -triple aarch64 \2// RUN: -target-feature +sme -target-feature +sme2 -verify -emit-llvm -o - %s3 4// REQUIRES: aarch64-registered-target5 6#include <arm_sme.h>7 8void test_features(svuint8x2_t zn_u8, svuint8_t zm_u8,9 svint8x2_t zn_s8, svint8_t zm_s8,10 svint16x2_t zn_s16, svint16_t zm_s16,11 svuint16x2_t zn_u16, svuint16_t zm_u16,12 svfloat16x2_t zn_f16, svfloat16_t zm_f16,13 svbfloat16x2_t zn_bf16, svbfloat16_t zm_bf16,14 svfloat32x2_t zn_f32, svfloat32_t zm_f32,15 svmfloat8x2_t zn_f8, svmfloat8_t zm_f8,16 svuint8_t zk, fpm_t fpm) __arm_streaming __arm_inout("za") {17 18// expected-error@+1 {{'svtmopa_lane_za32_s8_s8' needs target feature sme,sme2,sme-tmop}}19 svtmopa_lane_za32_s8_s8(0, zn_s8, zm_s8, zk, 0);20// expected-error@+1 {{'svtmopa_lane_za32_u8_u8' needs target feature sme,sme2,sme-tmop}}21 svtmopa_lane_za32_u8_u8(0, zn_u8, zm_u8, zk, 0);22// expected-error@+1 {{'svtmopa_lane_za32_s8_u8' needs target feature sme,sme2,sme-tmop}}23 svtmopa_lane_za32_s8_u8(0, zn_s8, zm_u8, zk, 0);24// expected-error@+1 {{'svtmopa_lane_za32_u8_s8' needs target feature sme,sme2,sme-tmop}}25 svtmopa_lane_za32_u8_s8(0, zn_u8, zm_s8, zk, 0);26// expected-error@+1 {{'svtmopa_lane_za32_s16_s16' needs target feature sme,sme2,sme-tmop}}27 svtmopa_lane_za32_s16_s16(0, zn_s16, zm_s16, zk, 0);28// expected-error@+1 {{'svtmopa_lane_za32_u16_u16' needs target feature sme,sme2,sme-tmop}}29 svtmopa_lane_za32_u16_u16(0, zn_u16, zm_u16, zk, 0);30// expected-error@+1 {{'svtmopa_lane_za32_f16_f16' needs target feature sme,sme2,sme-tmop}}31 svtmopa_lane_za32_f16_f16(0, zn_f16, zm_f16, zk, 0);32// expected-error@+1 {{'svtmopa_lane_za32_f32_f32' needs target feature sme,sme2,sme-tmop}}33 svtmopa_lane_za32_f32_f32(0, zn_f32, zm_f32, zk, 0);34// expected-error@+1 {{'svtmopa_lane_za32_bf16_bf16' needs target feature sme,sme2,sme-tmop}}35 svtmopa_lane_za32_bf16_bf16(0, zn_bf16, zm_bf16, zk, 0);36// expected-error@+1 {{'svtmopa_lane_za16_f16_f16' needs target feature sme,sme2,sme-tmop,sme-f16f16}}37 svtmopa_lane_za16_f16_f16(0, zn_f16, zm_f16, zk, 0);38// expected-error@+1 {{'svtmopa_lane_za16_bf16_bf16' needs target feature sme,sme2,sme-tmop,sme-b16b16}}39 svtmopa_lane_za16_bf16_bf16(0, zn_bf16, zm_bf16, zk, 0);40// expected-error@+1 {{'svtmopa_lane_za16_mf8_mf8_fpm' needs target feature sme,sme2,sme-tmop,sme-f8f16}}41 svtmopa_lane_za16_mf8_mf8_fpm(0, zn_f8, zm_f8, zk, 0, fpm);42// expected-error@+1 {{'svtmopa_lane_za32_mf8_mf8_fpm' needs target feature sme,sme2,sme-tmop,sme-f8f32}}43 svtmopa_lane_za32_mf8_mf8_fpm(0, zn_f8, zm_f8, zk, 0, fpm);44}45 46void test_imm(svuint8x2_t zn_u8, svuint8_t zm_u8,47 svint8x2_t zn_s8, svint8_t zm_s8,48 svint16x2_t zn_s16, svint16_t zm_s16,49 svuint16x2_t zn_u16, svuint16_t zm_u16,50 svfloat16x2_t zn_f16, svfloat16_t zm_f16,51 svbfloat16x2_t zn_bf16, svbfloat16_t zm_bf16,52 svfloat32x2_t zn_f32, svfloat32_t zm_f32,53 svmfloat8x2_t zn_f8, svmfloat8_t zm_f8,54 svuint8_t zk, fpm_t fpm) __arm_streaming __arm_inout("za") {55 56// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}57 svtmopa_lane_za32_s8_s8(0, zn_s8, zm_s8, zk, 4);58// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}59 svtmopa_lane_za32_s8_s8(4, zn_s8, zm_s8, zk, 0);60 61// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}62 svtmopa_lane_za32_u8_u8(0, zn_u8, zm_u8, zk, 4);63// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}64 svtmopa_lane_za32_u8_u8(4, zn_u8, zm_u8, zk, 0);65 66// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}67 svtmopa_lane_za32_s8_u8(0, zn_s8, zm_u8, zk, 4);68// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}69 svtmopa_lane_za32_s8_u8(4, zn_s8, zm_u8, zk, 0);70 71// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}72 svtmopa_lane_za32_u8_s8(0, zn_u8, zm_s8, zk, 4);73// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}74 svtmopa_lane_za32_u8_s8(4, zn_u8, zm_s8, zk, 0);75 76// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}77 svtmopa_lane_za32_s16_s16(0, zn_s16, zm_s16, zk, 4);78// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}79 svtmopa_lane_za32_s16_s16(4, zn_s16, zm_s16, zk, 0);80 81// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}82 svtmopa_lane_za32_u16_u16(0, zn_u16, zm_u16, zk, 4);83// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}84 svtmopa_lane_za32_u16_u16(4, zn_u16, zm_u16, zk, 0);85 86// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}87 svtmopa_lane_za32_f16_f16(0, zn_f16, zm_f16, zk, 4);88// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}89 svtmopa_lane_za32_f16_f16(4, zn_f16, zm_f16, zk, 0);90 91// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}92 svtmopa_lane_za32_f32_f32(0, zn_f32, zm_f32, zk, 4);93// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}94 svtmopa_lane_za32_f32_f32(4, zn_f32, zm_f32, zk, 0);95 96// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}97 svtmopa_lane_za32_bf16_bf16(0, zn_bf16, zm_bf16, zk, 4);98// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}99 svtmopa_lane_za32_bf16_bf16(4, zn_bf16, zm_bf16, zk, 0);100 101// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}102 svtmopa_lane_za16_f16_f16(0, zn_f16, zm_f16, zk, 4);103// expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}104 svtmopa_lane_za16_f16_f16(2, zn_f16, zm_f16, zk, 0);105 106// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}107 svtmopa_lane_za16_bf16_bf16(0, zn_bf16, zm_bf16, zk, 4);108// expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}109 svtmopa_lane_za16_bf16_bf16(2, zn_bf16, zm_bf16, zk, 0);110 111// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}112 svtmopa_lane_za16_mf8_mf8_fpm(0, zn_f8, zm_f8, zk, 4, fpm);113// expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}114 svtmopa_lane_za16_mf8_mf8_fpm(2, zn_f8, zm_f8, zk, 0, fpm);115 116// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}117 svtmopa_lane_za32_mf8_mf8_fpm(0, zn_f8, zm_f8, zk, 4, fpm);118// expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}119 svtmopa_lane_za32_mf8_mf8_fpm(4, zn_f8, zm_f8, zk, 0, fpm);120}121