47 lines · c
1// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -Waarch64-sme-attributes -fsyntax-only -verify %s2// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -Waarch64-sme-attributes -fsyntax-only -verify=expected-cpp -x c++ %s3 4__attribute__((target_clones("sve", "simd"))) void ok_arm_streaming(void) __arm_streaming {}5__arm_locally_streaming __attribute__((target_version("sme2"))) void ok_arm_streaming(void) __arm_streaming {}6__attribute__((target_version("default"))) void ok_arm_streaming(void) __arm_streaming {}7 8__attribute__((target_clones("sve", "simd"))) void ok_arm_streaming_compatible(void) __arm_streaming_compatible {}9__arm_locally_streaming __attribute__((target_version("sme2"))) void ok_arm_streaming_compatible(void) __arm_streaming_compatible {}10__attribute__((target_version("default"))) void ok_arm_streaming_compatible(void) __arm_streaming_compatible {}11 12__arm_locally_streaming __attribute__((target_clones("sve", "simd"))) void ok_no_streaming(void) {}13__attribute__((target_version("sme2"))) void ok_no_streaming(void) {}14__attribute__((target_version("default"))) void ok_no_streaming(void) {}15 16__attribute__((target_clones("sve", "simd"))) void bad_mixed_streaming(void) {}17// expected-cpp-error@+2 {{multiversioned function declaration has a different calling convention}}18// expected-error@+1 {{multiversioned function declaration has a different calling convention}}19__attribute__((target_version("sme2"))) void bad_mixed_streaming(void) __arm_streaming {}20// expected-cpp-error@+2 {{multiversioned function declaration has a different calling convention}}21// expected-error@+1 {{multiversioned function declaration has a different calling convention}}22__attribute__((target_version("default"))) void bad_mixed_streaming(void) __arm_streaming_compatible {}23// expected-cpp-error@+2 {{multiversioned function declaration has a different calling convention}}24// expected-error@+1 {{multiversioned function declaration has a different calling convention}}25__arm_locally_streaming __attribute__((target_version("dotprod"))) void bad_mixed_streaming(void) __arm_streaming {}26 27void n_caller(void) {28 ok_arm_streaming();29 ok_arm_streaming_compatible();30 ok_no_streaming();31 bad_mixed_streaming();32}33 34void s_caller(void) __arm_streaming {35 ok_arm_streaming();36 ok_arm_streaming_compatible();37 ok_no_streaming();38 bad_mixed_streaming();39}40 41void sc_caller(void) __arm_streaming_compatible {42 ok_arm_streaming();43 ok_arm_streaming_compatible();44 ok_no_streaming();45 bad_mixed_streaming();46}47