<?xml version="1.0" ?>
<Data>
    <Table Id="UnaryFloatOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Name="Warp.Version">unsigned int</ParameterType>
        </ParameterTypes>
        <Row Name="Htan">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = tanh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-1</Value>
                <Value>-0.0</Value>
                <Value>-0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>1</Value>
                <Value>0.761594</Value>
                <Value>-0.761594</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
        </Row>
        <Row Name="Atan">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = atan(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-1.570796</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>1.570796</Value>
                <Value>0.785398163</Value>
                <Value>-0.785398163</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
        </Row>
        <Row Name="Tan">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = tan(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-314.16</Value>
                <Value>314.16</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0.0</Value>
                <Value>-0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>NaN</Value>
                <Value>-0.000735</Value>
                <Value>0.000735</Value>
            </Parameter>
        </Row>
        <Row Name="Round_ni">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = floor(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>-10.0</Value>
                <Value>-11.0</Value>
                <Value>-11.0</Value>
                <Value>-11.0</Value>
            </Parameter>
        </Row>
        <Row Name="Round_ne">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = round(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>11.5</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>11.0</Value>
                <Value>12.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-11.0</Value>
            </Parameter>
        </Row>
        <Row Name="Round_z">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = trunc(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
            </Parameter>
        </Row>
        <Row Name="IsInf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isinf(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="Exp">
            <Parameter Name="Validation.Type">Relative</Parameter>
            <Parameter Name="Validation.Tolerance">21</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = exp(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>Inf</Value>
                <Value>0.367879441</Value>
                <Value>22026.46579</Value>
            </Parameter>
        </Row>
        <Row Name="Frc">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = frac(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>2.718280</Value>
                <Value>1000.599976</Value>
                <Value>-7.389</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>0.718280</Value>
                <Value>0.599976</Value>
                <Value>0.611</Value>
            </Parameter>
        </Row>
        <Row Name="Asin">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = asin(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>1.5</Value>
                <Value>-1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>NaN</Value>
                <Value>1.570796</Value>
                <Value>-1.570796</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
            </Parameter>
        </Row>
        <Row Name="Log">
            <Parameter Name="Validation.Type">Relative</Parameter>
            <Parameter Name="Validation.Tolerance">21</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = log(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>2.718281828</Value>
                <Value>7.389056</Value>
                <Value>100</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-Inf</Value>
                <Value>-Inf</Value>
                <Value>-Inf</Value>
                <Value>Inf</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>1.99999998</Value>
                <Value>4.6051701</Value>
            </Parameter>
        </Row>
        <Row Name="Sqrt">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sqrt(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>2</Value>
                <Value>16.0</Value>
                <Value>256.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>NaN</Value>
                <Value>1.41421356237</Value>
                <Value>4.0</Value>
                <Value>16.0</Value>
            </Parameter>
        </Row>
        <Row Name="Hcos">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = cosh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>Inf</Value>
                <Value>1.543081</Value>
                <Value>1.543081</Value>
            </Parameter>
        </Row>
        <Row Name="Acos">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = acos(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>1.5</Value>
                <Value>-1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>3.1415926</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
            </Parameter>
        </Row>
        <Row Name="Round_pi">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = ceil(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>11.0</Value>
                <Value>11.0</Value>
                <Value>11.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
            </Parameter>
        </Row>
        <Row Name="IsFinite">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isfinite(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
        </Row>
        <Row Name="IsNaN">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isnan(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="Hsin">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sinh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>Inf</Value>
                <Value>1.175201</Value>
                <Value>-1.175201</Value>
            </Parameter>
        </Row>
        <Row Name="Sin">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sin(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-314.16</Value>
                <Value>314.16</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>-0.0007346401</Value>
                <Value>0.0007346401</Value>
            </Parameter>
        </Row>
        <Row Name="Rsqrt">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = rsqrt(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>16.0</Value>
                <Value>256.0</Value>
                <Value>65536.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-Inf</Value>
                <Value>Inf</Value>
                <Value>Inf</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0.25</Value>
                <Value>0.0625</Value>
                <Value>0.00390625</Value>
            </Parameter>
        </Row>
        <Row Name="Cos">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = cos(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>-314.16</Value>
                <Value>314.16</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>0.99999973015</Value>
                <Value>0.99999973015</Value>
            </Parameter>
        </Row>
        <Row Name="FAbs">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float input;
                float output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = abs(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>Inf</Value>
                <Value>denorm</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>1</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="BinaryFloatOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="FMul">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>1.0000001</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>2.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-4.0</Value>
                <Value>6.875</Value>
                <Value>2.0000002</Value>
            </Parameter>
        </Row>
        <Row Name="FAdd">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>1.0</Value>
                <Value>32.5</Value>
                <Value>1.0000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>5.5</Value>
                <Value>334.7</Value>
                <Value>0.5000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>3.0</Value>
                <Value>6.5</Value>
                <Value>367.2</Value>
                <Value>1.5000002000</Value>
            </Parameter>
        </Row>
        <Row Name="FDiv">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>1.0000001</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>2.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-0.25</Value>
                <Value>4.4</Value>
                <Value>0.50000006</Value>
            </Parameter>
        </Row>
        <Row Name="FMin">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = min(l.input1, l.input2);
                l.output2 = max(l.input1, l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
                <Value>1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>1.0</Value>
            </Parameter>
        </Row>
        <Row Name="FSub">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>32.5</Value>
                <Value>1.0000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>334.7</Value>
                <Value>0.5000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-5</Value>
                <Value>4.25</Value>
                <Value>-302.2</Value>
                <Value>0.5000</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryFloatOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="FMad">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryFloatOp {
                float input1;
                float input2;
                float input3;
                float output;
            };
            RWStructuredBuffer&lt;STertiaryFloatOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryFloatOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>-5.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>9.5</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="UnaryHalfOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Name="Warp.Version">unsigned int</ParameterType>
        </ParameterTypes>
        <Row Name="Round_neHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = round(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>11.5</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>11.0</Value>
                <Value>12.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-11.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IsInfHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isinf(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="TanHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.016</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = tan(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>0.6279297</Value>
                <Value>1.255859</Value>
                <Value>1.884766</Value>
                <Value>2.511719</Value>
                <Value>3.140625</Value>
                <Value>3.769531</Value>
                <Value>4.398438</Value>
                <Value>5.652344</Value>
                <Value>6.281250</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0.72594857</Value>
                <Value>3.06955433</Value>
                <Value>-3.07967043</Value>
                <Value>-0.72892153</Value>
                <Value>-0.00096773</Value>
                <Value>0.72596157</Value>
                <Value>3.07986474</Value>
                <Value>-0.7304042</Value>
                <Value>-0.00193546</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="Round_piHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = ceil(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>11.0</Value>
                <Value>11.0</Value>
                <Value>11.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="AtanHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = atan(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-1.570796</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>1.570796</Value>
                <Value>0.785398163</Value>
                <Value>-0.785398163</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IsFiniteHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isfinite(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="AcosHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = acos(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>1.5</Value>
                <Value>-1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>1.570796</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>3.1415926</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IsNaNHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                if (isnan(l.input))
                    l.output = 1;
                else
                    l.output = 0;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="Round_niHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = floor(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-1</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>-10.0</Value>
                <Value>-11.0</Value>
                <Value>-11.0</Value>
                <Value>-11.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="SinHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.003</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sin(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>0.6279297</Value>
                <Value>1.255859</Value>
                <Value>1.884766</Value>
                <Value>2.511719</Value>
                <Value>3.140625</Value>
                <Value>3.769531</Value>
                <Value>4.398438</Value>
                <Value>5.023438</Value>
                <Value>5.652344</Value>
                <Value>6.281250</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0.58747065</Value>
                <Value>0.95081574</Value>
                <Value>0.95111507</Value>
                <Value>0.58904284</Value>
                <Value>0.00096773</Value>
                <Value>-0.58747751</Value>
                <Value>-0.95112079</Value>
                <Value>-0.95201313</Value>
                <Value>-0.58982444</Value>
                <Value>-0.00193545</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="HsinHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sinh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>Inf</Value>
                <Value>1.175201</Value>
                <Value>-1.175201</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="HcosHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">2</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = cosh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>Inf</Value>
                <Value>1.543081</Value>
                <Value>1.543081</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="Round_zHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = trunc(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.4</Value>
                <Value>10.5</Value>
                <Value>10.6</Value>
                <Value>-10.0</Value>
                <Value>-10.4</Value>
                <Value>-10.5</Value>
                <Value>-10.6</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-0</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
                <Value>-10.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FrcHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = frac(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>0x03FF</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>2.719</Value>
                <Value>1000.5</Value>
                <Value>0xC764</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0x03FF</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0</Value>
                <Value>0.719</Value>
                <Value>0.5</Value>
                <Value>0x38E1</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FAbsHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = abs(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>Inf</Value>
                <Value>denorm</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="AsinHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = asin(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>1.5</Value>
                <Value>-1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>NaN</Value>
                <Value>1.570796</Value>
                <Value>-1.570796</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="CosHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.003</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = cos(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>0.6279297</Value>
                <Value>1.255859</Value>
                <Value>1.884766</Value>
                <Value>2.511719</Value>
                <Value>3.140625</Value>
                <Value>3.769531</Value>
                <Value>4.398438</Value>
                <Value>5.023438</Value>
                <Value>5.652344</Value>
                <Value>6.281250</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>0.80924553</Value>
                <Value>0.30975693</Value>
                <Value>-0.30883664</Value>
                <Value>-0.80810183</Value>
                <Value>-0.99999952</Value>
                <Value>-0.80924052</Value>
                <Value>-0.30881903</Value>
                <Value>0.30605716</Value>
                <Value>0.80753154</Value>
                <Value>0.99999809</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="HtanHalf">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.0008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = tanh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>denorm</Value>
                <Value>Inf</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>-1</Value>
                <Value>-0.0</Value>
                <Value>-0.0</Value>
                <Value>0.0</Value>
                <Value>0.0</Value>
                <Value>1</Value>
                <Value>0.761594</Value>
                <Value>-0.761594</Value>
            </Parameter>
            <Parameter Name="Warp.Version">16202</Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="RsqrtHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = rsqrt(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0x03FF</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>16.0</Value>
                <Value>256.0</Value>
                <Value>0x7bff</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>Inf</Value>
                <Value>0x5801</Value>
                <Value>0</Value>
                <Value>NaN</Value>
                <Value>0.25</Value>
                <Value>0.0625</Value>
                <Value>0x1C00</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="SqrtHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryFPOp {
                float16_t input;
                float16_t output;
            };
            RWStructuredBuffer&lt;SUnaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryFPOp l = g_buf[GI];
                l.output = sqrt(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>-denorm</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0x03FF</Value>
                <Value>Inf</Value>
                <Value>-1</Value>
                <Value>2</Value>
                <Value>16.0</Value>
                <Value>256.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>0x1FFF</Value>
                <Value>Inf</Value>
                <Value>NaN</Value>
                <Value>1.41421</Value>
                <Value>4.0</Value>
                <Value>16.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="BinaryHalfOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="FDivHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                half input1;
                half input2;
                half output1;
                half output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>1.0000001</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>2.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-0.25</Value>
                <Value>4.4</Value>
                <Value>0.50000006</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FMinHalf">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryHalfOp {
                half input1;
                half input2;
                half output1;
                half output2;
            };
            RWStructuredBuffer&lt;SBinaryHalfOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryHalfOp l = g_buf[GI];
                l.output1 = min(l.input1, l.input2);
                l.output2 = max(l.input1, l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
                <Value>1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>-inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
                <Value>-1.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>inf</Value>
                <Value>-inf</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>NaN</Value>
                <Value>1.0</Value>
                <Value>inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>1.0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FMulHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                half input1;
                half input2;
                half output1;
                half output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>1.0000001</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>2.0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-4.0</Value>
                <Value>6.875</Value>
                <Value>2.0000002</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FAddHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                half input1;
                half input2;
                half output1;
                half output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>1.0</Value>
                <Value>32.5</Value>
                <Value>1.0000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>5.5</Value>
                <Value>334.7</Value>
                <Value>0.5000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>3.0</Value>
                <Value>6.5</Value>
                <Value>367.2</Value>
                <Value>1.5000002000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FSubHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                half input1;
                half input2;
                half output1;
                half output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-1.0</Value>
                <Value>5.5</Value>
                <Value>32.5</Value>
                <Value>1.0000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>4</Value>
                <Value>1.25</Value>
                <Value>334.7</Value>
                <Value>0.5000001000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-5</Value>
                <Value>4.25</Value>
                <Value>-302.2</Value>
                <Value>0.5000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryHalfOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="FMadHalf">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryHalfOp {
                half input1;
                half input2;
                half input3;
                half output;
            };
            RWStructuredBuffer&lt;STertiaryHalfOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryHalfOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>0x03FF</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1.5</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>1</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>NaN</Value>
                <Value>-Inf</Value>
                <Value>0x03FF</Value>
                <Value>-0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>1.0</Value>
                <Value>-1.0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>-5.5</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>NaN</Value>
                <Value>NaN</Value>
                <Value>0x07FE</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>Inf</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>9.5</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="UnaryIntOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="FirstbitLo">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryIntOp {
                int input;
                int output;
            };
            RWStructuredBuffer&lt;SUnaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryIntOp l = g_buf[GI];
                l.output = firstbitlow(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-65536</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65536</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>31</Value>
                <Value>16</Value>
                <Value>3</Value>
                <Value>0</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>16</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="FirstbitSHi">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryIntOp {
                int input;
                int output;
            };
            RWStructuredBuffer&lt;SUnaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryIntOp l = g_buf[GI];
                l.output = firstbithigh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-65536</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65536</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>30</Value>
                <Value>15</Value>
                <Value>2</Value>
                <Value>-1</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>16</Value>
                <Value>30</Value>
            </Parameter>
        </Row>
        <Row Name="Countbits">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryIntOp {
                int input;
                int output;
            };
            RWStructuredBuffer&lt;SUnaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryIntOp l = g_buf[GI];
                l.output = countbits(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-65536</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65536</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>16</Value>
                <Value>29</Value>
                <Value>32</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>31</Value>
            </Parameter>
        </Row>
        <Row Name="Bfrev">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryIntOp {
                int input;
                int output;
            };
            RWStructuredBuffer&lt;SUnaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryIntOp l = g_buf[GI];
                l.output = reversebits(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-65536</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65536</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>65535</Value>
                <Value>536870911</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>-2147483648</Value>
                <Value>268435456</Value>
                <Value>32768</Value>
                <Value>-2</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="BinaryIntOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="IMul">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>-10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>100</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>256</Value>
                <Value>40</Value>
                <Value>100010000</Value>
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
        </Row>
        <Row Name="Shl">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 &lt;&lt; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>0x1010</Value>
                <Value>0xa</Value>
                <Value>-1</Value>
                <Value>0x12341234</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>259</Value>
                <Value>4</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>15</Value>
                <Value>3</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0x8</Value>
                <Value>0x10100</Value>
                <Value>0x28</Value>
                <Value>-1</Value>
                <Value>0x091a0000</Value>
                <Value>-8</Value>
            </Parameter>
        </Row>
        <Row Name="Or">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 | l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff0000</Value>
                <Value>0x11111111</Value>
                <Value>0x137f</Value>
                <Value>0x0</Value>
                <Value>0x12345678</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000ffff</Value>
                <Value>0x22222222</Value>
                <Value>0xec80</Value>
                <Value>0x0</Value>
                <Value>0x00000000</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0xf1</Value>
                <Value>0x7fffffff</Value>
                <Value>0x33333333</Value>
                <Value>0xffff</Value>
                <Value>0x0</Value>
                <Value>0x12345678</Value>
                <Value>0xb771</Value>
                <Value>-1</Value>
            </Parameter>
        </Row>
        <Row Name="LShr">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 &gt;&gt; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>0xffff</Value>
                <Value>0x7fffffff</Value>
                <Value>0x70001234</Value>
                <Value>0x12340ab3</Value>
                <Value>0x7fffffff</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>1</Value>
                <Value>4</Value>
                <Value>30</Value>
                <Value>15</Value>
                <Value>16</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>0xfff</Value>
                <Value>1</Value>
                <Value>0xe000</Value>
                <Value>0x1234</Value>
                <Value>0x3fffffff</Value>
            </Parameter>
        </Row>
        <Row Name="ISub">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
                <Value>486</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>54238</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-2147483648</Value>
                <Value>-20</Value>
                <Value>10</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>2147483647</Value>
                <Value>-53752</Value>
            </Parameter>
        </Row>
        <Row Name="IDiv">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                l.output2 = l.input1 % l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
                <Value>2147483647</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>2</Value>
                <Value>2147483647</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>1073741823</Value>
                <Value>1</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>10000</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="IAdd">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
                <Value>486</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>54238</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-2147483648</Value>
                <Value>0</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>20</Value>
                <Value>2147483647</Value>
                <Value>54724</Value>
            </Parameter>
        </Row>
        <Row Name="And">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 &amp; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff0000</Value>
                <Value>0x33333333</Value>
                <Value>0x137f</Value>
                <Value>0x12345678</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000ffff</Value>
                <Value>0x22222222</Value>
                <Value>0xec80</Value>
                <Value>-1</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0x00</Value>
                <Value>0x0</Value>
                <Value>0x22222222</Value>
                <Value>0x0</Value>
                <Value>0x12345678</Value>
                <Value>0x2041</Value>
                <Value>-1</Value>
            </Parameter>
        </Row>
        <Row Name="IMin">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = min(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="IMax">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = max(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483648</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
            </Parameter>
        </Row>
        <Row Name="Xor">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryIntOp {
                int input1;
                int input2;
                int output1;
                int output2;
            };
            RWStructuredBuffer&lt;SBinaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryIntOp l = g_buf[GI];
                l.output1 = l.input1 ^ l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff0000</Value>
                <Value>0x11111111</Value>
                <Value>0x137f</Value>
                <Value>0x0</Value>
                <Value>0x12345678</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000ffff</Value>
                <Value>0x22222222</Value>
                <Value>0xec80</Value>
                <Value>0x0</Value>
                <Value>0x00000000</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x0</Value>
                <Value>0xf1</Value>
                <Value>0x7fffffff</Value>
                <Value>0x33333333</Value>
                <Value>0xffff</Value>
                <Value>0x0</Value>
                <Value>0x12345678</Value>
                <Value>0x9730</Value>
                <Value>0x00000000</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryIntOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="IMad">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryIntOp {
                int input1;
                int input2;
                int input3;
                int output;
            };
            RWStructuredBuffer&lt;STertiaryIntOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryIntOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-2147483647</Value>
                <Value>-256</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>2147483647</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>1</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>-256</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>3</Value>
                <Value>16</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>10</Value>
                <Value>100</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>255</Value>
                <Value>2147483646</Value>
                <Value>-2147483647</Value>
                <Value>-10</Value>
                <Value>-2000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-2147483647</Value>
                <Value>65536</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>2</Value>
                <Value>9</Value>
                <Value>257</Value>
                <Value>255</Value>
                <Value>2147483647</Value>
                <Value>-2147483646</Value>
                <Value>0</Value>
                <Value>-1000</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="UnaryInt16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="BfrevBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryInt16Op {
                int16_t input;
                int16_t output;
            };
            RWStructuredBuffer&lt;SUnaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryInt16Op l = g_buf[GI];
                l.output = reversebits(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-256</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>256</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>255</Value>
                <Value>8191</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>-32768</Value>
                <Value>4096</Value>
                <Value>128</Value>
                <Value>-2</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FirstbitSHiBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryInt16Op {
                int16_t input;
                int16_t output;
            };
            RWStructuredBuffer&lt;SUnaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryInt16Op l = g_buf[GI];
                l.output = firstbithigh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-256</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>256</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>14</Value>
                <Value>7</Value>
                <Value>2</Value>
                <Value>-1</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>8</Value>
                <Value>14</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="FirstbitLoBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryInt16Op {
                int16_t input;
                int16_t output;
            };
            RWStructuredBuffer&lt;SUnaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryInt16Op l = g_buf[GI];
                l.output = firstbitlow(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-256</Value>
                <Value>-8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>256</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>15</Value>
                <Value>8</Value>
                <Value>3</Value>
                <Value>0</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>8</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="BinaryInt16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="XorBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 ^ l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff</Value>
                <Value>0x1111</Value>
                <Value>0x137f</Value>
                <Value>0x0</Value>
                <Value>0x1234</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000</Value>
                <Value>0x2222</Value>
                <Value>0xec80</Value>
                <Value>0x0</Value>
                <Value>0x0000</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x0</Value>
                <Value>0xf1</Value>
                <Value>0x7fff</Value>
                <Value>0x3333</Value>
                <Value>0xffff</Value>
                <Value>0x0</Value>
                <Value>0x1234</Value>
                <Value>0x9730</Value>
                <Value>0x0000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="AndBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 &amp; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff</Value>
                <Value>0x3333</Value>
                <Value>0x137f</Value>
                <Value>0x1234</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000</Value>
                <Value>0x2222</Value>
                <Value>0xec80</Value>
                <Value>-1</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0x00</Value>
                <Value>0x0</Value>
                <Value>0x2222</Value>
                <Value>0x0</Value>
                <Value>0x1234</Value>
                <Value>0x2041</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="UMulBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t output1;
                uint16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUint16Op l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>100</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>101</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>40</Value>
                <Value>10100</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IMaxBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = max(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-3114</Value>
                <Value>272</Value>
                <Value>15</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>272</Value>
                <Value>15</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="USubBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t output1;
                uint16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUint16Op l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>323</Value>
                <Value>65535</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>65535</Value>
                <Value>486</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>334</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>323</Value>
                <Value>0xfff5</Value>
                <Value>0</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>65535</Value>
                <Value>152</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IMinBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = min(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-3114</Value>
                <Value>272</Value>
                <Value>15</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>-3114</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="UAddBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t output1;
                uint16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUint16Op l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>323</Value>
                <Value>0xfff5</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>65535</Value>
                <Value>486</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>334</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>323</Value>
                <Value>65535</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>20</Value>
                <Value>65535</Value>
                <Value>820</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="ShlBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 &lt;&lt; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>0x0101</Value>
                <Value>0xa</Value>
                <Value>-1</Value>
                <Value>0x1234</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>259</Value>
                <Value>4</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>13</Value>
                <Value>3</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0x8</Value>
                <Value>0x1010</Value>
                <Value>0x28</Value>
                <Value>-1</Value>
                <Value>0x8000</Value>
                <Value>-8</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="LShrBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 &gt;&gt; l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>0x7fff</Value>
                <Value>0x7fff</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>1</Value>
                <Value>4</Value>
                <Value>14</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>0x07ff</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="ISubBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-3114</Value>
                <Value>272</Value>
                <Value>15</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-32768</Value>
                <Value>-20</Value>
                <Value>3114</Value>
                <Value>-272</Value>
                <Value>-5</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IAddBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-3114</Value>
                <Value>272</Value>
                <Value>15</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-32768</Value>
                <Value>0</Value>
                <Value>-3114</Value>
                <Value>272</Value>
                <Value>25</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="IMulBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-10</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>10</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>-10</Value>
                <Value>-10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>100</Value>
                <Value>-10</Value>
                <Value>0</Value>
                <Value>256</Value>
                <Value>40</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="OrBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t output1;
                int16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryInt16Op l = g_buf[GI];
                l.output1 = l.input1 | l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x1</Value>
                <Value>0x01</Value>
                <Value>0x7fff</Value>
                <Value>0x3333</Value>
                <Value>0x137f</Value>
                <Value>0x1234</Value>
                <Value>0xa341</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x1</Value>
                <Value>0xf0</Value>
                <Value>0x0000</Value>
                <Value>0x2222</Value>
                <Value>0xec80</Value>
                <Value>0xffff</Value>
                <Value>0x3471</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x1</Value>
                <Value>0xf1</Value>
                <Value>0x7fff</Value>
                <Value>0x3333</Value>
                <Value>0xffff</Value>
                <Value>0xffff</Value>
                <Value>0xb771</Value>
                <Value>-1</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryInt16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="IMadBit16">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryInt16Op {
                int16_t input1;
                int16_t input2;
                int16_t input3;
                int16_t output;
            };
            RWStructuredBuffer&lt;STertiaryInt16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryInt16Op l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>-32768</Value>
                <Value>-256</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>32767</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>8</Value>
                <Value>-1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>3</Value>
                <Value>16</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>3</Value>
                <Value>250</Value>
                <Value>-30</Value>
                <Value>-32768</Value>
                <Value>-50</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-32768</Value>
                <Value>-2048</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>251</Value>
                <Value>-24</Value>
                <Value>-32512</Value>
                <Value>32717</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="UnaryUintOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="FirstbitHi">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryUintOp {
                uint input;
                uint output;
            };
            RWStructuredBuffer&lt;SUnaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryUintOp l = g_buf[GI];
                l.output = firstbithigh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65536</Value>
                <Value>2147483647</Value>
                <Value>4294967295</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>16</Value>
                <Value>30</Value>
                <Value>31</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="BinaryUintOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="USub">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>2147483648</Value>
                <Value>4294967295</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>30</Value>
                <Value>2147483647</Value>
                <Value>54724</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>54238</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>2147483648</Value>
                <Value>4294967285</Value>
                <Value>0</Value>
                <Value>4294967286</Value>
                <Value>20</Value>
                <Value>2147483647</Value>
                <Value>486</Value>
            </Parameter>
        </Row>
        <Row Name="UMul">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>256</Value>
                <Value>40</Value>
                <Value>100010000</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="UAddc">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                uint2 x = uint2(l.input1, l.input2);
                uint2 y = AddUint64(x, x);
                l.output1 = y.x;
                l.output2 = y.y;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>10000</Value>
                <Value>0x80000000</Value>
                <Value>0x7fffffff</Value>
                <Value>0xffffffff</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>10001</Value>
                <Value>1</Value>
                <Value>0x7fffffff</Value>
                <Value>0x7fffffff</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>2</Value>
                <Value>2</Value>
                <Value>20000</Value>
                <Value>0</Value>
                <Value>0xfffffffe</Value>
                <Value>0xfffffffe</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>512</Value>
                <Value>20002</Value>
                <Value>3</Value>
                <Value>0xfffffffe</Value>
                <Value>0xffffffff</Value>
            </Parameter>
        </Row>
        <Row Name="UMin">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = min(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
                <Value>4294967295</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>4294967295</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>4</Value>
                <Value>10000</Value>
                <Value>0</Value>
                <Value>4294967295</Value>
            </Parameter>
        </Row>
        <Row Name="UMax">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = max(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
                <Value>4294967295</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>4294967295</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>256</Value>
                <Value>10</Value>
                <Value>10001</Value>
                <Value>2147483647</Value>
                <Value>4294967295</Value>
            </Parameter>
        </Row>
        <Row Name="UAdd">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>2147483648</Value>
                <Value>4294967285</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>2147483647</Value>
                <Value>486</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>0</Value>
                <Value>54238</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>2147483648</Value>
                <Value>4294967295</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>20</Value>
                <Value>2147483647</Value>
                <Value>54724</Value>
            </Parameter>
        </Row>
        <Row Name="UDiv">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUintOp {
                uint input1;
                uint input2;
                uint output1;
                uint output2;
            };
            RWStructuredBuffer&lt;SBinaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUintOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                l.output2 = l.input1 % l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1</Value>
                <Value>1</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>2147483647</Value>
                <Value>2147483647</Value>
                <Value>0xffffffff</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>2147483647</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0xffffffff</Value>
                <Value>0</Value>
                <Value>2</Value>
                <Value>0</Value>
                <Value>0xffffffff</Value>
                <Value>1</Value>
                <Value>0xffffffff</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0xffffffff</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>10000</Value>
                <Value>0xffffffff</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryUintOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="UMad">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryUintOp {
                uint input1;
                uint input2;
                uint input3;
                uint output;
            };
            RWStructuredBuffer&lt;STertiaryUintOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryUintOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>2147483647</Value>
                <Value>0</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>15</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>271</Value>
                <Value>2147483647</Value>
                <Value>10</Value>
                <Value>110</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="UnaryUint16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="FirstbitHiBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SUnaryUint16Op {
                uint16_t input;
                uint16_t output;
            };
            RWStructuredBuffer&lt;SUnaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SUnaryUint16Op l = g_buf[GI];
                l.output = firstbithigh(l.input);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>8</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>-1</Value>
                <Value>0</Value>
                <Value>3</Value>
                <Value>15</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="BinaryUint16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="UMaxBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t output1;
                uint16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUint16Op l = g_buf[GI];
                l.output1 = max(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>32767</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>256</Value>
                <Value>10</Value>
                <Value>10001</Value>
                <Value>32767</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
        <Row Name="UMinBit16">
            <Parameter Name="Validation.Type">Epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t output1;
                uint16_t output2;
            };
            RWStructuredBuffer&lt;SBinaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryUint16Op l = g_buf[GI];
                l.output1 = min(l.input1,l.input2);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>32767</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>256</Value>
                <Value>4</Value>
                <Value>10001</Value>
                <Value>0</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>4</Value>
                <Value>10000</Value>
                <Value>0</Value>
                <Value>65535</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="TertiaryUint16OpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="UMadBit16">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryUint16Op {
                uint16_t input1;
                uint16_t input2;
                uint16_t input3;
                uint16_t output;
            };
            RWStructuredBuffer&lt;STertiaryUint16Op&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryUint16Op l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>32767</Value>
                <Value>0</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0</Value>
                <Value>1</Value>
                <Value>2</Value>
                <Value>16</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>15</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>271</Value>
                <Value>32767</Value>
                <Value>10</Value>
                <Value>110</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="DotOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected3">String</ParameterType>
        </ParameterTypes>
        <Row Name="Dot">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SDotOp {
                   float4 input1;
                   float4 input2;
                   float o_dot2;
                   float o_dot3;
                   float o_dot4;
                };
                RWStructuredBuffer&lt;SDotOp&gt; g_buf : register(u0);
                [numthreads(8,8,1)]
                void main(uint GI : SV_GroupIndex) {
                    SDotOp l = g_buf[GI];
                    l.o_dot2 = dot(l.input1.xy, l.input2.xy);
                    l.o_dot3 = dot(l.input1.xyz, l.input2.xyz);
                    l.o_dot4 = dot(l.input1.xyzw, l.input2.xyzw);
                    g_buf[GI] = l;
                };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>NaN,NaN,NaN,NaN</Value>
                <Value>-Inf,-Inf,-Inf,-Inf</Value>
                <Value>-denorm,-denorm,-denorm,-denorm</Value>
                <Value>-0,-0,-0,-0</Value>
                <Value>0,0,0,0</Value>
                <Value>denorm,denorm,denorm,denorm</Value>
                <Value>Inf,Inf,Inf,Inf</Value>
                <Value>1,1,1,1</Value>
                <Value>-10,0,0,10</Value>
                <Value>Inf,Inf,Inf,-Inf</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>NaN,NaN,NaN,NaN</Value>
                <Value>-Inf,-Inf,-Inf,-Inf</Value>
                <Value>-denorm,-denorm,-denorm,-denorm</Value>
                <Value>-0,-0,-0,-0</Value>
                <Value>0,0,0,0</Value>
                <Value>denorm,denorm,denorm,denorm</Value>
                <Value>Inf,Inf,Inf,Inf</Value>
                <Value>1,1,1,1</Value>
                <Value>10,0,0,10</Value>
                <Value>Inf,Inf,Inf,Inf</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>nan</Value>
                <Value>inf</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>inf</Value>
                <Value>2</Value>
                <Value>-100</Value>
                <Value>inf</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>nan</Value>
                <Value>inf</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>inf</Value>
                <Value>3</Value>
                <Value>-100</Value>
                <Value>inf</Value>
            </Parameter>
            <Parameter Name="Validation.Expected3">
                <Value>nan</Value>
                <Value>inf</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>inf</Value>
                <Value>4</Value>
                <Value>0</Value>
                <Value>nan</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="Dot2AddHalfOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="Dot2AddHalf">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0.008</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SDot2AddHalfOp {
                   half2 input1;
                   half2 input2;
                   float acc;
                   float result;
                };
                RWStructuredBuffer&lt;SDot2AddHalfOp&gt; g_buf : register(u0);
                [numthreads(8,8,1)]
                void main(uint GI : SV_GroupIndex) {
                    SDot2AddHalfOp l = g_buf[GI];
                    l.result = dot2add(l.input1, l.input2, l.acc);
                    g_buf[GI] = l;
                };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_4</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>1,2</Value>
                <Value>1,-2</Value>
                <Value>1,2</Value>
                <Value>-1,2</Value>
                <Value>1,2</Value>
                <Value>-1,2</Value>
                <Value>1,2</Value>
                <Value>-1,-2</Value>
                <Value>65504,1</Value>
                <Value>-65504,1</Value>
                <Value>1,65504</Value>
                <Value>1,-65504</Value>
                <Value>inf,inf</Value>
                <Value>denorm,denorm</Value>
                <Value>-denorm,-denorm</Value>
                <Value>nan,nan</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>3,4</Value>
                <Value>-3,4</Value>
                <Value>3,4</Value>
                <Value>3,-4</Value>
                <Value>3,4</Value>
                <Value>-3,4</Value>
                <Value>3,4</Value>
                <Value>-3,-4</Value>
                <Value>1,65504</Value>
                <Value>1,-65504</Value>
                <Value>65504,1</Value>
                <Value>-65504,1</Value>
                <Value>inf,inf</Value>
                <Value>denorm,denorm</Value>
                <Value>-denorm,-denorm</Value>
                <Value>nan,nan</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>0</Value>
                <Value>10</Value>
                <Value>10</Value>
                <Value>-5</Value>
                <Value>-5</Value>
                <Value>-30</Value>
                <Value>-30</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>10000000</Value>
                <Value>-10000000</Value>
                <Value>inf</Value>
                <Value>denorm</Value>
                <Value>-denorm</Value>
                <Value>nan</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>11</Value>
                <Value>-11</Value>
                <Value>21</Value>
                <Value>-1</Value>
                <Value>6</Value>
                <Value>6</Value>
                <Value>-19</Value>
                <Value>-19</Value>
                <Value>131008</Value>
                <Value>-131008</Value>
                <Value>10131008</Value>
                <Value>-10131008</Value>
                <Value>inf</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>nan</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-enable-16bit-types</Parameter>
        </Row>
    </Table>
    <Table Id="Dot4AddI8PackedOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="Dot4AddI8Packed">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SDot4AddI8PackedOp {
                   dword input1;
                   dword input2;
                   int acc;
                   int result;
                };
                RWStructuredBuffer&lt;SDot4AddI8PackedOp&gt; g_buf : register(u0);
                [numthreads(8,8,1)]
                void main(uint GI : SV_GroupIndex) {
                    SDot4AddI8PackedOp l = g_buf[GI];
                    l.result = dot4add_i8packed(l.input1, l.input2, l.acc);
                    g_buf[GI] = l;
                };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_4</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x00000102</Value>
                <Value>0x00000102</Value>
                <Value>0x00000102</Value>
                <Value>0x00000102</Value>
                <Value>0XFFFFFFFF</Value>
                <Value>0x80808080</Value>
                <Value>0x80808080</Value>
                <Value>0x807F807F</Value>
                <Value>0x7F7F7F7F</Value>
                <Value>0x80808080</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x00000304</Value>
                <Value>0x00000304</Value>
                <Value>0x00000304</Value>
                <Value>0x00000304</Value>
                <Value>0xFFFFFFFF</Value>
                <Value>0x01010101</Value>
                <Value>0x7F7F7F7F</Value>
                <Value>0x807F807F</Value>
                <Value>0x7F7F7F7F</Value>
                <Value>0x80808080</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>10</Value>
                <Value>-5</Value>
                <Value>-30</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>11</Value>
                <Value>21</Value>
                <Value>6</Value>
                <Value>-19</Value>
                <Value>4</Value>
                <Value>-512</Value>
                <Value>-65024</Value>
                <Value>65026</Value>
                <Value>64516</Value>
                <Value>65536</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="Dot4AddU8PackedOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="Dot4AddU8Packed">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SDot4AddU8PackedOp {
                   dword input1;
                   dword input2;
                   dword acc;
                   dword result;
                };
                RWStructuredBuffer&lt;SDot4AddU8PackedOp&gt; g_buf : register(u0);
                [numthreads(8,8,1)]
                void main(uint GI : SV_GroupIndex) {
                    SDot4AddU8PackedOp l = g_buf[GI];
                    l.result = dot4add_u8packed(l.input1, l.input2, l.acc);
                    g_buf[GI] = l;
                };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_4</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x00000102</Value>
                <Value>0x00000102</Value>
                <Value>0x01234567</Value>
                <Value>0xFFFFFFFF</Value>
                <Value>0xFFFFFFFF</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x00000304</Value>
                <Value>0x00000304</Value>
                <Value>0x23456789</Value>
                <Value>0xFFFFFFFF</Value>
                <Value>0xFFFFFFFF</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0</Value>
                <Value>10</Value>
                <Value>10000</Value>
                <Value>0</Value>
                <Value>3000000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>11</Value>
                <Value>21</Value>
                <Value>33668</Value>
                <Value>260100</Value>
                <Value>3000260100</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="Msad4Table">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">int</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">unsigned int</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
        </ParameterTypes>
        <Row Name="Bfi">
            <Parameter Name="Validation.Type">epsilon</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SMsad4 {
                        uint ref;
                        uint2 source;
                        uint4 accum;
                        uint4 result;
                    };
                    RWStructuredBuffer&lt;SMsad4&gt; g_buf : register(u0);
                    [numthreads(8,8,1)]
                    void main(uint GI : SV_GroupIndex) {
                        SMsad4 l = g_buf[GI];
                        l.result = msad4(l.ref, l.source, l.accum);
                        g_buf[GI] = l;
                    };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_0</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0xA100B2C3</Value>
                <Value>0x00000000</Value>
                <Value>0xFFFF01C1</Value>
                <Value>0xFFFFFFFF</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0xD7B0C372, 0x4F57C2A3</Value>
                <Value>0xFFFFFFFF, 0x00000000</Value>
                <Value>0x38A03AEF, 0x38194DA3</Value>
                <Value>0xFFFFFFFF, 0x00000000</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>1,2,3,4</Value>
                <Value>1,2,3,4</Value>
                <Value>0,0,0,0</Value>
                <Value>10,10,10,10</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>153,6,92,113</Value>
                <Value>1,2,3,4</Value>
                <Value>397,585,358,707</Value>
                <Value>10,265,520,775</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsActiveIntTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.NumInputSet">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet4">String</ParameterType>
        </ParameterTypes>
        <Row Name="WaveActiveSum">
            <Parameter Name="ShaderOp.Name">WaveActiveSum</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveSum(pts.input);
                        }
                        else {
                            pts.output = WaveActiveSum(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>2</Value>
                <Value>4</Value>
                <Value>8</Value>
                <Value>-64</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveAllEqual">
            <Parameter Name="ShaderOp.Name">WaveActiveAllEqual</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveAllEqual(pts.input);
                        }
                        else {
                            pts.output = WaveActiveAllEqual(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>3</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>-10</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveAnyTrue">
            <Parameter Name="ShaderOp.Name">WaveActiveAnyTrue</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveAnyTrue(pts.input);
                        }
                        else {
                            pts.output = WaveActiveAnyTrue(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>0</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveMax">
            <Parameter Name="ShaderOp.Name">WaveActiveMax</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveMax(pts.input);
                        }
                        else {
                            pts.output = WaveActiveMax(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>-4</Value>
                <Value>-64</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>-100</Value>
                <Value>-1000</Value>
                <Value>300</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveMin">
            <Parameter Name="ShaderOp.Name">WaveActiveMin</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveMin(pts.input);
                        }
                        else {
                            pts.output = WaveActiveMin(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
                <Value>6</Value>
                <Value>7</Value>
                <Value>8</Value>
                <Value>9</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>-4</Value>
                <Value>-64</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>-100</Value>
                <Value>-1000</Value>
                <Value>300</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveAllTrue">
            <Parameter Name="ShaderOp.Name">WaveActiveAllTrue</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveAllTrue(pts.input);
                        }
                        else {
                            pts.output = WaveActiveAllTrue(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveCountBits">
            <Parameter Name="ShaderOp.Name">WaveActiveCountBits</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveCountBits(pts.input &gt; 3);
                        }
                        else {
                            pts.output = WaveActiveCountBits(pts.input &gt; 3);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>-4</Value>
                <Value>-64</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>-100</Value>
                <Value>-1000</Value>
                <Value>300</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveProduct">
            <Parameter Name="ShaderOp.Name">WaveActiveProduct</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveProduct(pts.input);
                        }
                        else {
                            pts.output = WaveActiveProduct(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>-64</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsActiveUintTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.NumInputSet">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet4">String</ParameterType>
        </ParameterTypes>
        <Row Name="WaveActiveUMax">
            <Parameter Name="ShaderOp.Name">WaveActiveUMax</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveMax(pts.input);
                        }
                        else {
                            pts.output = WaveActiveMax(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>4</Value>
                <Value>64</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveBitOr">
            <Parameter Name="ShaderOp.Name">WaveActiveBitOr</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveBitOr(pts.input);
                        }
                        else {
                            pts.output = WaveActiveBitOr(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>0xe0000000</Value>
                <Value>0x0d000000</Value>
                <Value>0x00b00000</Value>
                <Value>0x00070000</Value>
                <Value>0x0000e000</Value>
                <Value>0x00000d00</Value>
                <Value>0x000000b0</Value>
                <Value>0x00000007</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0xedb7edb7</Value>
                <Value>0xdb7edb7e</Value>
                <Value>0xb7edb7ed</Value>
                <Value>0x7edb7edb</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>0x12481248</Value>
                <Value>0x24812481</Value>
                <Value>0x48124812</Value>
                <Value>0x81248124</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>0x00000000</Value>
                <Value>0xffffffff</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveBitAnd">
            <Parameter Name="ShaderOp.Name">WaveActiveBitAnd</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveBitAnd(pts.input);
                        }
                        else {
                            pts.output = WaveActiveBitAnd(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>0xefffffff</Value>
                <Value>0xfdffffff</Value>
                <Value>0xffbfffff</Value>
                <Value>0xfff7ffff</Value>
                <Value>0xffffefff</Value>
                <Value>0xfffffdff</Value>
                <Value>0xffffffbf</Value>
                <Value>0xfffffff7</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0xedb7edb7</Value>
                <Value>0xdb7edb7e</Value>
                <Value>0xb7edb7ed</Value>
                <Value>0x7edb7edb</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>0x12481248</Value>
                <Value>0x24812481</Value>
                <Value>0x48124812</Value>
                <Value>0x81248124</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>0x00000000</Value>
                <Value>0xffffffff</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveUMin">
            <Parameter Name="ShaderOp.Name">WaveActiveUMin</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveMin(pts.input);
                        }
                        else {
                            pts.output = WaveActiveMin(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
                <Value>6</Value>
                <Value>7</Value>
                <Value>8</Value>
                <Value>9</Value>
                <Value>10</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>4</Value>
                <Value>64</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveUSum">
            <Parameter Name="ShaderOp.Name">WaveActiveUSum</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveSum(pts.input);
                        }
                        else {
                            pts.output = WaveActiveSum(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>2</Value>
                <Value>4</Value>
                <Value>8</Value>
                <Value>64</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveBitXor">
            <Parameter Name="ShaderOp.Name">WaveActiveBitXor</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveBitXor(pts.input);
                        }
                        else {
                            pts.output = WaveActiveBitXor(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>0xe0000000</Value>
                <Value>0x0d000000</Value>
                <Value>0x00b00000</Value>
                <Value>0x00070000</Value>
                <Value>0x0000e000</Value>
                <Value>0x00000d00</Value>
                <Value>0x000000b0</Value>
                <Value>0x00000007</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0xedb7edb7</Value>
                <Value>0xdb7edb7e</Value>
                <Value>0xb7edb7ed</Value>
                <Value>0x7edb7edb</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>0x12481248</Value>
                <Value>0x24812481</Value>
                <Value>0x48124812</Value>
                <Value>0x81248124</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>0x00000000</Value>
                <Value>0xffffffff</Value>
            </Parameter>
        </Row>
        <Row Name="WaveActiveUProduct">
            <Parameter Name="ShaderOp.Name">WaveActiveUProduct</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WaveActiveProduct(pts.input);
                        }
                        else {
                            pts.output = WaveActiveProduct(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>64</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsPrefixIntTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.NumInputSet">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet4">String</ParameterType>
        </ParameterTypes>
        <Row Name="WavePrefixProduct">
            <Parameter Name="ShaderOp.Name">WavePrefixProduct</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WavePrefixProduct(pts.input);
                        }
                        else {
                            pts.output = WavePrefixProduct(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>-64</Value>
                <Value>128</Value>
            </Parameter>
        </Row>
        <Row Name="WavePrefixSum">
            <Parameter Name="ShaderOp.Name">WavePrefixSum</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WavePrefixSum(pts.input);
                        }
                        else {
                            pts.output = WavePrefixSum(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>-64</Value>
                <Value>128</Value>
            </Parameter>
        </Row>
        <Row Name="WavePrefixCountBits">
            <Parameter Name="ShaderOp.Name">WavePrefixCountBits</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        int input;
                        int output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WavePrefixCountBits(pts.input &gt; 3);
                        }
                        else {
                            pts.output = WavePrefixCountBits(pts.input &gt; 3);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">4</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>10</Value>
                <Value>-4</Value>
                <Value>-64</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet4">
                <Value>-100</Value>
                <Value>-1000</Value>
                <Value>300</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsPrefixUintTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.NumInputSet">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.InputSet4">String</ParameterType>
        </ParameterTypes>
        <Row Name="WavePrefixUSum">
            <Parameter Name="ShaderOp.Name">WavePrefixUSum</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WavePrefixSum(pts.input);
                        }
                        else {
                            pts.output = WavePrefixSum(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>128</Value>
            </Parameter>
        </Row>
        <Row Name="WavePrefixUProduct">
            <Parameter Name="ShaderOp.Name">WavePrefixUProduct</Parameter>
            <Parameter Name="ShaderOp.Text"> struct PerThreadData {
                        uint firstLaneId;
                        uint laneIndex;
                        int mask;
                        uint input;
                        uint output;
                    };
                    RWStructuredBuffer&lt;PerThreadData&gt; g_sb : register(u0);
                    [numthreads(8,12,1)]
                    void main(uint GI : SV_GroupIndex) {
                        PerThreadData pts = g_sb[GI];
                        pts.firstLaneId = WaveReadLaneFirst(GI);
                        pts.laneIndex = WaveGetLaneIndex();
                        if (pts.mask != 0) {
                            pts.output = WavePrefixProduct(pts.input);
                        }
                        else {
                            pts.output = WavePrefixProduct(pts.input);
                        }
                        g_sb[GI] = pts;
                    };</Parameter>
            <Parameter Name="Validation.NumInputSet">3</Parameter>
            <Parameter Name="Validation.InputSet1">
                <Value>1</Value>
                <Value>2</Value>
                <Value>3</Value>
                <Value>4</Value>
                <Value>5</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet2">
                <Value>0</Value>
                <Value>1</Value>
            </Parameter>
            <Parameter Name="Validation.InputSet3">
                <Value>1</Value>
                <Value>2</Value>
                <Value>4</Value>
                <Value>128</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsMultiPrefixIntTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Keys">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Values">String</ParameterType>
        </ParameterTypes>
        <Row Name="WaveMultiPrefixBitXor">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixBitXor</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitXor(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitXor(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixCountBits">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixCountBits</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixCountBits(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixCountBits(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>0</Value>
                <Value>42</Value>
                <Value>0</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixSum">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixSum</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixSum(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixSum(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixBitAnd">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixBitAnd</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitAnd(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitAnd(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixBitOr">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixBitOr</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitOr(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitOr(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixProduct">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixProduct</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    int value;
                    int result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixProduct(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixProduct(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="WaveIntrinsicsMultiPrefixUintTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Keys">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Values">String</ParameterType>
        </ParameterTypes>
        <Row Name="WaveMultiPrefixUBitAnd">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUBitAnd</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitAnd(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitAnd(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixUBitOr">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUBitOr</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitOr(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitOr(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixUSum">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUSum</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixSum(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixSum(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixUProduct">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUProduct</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixProduct(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixProduct(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixUBitXor">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUBitXor</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitXor(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixBitXor(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>10</Value>
                <Value>42</Value>
                <Value>1</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>9</Value>
                <Value>6</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
        <Row Name="WaveMultiPrefixUCountBits">
            <Parameter Name="ShaderOp.Name">WaveMultiPrefixUCountBits</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_5</Parameter>
            <Parameter Name="ShaderOp.Text"> struct ThreadData {
                    uint key;
                    uint firstLaneId;
                    uint laneId;
                    uint mask;
                    uint value;
                    uint result;
                };
                RWStructuredBuffer&lt;ThreadData&gt; g_buffer : register(u0);
                [numthreads(8, 12, 1)]
                void main(uint id : SV_GroupIndex) {
                    ThreadData data = g_buffer[id];
                    data.firstLaneId = WaveReadLaneFirst(id);
                    data.laneId = WaveGetLaneIndex();
                    if (data.mask != 0) {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixCountBits(data.value, mask);
                    } else {
                        uint4 mask = WaveMatch(data.key);
                        data.result = WaveMultiPrefixCountBits(data.value, mask);
                    }
                    g_buffer[id] = data;
                }</Parameter>
            <Parameter Name="Validation.Keys">
                <Value>0</Value>
                <Value>3</Value>
                <Value>1</Value>
                <Value>5</Value>
                <Value>4</Value>
            </Parameter>
            <Parameter Name="Validation.Values">
                <Value>0</Value>
                <Value>42</Value>
                <Value>0</Value>
                <Value>64</Value>
                <Value>11</Value>
                <Value>76</Value>
                <Value>90</Value>
                <Value>111</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>79</Value>
                <Value>34</Value>
            </Parameter>
        </Row>
    </Table>
    <Table Id="DenormBinaryFloatOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="FDivDenormFTZ">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007F0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x20000000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>4</Value>
                <Value>0x607F0000</Value>
                <Value>0x40000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm ftz</Parameter>
        </Row>
        <Row Name="FAddDenormAny">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x007E0000</Value>
                <Value>0x007E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x807E0000</Value>
                <Value>0x800E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x00FC0000</Value>
                <Value>0x00400000</Value>
                <Value>0</Value>
                <Value>0x00700000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm any</Parameter>
        </Row>
        <Row Name="FMulDenormAny">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x00000300</Value>
                <Value>0x007F0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x001E0000</Value>
                <Value>0x00000300</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>128</Value>
                <Value>1</Value>
                <Value>0x007F0000</Value>
                <Value>20</Value>
                <Value>0x78000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x00018000</Value>
                <Value>0x007F0000</Value>
                <Value>0</Value>
                <Value>0x01960000</Value>
                <Value>0x32400000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm any</Parameter>
        </Row>
        <Row Name="FDivDenormAny">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007F0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x20000000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>4</Value>
                <Value>0x607F0000</Value>
                <Value>0x40000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x007F0000</Value>
                <Value>0x801FC000</Value>
                <Value>0x00101010</Value>
                <Value>0x00400000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm any</Parameter>
        </Row>
        <Row Name="FMulDenormFTZ">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x00000300</Value>
                <Value>0x007F0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x001E0000</Value>
                <Value>0x00000300</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>128</Value>
                <Value>1</Value>
                <Value>0x007F0000</Value>
                <Value>20</Value>
                <Value>0x78000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm ftz</Parameter>
        </Row>
        <Row Name="FAddDenormFTZ">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x007E0000</Value>
                <Value>0x007E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x807E0000</Value>
                <Value>0x800E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm ftz</Parameter>
        </Row>
        <Row Name="FDivDenormPreserve">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 / l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007F0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x20000000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>4</Value>
                <Value>0x607F0000</Value>
                <Value>0x40000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x007F0000</Value>
                <Value>0x801FC000</Value>
                <Value>0x00101010</Value>
                <Value>0x00400000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm preserve</Parameter>
        </Row>
        <Row Name="FSubDenormFTZ">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x00FF0000</Value>
                <Value>0x007A0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x00800000</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm ftz</Parameter>
        </Row>
        <Row Name="FSubDenormPreserve">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x00FF0000</Value>
                <Value>0x007A0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x00800000</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x0</Value>
                <Value>0x00FE0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x007A0000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm preserve</Parameter>
        </Row>
        <Row Name="FSubDenormAny">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 - l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x00FF0000</Value>
                <Value>0x007A0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x807F0000</Value>
                <Value>0x00800000</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x0</Value>
                <Value>0x00FE0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x007A0000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0x0</Value>
                <Value>0</Value>
                <Value>0</Value>
                <Value>0</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm any</Parameter>
        </Row>
        <Row Name="FAddDenormPreserve">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 + l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x007E0000</Value>
                <Value>0x007E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>0x007E0000</Value>
                <Value>0x00200000</Value>
                <Value>0x807E0000</Value>
                <Value>0x800E0000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x00FC0000</Value>
                <Value>0x00400000</Value>
                <Value>0</Value>
                <Value>0x00700000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm preserve</Parameter>
        </Row>
        <Row Name="FMulDenormPreserve">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct SBinaryFPOp {
                float input1;
                float input2;
                float output1;
                float output2;
            };
            RWStructuredBuffer&lt;SBinaryFPOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                SBinaryFPOp l = g_buf[GI];
                l.output1 = l.input1 * l.input2;
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x00000300</Value>
                <Value>0x007F0000</Value>
                <Value>0x007F0000</Value>
                <Value>0x001E0000</Value>
                <Value>0x00000300</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>128</Value>
                <Value>1</Value>
                <Value>0x007F0000</Value>
                <Value>20</Value>
                <Value>0x78000000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x00018000</Value>
                <Value>0x007F0000</Value>
                <Value>0</Value>
                <Value>0x01960000</Value>
                <Value>0x32400000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm preserve</Parameter>
        </Row>
    </Table>
    <Table Id="DenormTertiaryFloatOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Target">String</ParameterType>
            <ParameterType Name="ShaderOp.Arguments">String</ParameterType>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">double</ParameterType>
            <ParameterType Array="true" Name="Validation.Input1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input2">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Input3">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected1">String</ParameterType>
            <ParameterType Array="true" Name="Validation.Expected2">String</ParameterType>
        </ParameterTypes>
        <Row Name="FMadDenormPreserve">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryFloatOp {
                float input1;
                float input2;
                float input3;
                float output;
            };
            RWStructuredBuffer&lt;STertiaryFloatOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryFloatOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x80780000</Value>
                <Value>0x80780000</Value>
                <Value>0x00780000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>2</Value>
                <Value>2</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0x80780000</Value>
                <Value>0x00800000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x80F00000</Value>
                <Value>0x80700000</Value>
                <Value>0x01380000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm preserve</Parameter>
        </Row>
        <Row Name="FMadDenormAny">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryFloatOp {
                float input1;
                float input2;
                float input3;
                float output;
            };
            RWStructuredBuffer&lt;STertiaryFloatOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryFloatOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x80780000</Value>
                <Value>0x80780000</Value>
                <Value>0x00780000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>2</Value>
                <Value>2</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0x80780000</Value>
                <Value>0x00800000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0x80F00000</Value>
                <Value>0x80700000</Value>
                <Value>0x01380000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected2">
                <Value>0</Value>
                <Value>0x00800000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm any</Parameter>
        </Row>
        <Row Name="FMadDenormFTZ">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">1</Parameter>
            <Parameter Name="ShaderOp.Text"> struct STertiaryFloatOp {
                float input1;
                float input2;
                float input3;
                float output;
            };
            RWStructuredBuffer&lt;STertiaryFloatOp&gt; g_buf : register(u0);
            [numthreads(8,8,1)]
            void main(uint GI : SV_GroupIndex) {
                STertiaryFloatOp l = g_buf[GI];
                l.output = mad(l.input1, l.input2, l.input3);
                g_buf[GI] = l;
            };</Parameter>
            <Parameter Name="ShaderOp.Target">cs_6_2</Parameter>
            <Parameter Name="Validation.Input1">
                <Value>0x80780000</Value>
                <Value>0x80780000</Value>
                <Value>0x00780000</Value>
            </Parameter>
            <Parameter Name="Validation.Input2">
                <Value>1</Value>
                <Value>2</Value>
                <Value>2</Value>
            </Parameter>
            <Parameter Name="Validation.Input3">
                <Value>0x80780000</Value>
                <Value>0x00800000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="Validation.Expected1">
                <Value>0</Value>
                <Value>0x00800000</Value>
                <Value>0x00800000</Value>
            </Parameter>
            <Parameter Name="ShaderOp.Arguments">-denorm ftz</Parameter>
        </Row>
    </Table>
    <Table Id="PackUnpackOpTable">
        <ParameterTypes>
            <ParameterType Name="ShaderOp.Text">String</ParameterType>
            <ParameterType Name="Validation.Type">String</ParameterType>
            <ParameterType Name="Validation.Tolerance">uint</ParameterType>
            <ParameterType Array="true" Name="Validation.Input">String</ParameterType>
        </ParameterTypes>
        <Row Name="PackUnpack">
            <Parameter Name="Validation.Type">ulp</Parameter>
            <Parameter Name="Validation.Tolerance">0</Parameter>
            <Parameter Name="ShaderOp.Text">
                <![CDATA[

                struct SPackUnpackOpIn {
                   uint32_t4 inputUint;
                };

                struct SPackUnpackOpOutPacked
                {
                    uint32_t packedUint32;
                    uint32_t packedInt32;
                    uint32_t packedUint16;
                    uint32_t packedInt16;

                    uint32_t packedClampedUint32;
                    uint32_t packedClampedInt32;
                    uint32_t packedClampedUint16;
                    uint32_t packedClampedInt16;
                };

                struct SPackUnpackOpOutPackedUnpacked {
                   uint32_t4 outputUint32;
                   int32_t4 outputInt32;
                   uint16_t4 outputUint16;
                   int16_t4 outputInt16;

                   uint32_t4 outputClampedUint32;
                   int32_t4 outputClampedInt32;
                   uint16_t4 outputClampedUint16;
                   int16_t4 outputClampedInt16;
                };

                #ifdef PACKUNPACK_PLACEHOLDER
                    #define CALL(x) p##x


                uint32_t ppack_u8(uint16_t4 unpackedVal)
                {
                    uint32_t dst = 0;
                    for (uint32_t i = 0; i < 4; ++i)
                    {
                        dst |= ((uint32_t)unpackedVal[i] & 0xFF) << (i * 8);
                    }

                    return dst;
                }

                uint32_t ppack_s8(int16_t4 unpackedVal)
                {
                    uint32_t dst = 0;
                    for (uint32_t i = 0; i < 4; ++i)
                    {
                        dst |= ((uint32_t)unpackedVal[i] & 0xFF) << (i * 8);
                    }

                    return dst;
                }


                uint32_t ppack_u8(uint32_t4 unpackedVal)
                {
                    uint32_t dst = 0;
                    for (uint32_t i = 0; i < 4; ++i)
                    {
                        dst |= ((uint32_t)unpackedVal[i] & 0xFF) << (i * 8);
                    }

                    return dst;
                }

                uint32_t ppack_s8(int32_t4 unpackedVal)
                {
                    uint32_t dst = 0;
                    for (uint32_t i = 0; i < 4; ++i)
                    {
                        dst |= ((uint32_t)unpackedVal[i] & 0xFF) << (i * 8);
                    }

                    return dst;
                }

                uint32_t ppack_clamp_u8(int32_t4 unpackedVal)
                {
                    int32_t clamp_min = 0;
                    int32_t clamp_max = 255;

                    uint32_t dst = 0;
                    for (uint i = 0; i < 4; ++i)
                    {
                        dst |= (uint32_t)clamp(unpackedVal[i], clamp_min, clamp_max) << (i * 8);
                    }

                    return dst;
                }

                uint32_t ppack_clamp_s8(int32_t4 unpackedVal)
                {
                    int32_t clamp_min = -128;
                    int32_t clamp_max = 127;

                    uint32_t dst = 0;
                    for (uint i = 0; i < 4; ++i)
                    {
                        dst |= (uint32_t)(clamp(unpackedVal[i], clamp_min, clamp_max) & 0xFF) << (i * 8);
                    }

                    return dst;
                }

                int32_t signExtend8BitValue(int32_t val)
                {
                    // check sign bit
                    if ((val & 0x80) == 0)
                    {
                        return val;
                    }
                    else
                    {
                        return val | 0xFFFFFF00;
                    }
                }

                int16_t4 punpack_s8s16(uint32_t packedVal)
                {
                    int16_t4 ret;
                    ret[0] = (int16_t)signExtend8BitValue((packedVal & 0x000000FF) >> 0);
                    ret[1] = (int16_t)signExtend8BitValue((packedVal & 0x0000FF00) >> 8);
                    ret[2] = (int16_t)signExtend8BitValue((packedVal & 0x00FF0000) >> 16);
                    ret[3] = (int16_t)signExtend8BitValue((packedVal & 0xFF000000) >> 24);
                
                    return ret;
                }
                  
                uint16_t4 punpack_u8u16(uint32_t packedVal)
                {
                    uint16_t4 ret;
                    ret[0] = (uint16_t)((packedVal & 0x000000FF) >> 0);
                    ret[1] = (uint16_t)((packedVal & 0x0000FF00) >> 8);
                    ret[2] = (uint16_t)((packedVal & 0x00FF0000) >> 16);
                    ret[3] = (uint16_t)((packedVal & 0xFF000000) >> 24);
                
                    return ret;
                }
                  
                int32_t4 punpack_s8s32(uint32_t packedVal)
                {
                    int32_t4 ret;
                    ret[0] = signExtend8BitValue((packedVal & 0x000000FF) >> 0);
                    ret[1] = signExtend8BitValue((packedVal & 0x0000FF00) >> 8);
                    ret[2] = signExtend8BitValue((packedVal & 0x00FF0000) >> 16);
                    ret[3] = signExtend8BitValue((packedVal & 0xFF000000) >> 24);
                
                    return ret;
                }
                  
                uint32_t4 punpack_u8u32(uint32_t packedVal)
                {
                    uint32_t4 ret;
                    ret[0] = (packedVal & 0x000000FF) >> 0;
                    ret[1] = (packedVal & 0x0000FF00) >> 8;
                    ret[2] = (packedVal & 0x00FF0000) >> 16;
                    ret[3] = (packedVal & 0xFF000000) >> 24;
                
                    return ret;
                }
                #else
                    #define CALL(x) x
                #endif

                RWStructuredBuffer<SPackUnpackOpIn> g_bufIn : register(u0);
                RWStructuredBuffer<SPackUnpackOpOutPacked> g_bufOutPacked : register(u1);
                RWStructuredBuffer<SPackUnpackOpOutPackedUnpacked> g_bufOutPackedUnpacked : register(u2);

                [numthreads(6,1,1)]
                void main(uint GI : SV_GroupIndex) {
                    SPackUnpackOpIn input = g_bufIn[GI];

                    uint32_t4 inputUint32 = input.inputUint;
                    int32_t4 inputInt32 = (int32_t4)inputUint32;
                    uint16_t4 inputUint16 = inputUint32;
                    int16_t4 inputInt16 = inputInt32;

                    // First pack without clamp
                    g_bufOutPacked[GI].packedUint32 = CALL(pack_u8(inputUint32));
                    g_bufOutPacked[GI].packedInt32  = CALL(pack_s8(inputInt32));
                    g_bufOutPacked[GI].packedUint16 = CALL(pack_u8(inputUint16));
                    g_bufOutPacked[GI].packedInt16  = CALL(pack_s8(inputInt16));

                    // Then pack with clamp
                    g_bufOutPacked[GI].packedClampedUint32 = CALL(pack_clamp_u8(inputInt32));
                    g_bufOutPacked[GI].packedClampedInt32  = CALL(pack_clamp_s8(inputInt32));
                    g_bufOutPacked[GI].packedClampedUint16 = CALL(pack_clamp_u8(inputInt16));
                    g_bufOutPacked[GI].packedClampedInt16  = CALL(pack_clamp_s8(inputInt16));

                    // Then unpack
                    g_bufOutPackedUnpacked[GI].outputUint32 = CALL(unpack_u8u32(g_bufOutPacked[GI].packedUint32));
                    g_bufOutPackedUnpacked[GI].outputInt32  = CALL(unpack_s8s32(g_bufOutPacked[GI].packedInt32));
                    g_bufOutPackedUnpacked[GI].outputUint16 = CALL(unpack_u8u16(g_bufOutPacked[GI].packedUint16));
                    g_bufOutPackedUnpacked[GI].outputInt16  = CALL(unpack_s8s16(g_bufOutPacked[GI].packedInt16));
                    g_bufOutPackedUnpacked[GI].outputClampedUint32 = CALL(unpack_u8u32(g_bufOutPacked[GI].packedClampedUint32));
                    g_bufOutPackedUnpacked[GI].outputClampedInt32  = CALL(unpack_s8s32(g_bufOutPacked[GI].packedClampedInt32));
                    g_bufOutPackedUnpacked[GI].outputClampedUint16 = CALL(unpack_u8u16(g_bufOutPacked[GI].packedClampedUint16));
                    g_bufOutPackedUnpacked[GI].outputClampedInt16  = CALL(unpack_s8s16(g_bufOutPacked[GI].packedClampedInt16));
                };
                ]]>
            </Parameter>
            <Parameter Name="Validation.Input">
                <Value>0</Value>
                <Value>1</Value>
                <Value>-1</Value>
                <Value>-2</Value>

                <Value>-50</Value>
                <Value>55</Value>
                <Value>254</Value>
                <Value>255</Value>

                <Value>256</Value>
                <Value>126</Value>
                <Value>127</Value>
                <Value>128</Value>

                <Value>-127</Value>
                <Value>-128</Value>
                <Value>-129</Value>
                <Value>-254</Value>

                <Value>-255</Value>
                <Value>-256</Value>
                <Value>65535</Value>
                <Value>-32768</Value>

                <Value>32767</Value>
                <Value>2147483647</Value>
                <Value>-2147483648</Value>
                <Value>4294967295</Value>
            </Parameter>
        </Row>
    </Table>
</Data>
