103 lines · plain
1// RUN: %clang_cc1 -triple dxil-unknown-shadermodel6.3-library -S -finclude-default-header -fnative-half-type -fnative-int16-type -ast-dump -x hlsl %s | FileCheck %s2 3 4// CHECK: HLSLBufferDecl {{.*}} cbuffer A5cbuffer A6{7 // CHECK-NEXT:-HLSLResourceClassAttr {{.*}} Implicit CBuffer8 // CHECK-NEXT: HLSLResourceBindingAttr {{.*}} Implicit "" "0"9 // CHECK-NEXT: VarDecl {{.*}} A1 'hlsl_constant float4'10 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 011 float4 A1 : packoffset(c);12 // CHECK-NEXT: VarDecl {{.*}} col:11 A2 'hlsl_constant float'13 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 014 float A2 : packoffset(c1);15 // CHECK-NEXT: VarDecl {{.*}} col:11 A3 'hlsl_constant float'16 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 117 float A3 : packoffset(c1.y);18}19 20// CHECK: HLSLBufferDecl {{.*}} cbuffer B21cbuffer B22{23 // CHECK: VarDecl {{.*}} B0 'hlsl_constant float'24 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 125 float B0 : packoffset(c0.g);26 // CHECK-NEXT: VarDecl {{.*}} B1 'hlsl_constant double'27 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 228 double B1 : packoffset(c0.b);29 // CHECK-NEXT: VarDecl {{.*}} B2 'hlsl_constant half'30 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 031 half B2 : packoffset(c0.r);32}33 34// CHECK: HLSLBufferDecl {{.*}} cbuffer C35cbuffer C36{37 // CHECK: VarDecl {{.*}} C0 'hlsl_constant float'38 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 139 float C0 : packoffset(c0.y);40 // CHECK-NEXT: VarDecl {{.*}} C1 'hlsl_constant float2'41 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 242 float2 C1 : packoffset(c0.z);43 // CHECK-NEXT: VarDecl {{.*}} C2 'hlsl_constant half'44 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 045 half C2 : packoffset(c0.x);46}47 48 49// CHECK: HLSLBufferDecl {{.*}} cbuffer D50cbuffer D51{52 // CHECK: VarDecl {{.*}} D0 'hlsl_constant float'53 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 154 float D0 : packoffset(c0.y);55 // CHECK-NEXT: VarDecl {{.*}} D1 'hlsl_constant float[2]'56 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 057 float D1[2] : packoffset(c1.x);58 // CHECK-NEXT: VarDecl {{.*}} D2 'hlsl_constant half3'59 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 2 160 half3 D2 : packoffset(c2.y);61 // CHECK-NEXT: VarDecl {{.*}} D3 'hlsl_constant double'62 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 263 double D3 : packoffset(c0.z);64}65 66struct ST {67 float a;68 float2 b;69 half c;70};71 72// CHECK: HLSLBufferDecl {{.*}} cbuffer S73cbuffer S {74 // CHECK: VarDecl {{.*}} S0 'hlsl_constant float'75 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 176 float S0 : packoffset(c0.y);77 // CHECK: VarDecl {{.*}} S1 'hlsl_constant ST'78 // CHECK: HLSLPackOffsetAttr {{.*}} 1 079 ST S1 : packoffset(c1);80 // CHECK: VarDecl {{.*}} S2 'hlsl_constant double2'81 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 2 082 double2 S2 : packoffset(c2);83}84 85struct ST2 {86 float s0;87 ST s1;88 half s2;89};90 91// CHECK: HLSLBufferDecl {{.*}} cbuffer S292cbuffer S2 {93 // CHECK: VarDecl {{.*}} S20 'hlsl_constant float'94 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 395 float S20 : packoffset(c0.a);96 // CHECK: VarDecl {{.*}} S21 'hlsl_constant ST2'97 // CHECK: HLSLPackOffsetAttr {{.*}} 1 098 ST2 S21 : packoffset(c1);99 // CHECK: VarDecl {{.*}} S22 'hlsl_constant half'100 // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 3 1101 half S22 : packoffset(c3.y);102}103