blob: 70b273237269157d6e48874f6ab953ae054f7eb0 [file] [edit]
// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s -fnative-half-type -fsyntax-only -verify -verify-ignore-unexpected=warning
cbuffer MatArr0Pass {
float2x4 A0p[2] : packoffset(c0.x);
float a0tail : packoffset(c4.x);
}
cbuffer MatArr0Fail {
float2x4 A0f[2] : packoffset(c0.x);
float a0bad : packoffset(c3.z);
// expected-error@-1 {{packoffset overlap between 'a0bad', 'A0f'}}
}
// Struct containing a matrix.
struct MS0 {
float2x4 M;
float2 V;
};
cbuffer MatStruct0Pass {
MS0 s0p : packoffset(c0.x);
float s0tail: packoffset(c2.z);
}
cbuffer MatStruct0Fail {
MS0 s0f : packoffset(c0.x);
float s0bad : packoffset(c2.y);
// expected-error@-1 {{packoffset overlap between 's0bad', 's0f'}}
}
// Nested struct containing a matrix.
struct Inner0 {
float2x4 M;
float F;
};
struct Outer0 {
float2 Head;
Inner0 I;
float2 Tail;
};
cbuffer MatNested0Pass {
Outer0 o0p : packoffset(c0.x);
float o0tail: packoffset(c4.x);
}
cbuffer MatNested0Fail {
Outer0 o0f : packoffset(c0.x);
float o0bad: packoffset(c3.z);
// expected-error@-1 {{packoffset overlap between 'o0bad', 'o0f'}}
}
// Array-of-struct where struct contains a matrix.
struct AMS0 {
float2x4 M;
float2 V;
};
cbuffer MatArrStruct0Pass {
AMS0 as0p[2] : packoffset(c0.x);
float as0tail : packoffset(c5.z);
}
cbuffer MatArrStruct0Fail {
AMS0 as0f[2] : packoffset(c0.x);
float as0bad : packoffset(c5.y);
// expected-error@-1 {{packoffset overlap between 'as0bad', 'as0f'}}
}