xref: /llvm-project/clang/test/ParserHLSL/bitfields.hlsl (revision c50ef30cce32b8e864b90a4ca27c68882d46a19c)
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -ast-dump -x hlsl -o - %s | FileCheck %s
2
3
4struct MyBitFields {
5  // CHECK: FieldDecl 0x{{[0-9a-f]+}} <line:9:3, col:25> col:16 referenced field1 'unsigned int'
6  // CHECK:-ConstantExpr 0x{{[0-9a-f]+}} <col:25> 'int'
7  // CHECK:-value: Int 3
8  // CHECK:-IntegerLiteral 0x{{[0-9a-f]+}} <col:25> 'int' 3
9  unsigned int field1 : 3; // 3 bits for field1
10
11  // CHECK:FieldDecl 0x{{[0-9a-f]+}} <line:15:3, col:25> col:16 referenced field2 'unsigned int'
12  // CHECK:-ConstantExpr 0x{{[0-9a-f]+}} <col:25> 'int'
13  // CHECK:-value: Int 4
14  // CHECK:-IntegerLiteral 0x{{[0-9a-f]+}} <col:25> 'int' 4
15  unsigned int field2 : 4; // 4 bits for field2
16
17  // CHECK:FieldDecl 0x{{[0-9a-f]+}} <line:21:3, col:16> col:7 field3 'int'
18  // CHECK:-ConstantExpr 0x{{[0-9a-f]+}} <col:16> 'int'
19  // CHECK:-value: Int 5
20  // CHECK:-IntegerLiteral 0x{{[0-9a-f]+}} <col:16> 'int' 5
21  int field3 : 5;          // 5 bits for field3 (signed)
22};
23
24
25
26[numthreads(1,1,1)]
27void main() {
28  MyBitFields m;
29  m.field1 = 4;
30  m.field2 = m.field1*2;
31}