xref: /llvm-project/llvm/test/CodeGen/DirectX/legacy_cb_layout_3.ll (revision 8107810cad24d41fe43c6777370c7b81ca83ad84)
1; RUN: opt -S -dxil-translate-metadata < %s | FileCheck %s --check-prefix=DXILMD
2
3target datalayout = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64"
4target triple = "dxil-unknown-shadermodel6.7-library"
5
6; cbuffer D
7; {
8;
9;   struct D
10;   {
11;
12;       int D0;                                       ; Offset:    0
13;       struct struct.B
14;       {
15;
16;           double B0;                                ; Offset:   16
17;           float3 B1;                                ; Offset:   32
18;           float B2;                                 ; Offset:   44
19;           double3 B3;                               ; Offset:   48
20;           half B4;                                  ; Offset:   72
21;           double2 B5;                               ; Offset:   80
22;           float B6;                                 ; Offset:   96
23;           half3 B7;                                 ; Offset:  100
24;           half3 B8;                                 ; Offset:  106
25;
26;       } D1;                                         ; Offset:   16
27;
28;       half D2;                                      ; Offset:  112
29;       struct struct.C
30;       {
31;
32;           struct struct.A
33;           {
34;
35;               float A0;                             ; Offset:  128
36;               double A1;                            ; Offset:  136
37;               float A2;                             ; Offset:  144
38;               half A3;                              ; Offset:  148
39;               int16_t A4;                           ; Offset:  150
40;               int64_t A5;                           ; Offset:  152
41;               int A6;                               ; Offset:  160
42;
43;           } C0;                                     ; Offset:  128
44;
45;           float C1[1];                              ; Offset:  176
46;           struct struct.B
47;           {
48;
49;               double B0;                            ; Offset:  192
50;               float3 B1;                            ; Offset:  208
51;               float B2;                             ; Offset:  220
52;               double3 B3;                           ; Offset:  224
53;               half B4;                              ; Offset:  248
54;               double2 B5;                           ; Offset:  256
55;               float B6;                             ; Offset:  272
56;               half3 B7;                             ; Offset:  276
57;               half3 B8;                             ; Offset:  282
58;
59;           } C2[2];;                                 ; Offset:  192
60;
61;           half C3;                                  ; Offset:  384
62;
63;       } D3;                                         ; Offset:  128
64;
65;       double D4;                                    ; Offset:  392
66;
67;   } D;                                              ; Offset:    0 Size:   400
68
69
70; Make sure the size is 400
71; DXILMD:!{i32 0, ptr @D.cb., !"", i32 0, i32 1, i32 1, i32 400}
72
73
74%struct.B = type <{ double, <3 x float>, float, <3 x double>, half, <2 x double>, float, <3 x half>, <3 x half> }>
75%struct.C = type <{ %struct.A, [1 x float], [2 x %struct.B], half }>
76%struct.A = type <{ float, double, float, half, i16, i64, i32 }>
77
78@D.cb. = external local_unnamed_addr constant { i32, %struct.B, half, %struct.C, double }
79
80!hlsl.cbufs = !{!0}
81!0 = !{ptr @D.cb., !"D.cb.ty", i32 13, i1 false, i32 1, i32 0}
82