// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s -fnative-half-type -fsyntax-only -verify -verify-ignore-unexpected=warning struct S0 { half a; half b; half c; half d; half e; half f; half g; half h; }; cbuffer CB0Pass { S0 s0p : packoffset(c0.x); float f0p : packoffset(c1.x); } cbuffer CB0Fail { S0 s0f : packoffset(c0.x); float f0f : packoffset(c0.w); // expected-error@-1 {{packoffset overlap between 'f0f', 's0f'}} } struct S1 { float a; double b; float c; }; cbuffer CB1Pass { S1 s1p : packoffset(c0.x); float f1p : packoffset(c1.y); } cbuffer CB1Fail { S1 s1f : packoffset(c0.x); float f1f : packoffset(c1.x); // expected-error@-1 {{packoffset overlap between 'f1f', 's1f'}} } struct S2 { float3 a; float2 b; }; cbuffer CB2Pass { S2 s2p : packoffset(c0.x); float f2p : packoffset(c1.z); } cbuffer CB2Fail { S2 s2f : packoffset(c0.x); float f2f : packoffset(c1.y); // expected-error@-1 {{packoffset overlap between 'f2f', 's2f'}} } struct S3 { float3 a; float b; }; cbuffer CB3Pass { S3 s3p : packoffset(c0.x); float f3p : packoffset(c1.x); } cbuffer CB3Fail { S3 s3f : packoffset(c0.x); float f3f : packoffset(c0.w); // expected-error@-1 {{packoffset overlap between 'f3f', 's3f'}} } struct S4 { float2 a; float2 b; }; cbuffer CB4Pass { S4 s4p : packoffset(c0.x); float f4p : packoffset(c1.x); } cbuffer CB4Fail { S4 s4f : packoffset(c0.x); float f4f : packoffset(c0.w); // expected-error@-1 {{packoffset overlap between 'f4f', 's4f'}} } struct S5 { float a[3]; }; cbuffer CB5Pass { S5 s5p : packoffset(c0.x); float f5p : packoffset(c2.y); } cbuffer CB5Fail { S5 s5f : packoffset(c0.x); float f5f : packoffset(c2.x); // expected-error@-1 {{packoffset overlap between 'f5f', 's5f'}} } struct S6 { float a; float2 b; }; cbuffer CB6Pass { S6 s6p : packoffset(c0.x); float f6p : packoffset(c0.w); } cbuffer CB6Fail { S6 s6f : packoffset(c0.x); float f6f : packoffset(c0.y); // expected-error@-1 {{packoffset overlap between 'f6f', 's6f'}} }