summaryrefslogtreecommitdiffstats
path: root/tests/language-feature/overload-resolution.slang
blob: c952694773eeeae7f6daa584720d23fda2c66fdc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage compute -entry main
RWStructuredBuffer<float> result;

[ForceInline]
float myF(inout int a, int b)
{
    return a + b;
}

[ForceInline]
float myF(inout uint a, uint b)
{
    return a - b;
}

[ForceInline]
T myGenF<T : __BuiltinIntegerType>(inout T a, T b)
{
    if (__isSignedInt<T>())
    {
        return a + b;
    }
    else
    {
        return a - b;
    }
}
// CHECK: result{{.*}}[int(0)] = 1
// CHECK: result{{.*}}[int(1)] = 4
// CHECK: result{{.*}}[int(2)] = 1
// CHECK: result{{.*}}[int(3)] = 4
[numthreads(1,1,1)]
void main()
{
    int ic = 1;
    uint a = 2;
    result[0] = myF(a, ic);

    int b = 3;
    uint uc = 1;
    result[1] = myF(b, uc);

    result[2] = myGenF(a, ic);
    result[3] = myGenF(b, uc);
}