1 // REQUIRES: aarch64-registered-target
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +sve2 -verify -verify-ignore-unexpected=error,note -emit-llvm -o - %s
4 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +sve2 -verify=overload -verify-ignore-unexpected=error,note -emit-llvm -o - %s
6 #ifdef SVE_OVERLOADED_FORMS
7 // A simple used,unused... macro, long enough to represent any SVE builtin.
8 #define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
10 #define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
15 void test(uint8_t u8
, uint16_t u16
, uint32_t u32
, uint64_t u64
)
17 // expected-error@+2 {{'svaesd_u8' needs target feature sve,sve2,sve-aes}}
18 // overload-error@+1 {{'svaesd' needs target feature sve,sve2,sve-aes}}
19 SVE_ACLE_FUNC(svaesd
,_u8
,,)(svundef_u8(), svundef_u8());
20 // expected-error@+2 {{'svaese_u8' needs target feature sve,sve2,sve-aes}}
21 // overload-error@+1 {{'svaese' needs target feature sve,sve2,sve-aes}}
22 SVE_ACLE_FUNC(svaese
,_u8
,,)(svundef_u8(), svundef_u8());
23 // expected-error@+2 {{'svaesimc_u8' needs target feature sve,sve2,sve-aes}}
24 // overload-error@+1 {{'svaesimc' needs target feature sve,sve2,sve-aes}}
25 SVE_ACLE_FUNC(svaesimc
,_u8
,,)(svundef_u8());
26 // expected-error@+2 {{'svaesmc_u8' needs target feature sve,sve2,sve-aes}}
27 // overload-error@+1 {{'svaesmc' needs target feature sve,sve2,sve-aes}}
28 SVE_ACLE_FUNC(svaesmc
,_u8
,,)(svundef_u8());
29 // expected-error@+2 {{'svbdep_u8' needs target feature sve,sve2-bitperm}}
30 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
31 SVE_ACLE_FUNC(svbdep
,_u8
,,)(svundef_u8(), svundef_u8());
32 // expected-error@+2 {{'svbdep_n_u8' needs target feature sve,sve2-bitperm}}
33 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
34 SVE_ACLE_FUNC(svbdep
,_n_u8
,,)(svundef_u8(), u8
);
35 // expected-error@+2 {{'svbext_u8' needs target feature sve,sve2-bitperm}}
36 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
37 SVE_ACLE_FUNC(svbext
,_u8
,,)(svundef_u8(), svundef_u8());
38 // expected-error@+2 {{'svbext_n_u8' needs target feature sve,sve2-bitperm}}
39 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
40 SVE_ACLE_FUNC(svbext
,_n_u8
,,)(svundef_u8(), u8
);
41 // expected-error@+2 {{'svbgrp_u8' needs target feature sve,sve2-bitperm}}
42 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
43 SVE_ACLE_FUNC(svbgrp
,_u8
,,)(svundef_u8(), svundef_u8());
44 // expected-error@+2 {{'svbgrp_n_u8' needs target feature sve,sve2-bitperm}}
45 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
46 SVE_ACLE_FUNC(svbgrp
,_n_u8
,,)(svundef_u8(), u8
);
48 // expected-error@+2 {{'svbdep_u16' needs target feature sve,sve2-bitperm}}
49 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
50 SVE_ACLE_FUNC(svbdep
,_u16
,,)(svundef_u16(), svundef_u16());
51 // expected-error@+2 {{'svbdep_n_u16' needs target feature sve,sve2-bitperm}}
52 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
53 SVE_ACLE_FUNC(svbdep
,_n_u16
,,)(svundef_u16(), u16
);
54 // expected-error@+2 {{'svbext_u16' needs target feature sve,sve2-bitperm}}
55 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
56 SVE_ACLE_FUNC(svbext
,_u16
,,)(svundef_u16(), svundef_u16());
57 // expected-error@+2 {{'svbext_n_u16' needs target feature sve,sve2-bitperm}}
58 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
59 SVE_ACLE_FUNC(svbext
,_n_u16
,,)(svundef_u16(), u16
);
60 // expected-error@+2 {{'svbgrp_u16' needs target feature sve,sve2-bitperm}}
61 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
62 SVE_ACLE_FUNC(svbgrp
,_u16
,,)(svundef_u16(), svundef_u16());
63 // expected-error@+2 {{'svbgrp_n_u16' needs target feature sve,sve2-bitperm}}
64 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
65 SVE_ACLE_FUNC(svbgrp
,_n_u16
,,)(svundef_u16(), u16
);
67 // expected-error@+2 {{'svbdep_u32' needs target feature sve,sve2-bitperm}}
68 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
69 SVE_ACLE_FUNC(svbdep
,_u32
,,)(svundef_u32(), svundef_u32());
70 // expected-error@+2 {{'svbdep_n_u32' needs target feature sve,sve2-bitperm}}
71 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
72 SVE_ACLE_FUNC(svbdep
,_n_u32
,,)(svundef_u32(), u32
);
73 // expected-error@+2 {{'svbext_u32' needs target feature sve,sve2-bitperm}}
74 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
75 SVE_ACLE_FUNC(svbext
,_u32
,,)(svundef_u32(), svundef_u32());
76 // expected-error@+2 {{'svbext_n_u32' needs target feature sve,sve2-bitperm}}
77 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
78 SVE_ACLE_FUNC(svbext
,_n_u32
,,)(svundef_u32(), u32
);
79 // expected-error@+2 {{'svbgrp_u32' needs target feature sve,sve2-bitperm}}
80 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
81 SVE_ACLE_FUNC(svbgrp
,_u32
,,)(svundef_u32(), svundef_u32());
82 // expected-error@+2 {{'svbgrp_n_u32' needs target feature sve,sve2-bitperm}}
83 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
84 SVE_ACLE_FUNC(svbgrp
,_n_u32
,,)(svundef_u32(), u32
);
85 // expected-error@+2 {{'svsm4e_u32' needs target feature sve,sve2-sm4}}
86 // overload-error@+1 {{'svsm4e' needs target feature sve,sve2-sm4}}
87 SVE_ACLE_FUNC(svsm4e
,_u32
,,)(svundef_u32(), svundef_u32());
88 // expected-error@+2 {{'svsm4ekey_u32' needs target feature sve,sve2-sm4}}
89 // overload-error@+1 {{'svsm4ekey' needs target feature sve,sve2-sm4}}
90 SVE_ACLE_FUNC(svsm4ekey
,_u32
,,)(svundef_u32(), svundef_u32());
92 // expected-error@+2 {{'svbdep_u64' needs target feature sve,sve2-bitperm}}
93 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
94 SVE_ACLE_FUNC(svbdep
,_u64
,,)(svundef_u64(), svundef_u64());
95 // expected-error@+2 {{'svbdep_n_u64' needs target feature sve,sve2-bitperm}}
96 // overload-error@+1 {{'svbdep' needs target feature sve,sve2-bitperm}}
97 SVE_ACLE_FUNC(svbdep
,_n_u64
,,)(svundef_u64(), u64
);
98 // expected-error@+2 {{'svbext_u64' needs target feature sve,sve2-bitperm}}
99 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
100 SVE_ACLE_FUNC(svbext
,_u64
,,)(svundef_u64(), svundef_u64());
101 // expected-error@+2 {{'svbext_n_u64' needs target feature sve,sve2-bitperm}}
102 // overload-error@+1 {{'svbext' needs target feature sve,sve2-bitperm}}
103 SVE_ACLE_FUNC(svbext
,_n_u64
,,)(svundef_u64(), u64
);
104 // expected-error@+2 {{'svbgrp_u64' needs target feature sve,sve2-bitperm}}
105 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
106 SVE_ACLE_FUNC(svbgrp
,_u64
,,)(svundef_u64(), svundef_u64());
107 // expected-error@+2 {{'svbgrp_n_u64' needs target feature sve,sve2-bitperm}}
108 // overload-error@+1 {{'svbgrp' needs target feature sve,sve2-bitperm}}
109 SVE_ACLE_FUNC(svbgrp
,_n_u64
,,)(svundef_u64(), u64
);
110 // expected-error@+2 {{'svpmullb_pair_u64' needs target feature sve,sve2,sve-aes}}
111 // overload-error@+1 {{'svpmullb_pair' needs target feature sve,sve2,sve-aes}}
112 SVE_ACLE_FUNC(svpmullb_pair
,_u64
,,)(svundef_u64(), svundef_u64());
113 // expected-error@+2 {{'svpmullb_pair_n_u64' needs target feature sve,sve2,sve-aes}}
114 // overload-error@+1 {{'svpmullb_pair' needs target feature sve,sve2,sve-aes}}
115 SVE_ACLE_FUNC(svpmullb_pair
,_n_u64
,,)(svundef_u64(), u64
);
116 // expected-error@+2 {{'svpmullt_pair_u64' needs target feature sve,sve2,sve-aes}}
117 // overload-error@+1 {{'svpmullt_pair' needs target feature sve,sve2,sve-aes}}
118 SVE_ACLE_FUNC(svpmullt_pair
,_u64
,,)(svundef_u64(), svundef_u64());
119 // expected-error@+2 {{'svpmullt_pair_n_u64' needs target feature sve,sve2,sve-aes}}
120 // overload-error@+1 {{'svpmullt_pair' needs target feature sve,sve2,sve-aes}}
121 SVE_ACLE_FUNC(svpmullt_pair
,_n_u64
,,)(svundef_u64(), u64
);
122 // expected-error@+2 {{'svrax1_u64' needs target feature sve,sve2-sha3}}
123 // overload-error@+1 {{'svrax1' needs target feature sve,sve2-sha3}}
124 SVE_ACLE_FUNC(svrax1
,_u64
,,)(svundef_u64(), svundef_u64());
126 // expected-error@+2 {{'svrax1_s64' needs target feature sve,sve2-sha3}}
127 // overload-error@+1 {{'svrax1' needs target feature sve,sve2-sha3}}
128 SVE_ACLE_FUNC(svrax1
,_s64
,,)(svundef_s64(), svundef_s64());