summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/hlsl.intrinsics.negative.frag
blob: b93f104d3db64282dc4aa0b570baf8a217ba02ac (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
{
    // AllMemoryBarrier();              // TODO: expected error: invalid in fragment stage
    // AllMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
    asdouble(inF0, inF1);                     // expected error: only integer inputs
    CheckAccessFullyMapped(3.0);              // expected error: only valid on integers
    countbits(inF0);                          // expected error: only integer inputs
    cross(inF0, inF1);                        // expected error: only on float3 inputs
    D3DCOLORtoUBYTE4(inF0);                   // expected error: only on float4 inputs
    determinant(inF0);                        // expected error: only valid on mats
    // DeviceMemoryBarrierWithGroupSync();      // TODO: expected error: only valid in compute stage
    f16tof32(inF0);                           // expected error: only integer inputs
    firstbithigh(inF0);                       // expected error: only integer inputs
    firstbitlow(inF0);                        // expected error: only integer inputs
    fma(inF0, inF1, inF2);                    // expected error: only double inputs
    // InterlockedAdd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
    // InterlockedAnd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out i    // InterlockedMax(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
    // InterlockedMin(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
    // InterlockedOor(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
    // InterlockedXor(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
    // GroupMemoryBarrier();               // TODO: expected error: invalid in fragment stage
    // GroupMemoryBarrierWithGroupSync();  // TODO: expected error: invalid in fragment stage
    length(inF0);                             // expected error: invalid on scalars
    msad4(inF0, float2(0), float4(0));        // expected error: only integer inputs
    normalize(inF0);                          // expected error: invalid on scalars
    reflect(inF0, inF1);                      // expected error: invalid on scalars
    refract(inF0, inF1, inF2);                // expected error: invalid on scalars
    refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
    reversebits(inF0);                        // expected error: only integer inputs
    transpose(inF0);                          // expected error: only valid on mats

    return 0.0;
}

float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
    // TODO: ... add when float1 prototypes are generated

    GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs

    return 0.0;
}

float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
    asdouble(inF0, inF1);         // expected error: only integer inputs
    CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
    countbits(inF0);              // expected error: only integer inputs
    cross(inF0, inF1);            // expected error: only on float3 inputs
    D3DCOLORtoUBYTE4(inF0);       // expected error: only on float4 inputs
    determinant(inF0);            // expected error: only valid on mats
    f16tof32(inF0);               // expected error: only integer inputs
    firstbithigh(inF0);           // expected error: only integer inputs
    firstbitlow(inF0);            // expected error: only integer inputs
    fma(inF0, inF1, inF2);        // expected error: only double inputs
    reversebits(inF0);            // expected error: only integer inputs
    transpose(inF0);              // expected error: only valid on mats

    return float2(1,2);
}

float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
    CheckAccessFullyMapped(inF0);  // expected error: only valid on scalars
    countbits(inF0);            // expected error: only integer inputs
    D3DCOLORtoUBYTE4(inF0);     // expected error: only on float4 inputs
    determinant(inF0);          // expected error: only valid on mats
    f16tof32(inF0);             // expected error: only integer inputs
    firstbithigh(inF0);         // expected error: only integer inputs
    firstbitlow(inF0);          // expected error: only integer inputs
    fma(inF0, inF1, inF2);      // expected error: only double inputs
    reversebits(inF0);          // expected error: only integer inputs
    transpose(inF0);            // expected error: only valid on mats


    return float3(1,2,3);
}

float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
{
    CheckAccessFullyMapped(inF0);  // expected error: only valid on scalars
    countbits(inF0);            // expected error: only integer inputs
    cross(inF0, inF1);          // expected error: only on float3 inputs
    determinant(inF0);          // expected error: only valid on mats
    f16tof32(inF0);             // expected error: only integer inputs
    firstbithigh(inF0);         // expected error: only integer inputs
    firstbitlow(inF0);          // expected error: only integer inputs
    fma(inF0, inF1, inF2);      // expected error: only double inputs
    reversebits(inF0);          // expected error: only integer inputs
    transpose(inF0);            // expected error: only valid on mats

    return float4(1,2,3,4);
}

// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
    countbits(inF0);          \
    D3DCOLORtoUBYTE4(inF0);   \
    cross(inF0, inF1);        \
    f16tof32(inF0);           \
    firstbithigh(inF0);       \
    firstbitlow(inF0);        \
    fma(inF0, inF1, inF2);    \
    reversebits(inF0);        \
    length(inF0);             \
    noise(inF0);              \
    normalize(inF0);          \
    reflect(inF0, inF1);      \
    refract(inF0, inF1, 1.0); \
    reversebits(inF0);        \
    

// TODO: turn on non-square matrix tests when protos are available.

float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
    // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
    MATFNS()

    return float2x2(2,2,2,2);
}

float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
    // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
    MATFNS()

    return float3x3(3,3,3,3,3,3,3,3,3);
}

float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
    // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
    MATFNS()

    return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}