// 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'}} }