120 lines · plain
1// 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=warning2 3struct S0 {4 half a;5 half b;6 half c;7 half d;8 half e;9 half f;10 half g;11 half h;12};13 14cbuffer CB0Pass {15 S0 s0p : packoffset(c0.x);16 float f0p : packoffset(c1.x);17}18 19cbuffer CB0Fail {20 S0 s0f : packoffset(c0.x);21 float f0f : packoffset(c0.w);22 // expected-error@-1 {{packoffset overlap between 'f0f', 's0f'}}23}24 25struct S1 {26 float a;27 double b;28 float c;29};30 31cbuffer CB1Pass {32 S1 s1p : packoffset(c0.x);33 float f1p : packoffset(c1.y);34}35 36cbuffer CB1Fail {37 S1 s1f : packoffset(c0.x);38 float f1f : packoffset(c1.x);39 // expected-error@-1 {{packoffset overlap between 'f1f', 's1f'}}40}41 42struct S2 {43 float3 a;44 float2 b;45};46 47cbuffer CB2Pass {48 S2 s2p : packoffset(c0.x);49 float f2p : packoffset(c1.z);50}51 52cbuffer CB2Fail {53 S2 s2f : packoffset(c0.x);54 float f2f : packoffset(c1.y);55 // expected-error@-1 {{packoffset overlap between 'f2f', 's2f'}}56}57 58struct S3 {59 float3 a;60 float b;61};62 63cbuffer CB3Pass {64 S3 s3p : packoffset(c0.x);65 float f3p : packoffset(c1.x);66}67 68cbuffer CB3Fail {69 S3 s3f : packoffset(c0.x);70 float f3f : packoffset(c0.w);71 // expected-error@-1 {{packoffset overlap between 'f3f', 's3f'}}72}73 74struct S4 {75 float2 a;76 float2 b;77};78 79cbuffer CB4Pass {80 S4 s4p : packoffset(c0.x);81 float f4p : packoffset(c1.x);82}83 84cbuffer CB4Fail {85 S4 s4f : packoffset(c0.x);86 float f4f : packoffset(c0.w);87 // expected-error@-1 {{packoffset overlap between 'f4f', 's4f'}}88}89 90struct S5 {91 float a[3];92};93 94cbuffer CB5Pass {95 S5 s5p : packoffset(c0.x);96 float f5p : packoffset(c2.y);97}98 99cbuffer CB5Fail {100 S5 s5f : packoffset(c0.x);101 float f5f : packoffset(c2.x);102 // expected-error@-1 {{packoffset overlap between 'f5f', 's5f'}}103}104 105struct S6 {106 float a;107 float2 b;108};109 110cbuffer CB6Pass {111 S6 s6p : packoffset(c0.x);112 float f6p : packoffset(c0.w);113}114 115cbuffer CB6Fail {116 S6 s6f : packoffset(c0.x);117 float f6f : packoffset(c0.y);118 // expected-error@-1 {{packoffset overlap between 'f6f', 's6f'}}119}120