55 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon -target-feature +bf16 -target-feature +faminmax -target-feature +fp8 -emit-llvm -verify %s -o /dev/null2 3// REQUIRES: aarch64-registered-target4 5#include <arm_neon.h>6 7void test_features(float16x4_t vd4, float16x8_t vd8, float32x4_t va4, float32x2_t va2,8 mfloat8x8_t v8, mfloat8x16_t v16, fpm_t fpm) {9 (void) vdot_f16_mf8_fpm(vd4, v8, v8, fpm);10// expected-error@-1 {{'vdot_f16_mf8_fpm' requires target feature 'fp8dot2'}}11 (void) vdotq_f16_mf8_fpm(vd8, v16, v16, fpm);12// expected-error@-1 {{'vdotq_f16_mf8_fpm' requires target feature 'fp8dot2'}}13 (void) vdot_lane_f16_mf8_fpm(vd4, v8, v8, 3, fpm);14// expected-error@-1 {{'__builtin_neon_vdot_lane_f16_mf8_fpm' needs target feature fp8dot2,neon}}15 (void) vdot_laneq_f16_mf8_fpm(vd4, v8, v16, 7, fpm);16// expected-error@-1 {{'__builtin_neon_vdot_laneq_f16_mf8_fpm' needs target feature fp8dot2,neon}}17 (void) vdotq_lane_f16_mf8_fpm(vd8, v16, v8, 3, fpm);18// expected-error@-1 {{'__builtin_neon_vdotq_lane_f16_mf8_fpm' needs target feature fp8dot2,neon}}19 (void) vdotq_laneq_f16_mf8_fpm(vd8, v16, v16, 7, fpm);20// expected-error@-1 {{'__builtin_neon_vdotq_laneq_f16_mf8_fpm' needs target feature fp8dot2,neon}}21 22 (void) vdot_f32_mf8_fpm(va2, v8, v8, fpm);23// expected-error@-1 {{'vdot_f32_mf8_fpm' requires target feature 'fp8dot4'}}24 (void) vdotq_f32_mf8_fpm(va4, v16, v16, fpm);25// expected-error@-1 {{'vdotq_f32_mf8_fpm' requires target feature 'fp8dot4}}26 (void) vdot_lane_f32_mf8_fpm(va2, v8, v8, 1, fpm);27// expected-error@-1 {{'__builtin_neon_vdot_lane_f32_mf8_fpm' needs target feature fp8dot4,neon}}28 (void) vdot_laneq_f32_mf8_fpm(va2, v8, v16, 3, fpm);29// expected-error@-1 {{'__builtin_neon_vdot_laneq_f32_mf8_fpm' needs target feature fp8dot4,neon}}30 (void) vdotq_lane_f32_mf8_fpm(va4, v16, v8, 1, fpm);31// expected-error@-1 {{'__builtin_neon_vdotq_lane_f32_mf8_fpm' needs target feature fp8dot4,neon}}32 (void) vdotq_laneq_f32_mf8_fpm(va4, v16, v16, 3, fpm);33// expected-error@-1 {{'__builtin_neon_vdotq_laneq_f32_mf8_fpm' needs target feature fp8dot4,neon}}34}35 36void test_imm(float16x4_t vd4, float16x8_t vd8, float32x2_t va2, float32x4_t va4,37 mfloat8x8_t v8, mfloat8x16_t v16, fpm_t fpm) {38 (void) vdot_lane_f16_mf8_fpm(vd4, v8, v8, -1, fpm);39 // expected-error@-1 {{argument value -1 is outside the valid range [0, 3]}}40 (void) vdot_laneq_f16_mf8_fpm(vd4, v8, v16, -1, fpm);41 // expected-error@-1 {{argument value -1 is outside the valid range [0, 7]}}42 (void) vdotq_lane_f16_mf8_fpm(vd8, v16, v8, -1, fpm);43 // expected-error@-1 {{argument value -1 is outside the valid range [0, 3]}}44 (void) vdotq_laneq_f16_mf8_fpm(vd8, v16, v16, -1, fpm);45 // expected-error@-1 {{argument value -1 is outside the valid range [0, 7]}}46 (void) vdot_lane_f32_mf8_fpm(va2, v8, v8, -1, fpm);47 // expected-error@-1 {{argument value -1 is outside the valid range [0, 1]}}48 (void) vdot_laneq_f32_mf8_fpm(va2, v8, v16, -1, fpm);49 // expected-error@-1 {{argument value -1 is outside the valid range [0, 3]}}50 (void) vdotq_lane_f32_mf8_fpm(va4, v16, v8, -1, fpm);51 // expected-error@-1 {{argument value -1 is outside the valid range [0, 1]}}52 (void) vdotq_laneq_f32_mf8_fpm(va4, v16, v16, -1, fpm);53 // expected-error@-1 {{argument value -1 is outside the valid range [0, 3]}}54}55