blob: 5d7e178bc2cbba7a71421a5606367c5f25655154 [file] [log] [blame]
// REQUIRES: aarch64-registered-target
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify -verify-ignore-unexpected=error,note %s
// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify=overload -verify-ignore-unexpected=error,note %s
#ifdef SVE_OVERLOADED_FORMS
// A simple used,unused... macro, long enough to represent any SVE builtin.
#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
#else
#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
#endif
#include <arm_sve.h>
void test_u8(uint8_t u8)
{
// expected-error@+2 {{use of undeclared identifier 'svaesd_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svaesd'}}
SVE_ACLE_FUNC(svaesd,_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svaese_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svaese'}}
SVE_ACLE_FUNC(svaese,_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svaesimc_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svaesimc'}}
SVE_ACLE_FUNC(svaesimc,_u8,,)(svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svaesmc_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svaesmc'}}
SVE_ACLE_FUNC(svaesmc,_u8,,)(svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svbdep_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svbdep_n_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_n_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svbext_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svbext_n_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_n_u8,,)(svundef_u8(), u8);
// expected-error@+2 {{use of undeclared identifier 'svbgrp_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_u8,,)(svundef_u8(), svundef_u8());
// expected-error@+2 {{use of undeclared identifier 'svbgrp_n_u8'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_n_u8,,)(svundef_u8(), u8);
}
void test_u16(uint16_t u16)
{
// expected-error@+2 {{use of undeclared identifier 'svbdep_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_u16,,)(svundef_u16(), svundef_u16());
// expected-error@+2 {{use of undeclared identifier 'svbdep_n_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_n_u16,,)(svundef_u16(), u16);
// expected-error@+2 {{use of undeclared identifier 'svbext_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_u16,,)(svundef_u16(), svundef_u16());
// expected-error@+2 {{use of undeclared identifier 'svbext_n_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_n_u16,,)(svundef_u16(), u16);
// expected-error@+2 {{use of undeclared identifier 'svbgrp_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_u16,,)(svundef_u16(), svundef_u16());
// expected-error@+2 {{use of undeclared identifier 'svbgrp_n_u16'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_n_u16,,)(svundef_u16(), u16);
}
void test_u32(uint32_t u32)
{
// expected-error@+2 {{use of undeclared identifier 'svbdep_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_u32,,)(svundef_u32(), svundef_u32());
// expected-error@+2 {{use of undeclared identifier 'svbdep_n_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_n_u32,,)(svundef_u32(), u32);
// expected-error@+2 {{use of undeclared identifier 'svbext_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_u32,,)(svundef_u32(), svundef_u32());
// expected-error@+2 {{use of undeclared identifier 'svbext_n_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_n_u32,,)(svundef_u32(), u32);
// expected-error@+2 {{use of undeclared identifier 'svbgrp_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_u32,,)(svundef_u32(), svundef_u32());
// expected-error@+2 {{use of undeclared identifier 'svbgrp_n_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_n_u32,,)(svundef_u32(), u32);
// expected-error@+2 {{use of undeclared identifier 'svsm4e_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svsm4e'}}
SVE_ACLE_FUNC(svsm4e,_u32,,)(svundef_u32(), svundef_u32());
// expected-error@+2 {{use of undeclared identifier 'svsm4ekey_u32'}}
// overload-error@+1 {{use of undeclared identifier 'svsm4ekey'}}
SVE_ACLE_FUNC(svsm4ekey,_u32,,)(svundef_u32(), svundef_u32());
}
void test_u64(uint64_t u64)
{
// expected-error@+2 {{use of undeclared identifier 'svbdep_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_u64,,)(svundef_u64(), svundef_u64());
// expected-error@+2 {{use of undeclared identifier 'svbdep_n_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbdep'}}
SVE_ACLE_FUNC(svbdep,_n_u64,,)(svundef_u64(), u64);
// expected-error@+2 {{use of undeclared identifier 'svbext_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_u64,,)(svundef_u64(), svundef_u64());
// expected-error@+2 {{use of undeclared identifier 'svbext_n_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbext'}}
SVE_ACLE_FUNC(svbext,_n_u64,,)(svundef_u64(), u64);
// expected-error@+2 {{use of undeclared identifier 'svbgrp_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_u64,,)(svundef_u64(), svundef_u64());
// expected-error@+2 {{use of undeclared identifier 'svbgrp_n_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svbgrp'}}
SVE_ACLE_FUNC(svbgrp,_n_u64,,)(svundef_u64(), u64);
// expected-error@+2 {{use of undeclared identifier 'svpmullb_pair_u64'}}
// overload-error@+1 {{no matching function for call to 'svpmullb_pair'}}
SVE_ACLE_FUNC(svpmullb_pair,_u64,,)(svundef_u64(), svundef_u64());
// expected-error@+2 {{use of undeclared identifier 'svpmullb_pair_n_u64'}}
// overload-error@+1 {{no matching function for call to 'svpmullb_pair'}}
SVE_ACLE_FUNC(svpmullb_pair,_n_u64,,)(svundef_u64(), u64);
// expected-error@+2 {{use of undeclared identifier 'svpmullt_pair_u64'}}
// overload-error@+1 {{no matching function for call to 'svpmullt_pair'}}
SVE_ACLE_FUNC(svpmullt_pair,_u64,,)(svundef_u64(), svundef_u64());
// expected-error@+2 {{use of undeclared identifier 'svpmullt_pair_n_u64'}}
// overload-error@+1 {{no matching function for call to 'svpmullt_pair'}}
SVE_ACLE_FUNC(svpmullt_pair,_n_u64,,)(svundef_u64(), u64);
// expected-error@+2 {{use of undeclared identifier 'svrax1_u64'}}
// overload-error@+1 {{use of undeclared identifier 'svrax1'}}
SVE_ACLE_FUNC(svrax1,_u64,,)(svundef_u64(), svundef_u64());
}
void test_s64()
{
// expected-error@+2 {{use of undeclared identifier 'svrax1_s64'}}
// overload-error@+1 {{use of undeclared identifier 'svrax1'}}
SVE_ACLE_FUNC(svrax1,_s64,,)(svundef_s64(), svundef_s64());
}