1617a3babSopenharmony_cistruct s1_t {
2617a3babSopenharmony_ci    float  c0;
3617a3babSopenharmony_ci    float2 c1;
4617a3babSopenharmony_ci    float  c2;
5617a3babSopenharmony_ci};
6617a3babSopenharmony_ci
7617a3babSopenharmony_cistruct s2_t {
8617a3babSopenharmony_ci    float  c0;
9617a3babSopenharmony_ci    float3 c1;
10617a3babSopenharmony_ci};
11617a3babSopenharmony_ci
12617a3babSopenharmony_cistruct s3_t {
13617a3babSopenharmony_ci    float2  c0;
14617a3babSopenharmony_ci    float1  c1;
15617a3babSopenharmony_ci};
16617a3babSopenharmony_ci
17617a3babSopenharmony_cistruct s4_t {
18617a3babSopenharmony_ci    int  c0;
19617a3babSopenharmony_ci    int2 c1;
20617a3babSopenharmony_ci    int  c2;
21617a3babSopenharmony_ci};
22617a3babSopenharmony_ci
23617a3babSopenharmony_cistruct s5_t {
24617a3babSopenharmony_ci    uint c0;
25617a3babSopenharmony_ci    uint c1;
26617a3babSopenharmony_ci};
27617a3babSopenharmony_ci
28617a3babSopenharmony_ciSamplerState g_sSamp;
29617a3babSopenharmony_ciTexture2D <s1_t>   g_tTex2s1;
30617a3babSopenharmony_ciTexture2D <s2_t>   g_tTex2s2;
31617a3babSopenharmony_ciTexture2D <s3_t>   g_tTex2s3;
32617a3babSopenharmony_ciTexture2D <s4_t>   g_tTex2s4;
33617a3babSopenharmony_ciTexture2D <s5_t>   g_tTex2s5;
34617a3babSopenharmony_ci
35617a3babSopenharmony_ciTexture2D <s1_t>   g_tTex2s1a; // same type as g_tTex2s1, to test fn signature matching.
36617a3babSopenharmony_ci
37617a3babSopenharmony_ci// function overloading to test name mangling with textures templatized on structs
38617a3babSopenharmony_cis1_t fn1(Texture2D <s1_t> t1) { return t1 . Sample(g_sSamp, float2(0.6, 0.61)); }
39617a3babSopenharmony_cis2_t fn1(Texture2D <s2_t> t2) { return t2 . Sample(g_sSamp, float2(0.6, 0.61)); }
40617a3babSopenharmony_ci
41617a3babSopenharmony_cifloat4 main() : SV_Target0
42617a3babSopenharmony_ci{
43617a3babSopenharmony_ci    s1_t s1 = g_tTex2s1 . Sample(g_sSamp, float2(0.1, 0.11));
44617a3babSopenharmony_ci    s2_t s2 = g_tTex2s2 . Sample(g_sSamp, float2(0.2, 0.21));
45617a3babSopenharmony_ci    s3_t s3 = g_tTex2s3 . Sample(g_sSamp, float2(0.3, 0.31));
46617a3babSopenharmony_ci    s4_t s4 = g_tTex2s4 . Sample(g_sSamp, float2(0.4, 0.41));
47617a3babSopenharmony_ci    s5_t s5 = g_tTex2s5 . Sample(g_sSamp, float2(0.5, 0.51));
48617a3babSopenharmony_ci
49617a3babSopenharmony_ci    s1_t r0 = fn1(g_tTex2s1);
50617a3babSopenharmony_ci    s2_t r1 = fn1(g_tTex2s2);
51617a3babSopenharmony_ci    s1_t r2 = fn1(g_tTex2s1a);
52617a3babSopenharmony_ci
53617a3babSopenharmony_ci    return 0;
54617a3babSopenharmony_ci}
55617a3babSopenharmony_ci
56