47 lines · c
1// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -fsyntax-only -verify %s2// REQUIRES: aarch64-registered-target3 4#include <arm_sve.h>5 6__attribute__((target("sve")))7long test_builtin_vectorelements_sve(void) {8 return __builtin_vectorelements(svuint8_t);9}10 11__attribute__((target("sve2p1")))12long test_builtin_vectorelements_sve2p1(void) {13 return __builtin_vectorelements(svuint8_t);14}15 16long test_builtin_vectorelements_no_sve(void) {17 // expected-error@+1 {{SVE vector type 'svuint8_t' (aka '__SVUint8_t') cannot be used in a target without sve}}18 return __builtin_vectorelements(svuint8_t);19}20 21__attribute__((target("sme")))22long test_builtin_vectorelements_sme_streaming(void) __arm_streaming {23 return __builtin_vectorelements(svuint8_t);24}25 26__attribute__((target("sme2p1")))27long test_builtin_vectorelements_sme2p1_streaming(void) __arm_streaming {28 return __builtin_vectorelements(svuint8_t);29}30 31__attribute__((target("sme")))32long test_builtin_vectorelements_sme(void) {33 // expected-error@+1 {{SVE vector type 'svuint8_t' (aka '__SVUint8_t') cannot be used in a non-streaming function}}34 return __builtin_vectorelements(svuint8_t);35}36 37__attribute__((target("sve,sme")))38long test_builtin_vectorelements_sve_sme_streaming_compatible(void) __arm_streaming_compatible {39 return __builtin_vectorelements(svuint8_t);40}41 42__attribute__((target("sme")))43long test_builtin_vectorelements_sme_streaming_compatible(void) __arm_streaming_compatible {44 // expected-error@+1 {{SVE vector type 'svuint8_t' (aka '__SVUint8_t') cannot be used in a non-streaming function}}45 return __builtin_vectorelements(svuint8_t);46}47