1f08c3bdfSopenharmony_civoid funf(float);
2f08c3bdfSopenharmony_civoid fund(double);
3f08c3bdfSopenharmony_civoid funl(long double);
4f08c3bdfSopenharmony_ci
5f08c3bdfSopenharmony_ci#define fung(X) _Generic(X,		\
6f08c3bdfSopenharmony_ci	float:		funf,		\
7f08c3bdfSopenharmony_ci	default:	fund,		\
8f08c3bdfSopenharmony_ci	long double:	funl) (X)
9f08c3bdfSopenharmony_ci
10f08c3bdfSopenharmony_ci#define TEST(name, T)	\
11f08c3bdfSopenharmony_cistatic void test ## name(T a) { return fung(a); }
12f08c3bdfSopenharmony_ci
13f08c3bdfSopenharmony_ciTEST(f, float)
14f08c3bdfSopenharmony_ciTEST(d, double)
15f08c3bdfSopenharmony_ciTEST(l, long double)
16f08c3bdfSopenharmony_ci
17f08c3bdfSopenharmony_ci/*
18f08c3bdfSopenharmony_ci * check-name: generic-functions
19f08c3bdfSopenharmony_ci * check-command: test-linearize $file
20f08c3bdfSopenharmony_ci *
21f08c3bdfSopenharmony_ci * check-output-start
22f08c3bdfSopenharmony_citestf:
23f08c3bdfSopenharmony_ci.L0:
24f08c3bdfSopenharmony_ci	<entry-point>
25f08c3bdfSopenharmony_ci	call        funf, %arg1
26f08c3bdfSopenharmony_ci	ret
27f08c3bdfSopenharmony_ci
28f08c3bdfSopenharmony_ci
29f08c3bdfSopenharmony_citestd:
30f08c3bdfSopenharmony_ci.L2:
31f08c3bdfSopenharmony_ci	<entry-point>
32f08c3bdfSopenharmony_ci	call        fund, %arg1
33f08c3bdfSopenharmony_ci	ret
34f08c3bdfSopenharmony_ci
35f08c3bdfSopenharmony_ci
36f08c3bdfSopenharmony_citestl:
37f08c3bdfSopenharmony_ci.L4:
38f08c3bdfSopenharmony_ci	<entry-point>
39f08c3bdfSopenharmony_ci	call        funl, %arg1
40f08c3bdfSopenharmony_ci	ret
41f08c3bdfSopenharmony_ci
42f08c3bdfSopenharmony_ci
43f08c3bdfSopenharmony_ci * check-output-end
44f08c3bdfSopenharmony_ci */
45