| // RUN: %clang_cc1 -std=c23 -triple=x86_64-pc-linux-gnu -fsyntax-only -verify -Wpedantic %s | 
 |  | 
 | typedef int int2 __attribute__((ext_vector_type(2))); | 
 |  | 
 | void test_builtin_popcountg(short s, int i, __int128 i128, _BitInt(128) bi128, | 
 |                             double d, int2 i2) { | 
 |   __builtin_popcountg(); | 
 |   // expected-error@-1 {{too few arguments to function call, expected 1, have 0}} | 
 |   __builtin_popcountg(i, i); | 
 |   // expected-error@-1 {{too many arguments to function call, expected 1, have 2}} | 
 |   __builtin_popcountg(s); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'short')}} | 
 |   __builtin_popcountg(i); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int')}} | 
 |   __builtin_popcountg(i128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '__int128')}} | 
 |   __builtin_popcountg(bi128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '_BitInt(128)')}} | 
 |   __builtin_popcountg(d); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'double')}} | 
 |   __builtin_popcountg(i2); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int2' (vector of 2 'int' values))}} | 
 | } | 
 |  | 
 | void test_builtin_clzg(short s, int i, unsigned int ui, __int128 i128, | 
 |                        _BitInt(128) bi128, double d, int2 i2) { | 
 |   __builtin_clzg(); | 
 |   // expected-error@-1 {{too few arguments to function call, expected 1, have 0}} | 
 |   __builtin_clzg(i, i, i); | 
 |   // expected-error@-1 {{too many arguments to function call, expected at most 2, have 3}} | 
 |   __builtin_clzg(s); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'short')}} | 
 |   __builtin_clzg(i); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int')}} | 
 |   __builtin_clzg(i128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '__int128')}} | 
 |   __builtin_clzg(bi128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '_BitInt(128)')}} | 
 |   __builtin_clzg(d); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'double')}} | 
 |   __builtin_clzg(i2); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int2' (vector of 2 'int' values))}} | 
 |   __builtin_clzg(i2); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int2' (vector of 2 'int' values))}} | 
 |   __builtin_clzg(ui, ui); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'unsigned int')}} | 
 |   __builtin_clzg(ui, i128); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was '__int128')}} | 
 |   __builtin_clzg(ui, bi128); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was '_BitInt(128)')}} | 
 |   __builtin_clzg(ui, d); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'double')}} | 
 |   __builtin_clzg(ui, i2); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'int2' (vector of 2 'int' values))}} | 
 | } | 
 |  | 
 | void test_builtin_ctzg(short s, int i, unsigned int ui, __int128 i128, | 
 |                        _BitInt(128) bi128, double d, int2 i2) { | 
 |   __builtin_ctzg(); | 
 |   // expected-error@-1 {{too few arguments to function call, expected 1, have 0}} | 
 |   __builtin_ctzg(i, i, i); | 
 |   // expected-error@-1 {{too many arguments to function call, expected at most 2, have 3}} | 
 |   __builtin_ctzg(s); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'short')}} | 
 |   __builtin_ctzg(i); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int')}} | 
 |   __builtin_ctzg(i128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '__int128')}} | 
 |   __builtin_ctzg(bi128); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was '_BitInt(128)')}} | 
 |   __builtin_ctzg(d); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'double')}} | 
 |   __builtin_ctzg(i2); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int2' (vector of 2 'int' values))}} | 
 |   __builtin_ctzg(i2); | 
 |   // expected-error@-1 {{1st argument must be an unsigned integer (was 'int2' (vector of 2 'int' values))}} | 
 |   __builtin_ctzg(ui, ui); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'unsigned int')}} | 
 |   __builtin_ctzg(ui, i128); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was '__int128')}} | 
 |   __builtin_ctzg(ui, bi128); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was '_BitInt(128)')}} | 
 |   __builtin_ctzg(ui, d); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'double')}} | 
 |   __builtin_ctzg(ui, i2); | 
 |   // expected-error@-1 {{2nd argument must be an 'int' (was 'int2' (vector of 2 'int' values))}} | 
 | } |