| ; RUN: opt -S -dxil-metadata-emit < %s | FileCheck %s --check-prefix=DXILMD |
| |
| target 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" |
| target triple = "dxil-unknown-shadermodel6.7-library" |
| |
| ; cbuffer D |
| ; { |
| ; |
| ; struct D |
| ; { |
| ; |
| ; int D0; ; Offset: 0 |
| ; struct struct.B |
| ; { |
| ; |
| ; double B0; ; Offset: 16 |
| ; float3 B1; ; Offset: 32 |
| ; float B2; ; Offset: 44 |
| ; double3 B3; ; Offset: 48 |
| ; half B4; ; Offset: 72 |
| ; double2 B5; ; Offset: 80 |
| ; float B6; ; Offset: 96 |
| ; half3 B7; ; Offset: 100 |
| ; half3 B8; ; Offset: 106 |
| ; |
| ; } D1; ; Offset: 16 |
| ; |
| ; half D2; ; Offset: 112 |
| ; struct struct.C |
| ; { |
| ; |
| ; struct struct.A |
| ; { |
| ; |
| ; float A0; ; Offset: 128 |
| ; double A1; ; Offset: 136 |
| ; float A2; ; Offset: 144 |
| ; half A3; ; Offset: 148 |
| ; int16_t A4; ; Offset: 150 |
| ; int64_t A5; ; Offset: 152 |
| ; int A6; ; Offset: 160 |
| ; |
| ; } C0; ; Offset: 128 |
| ; |
| ; float C1[1]; ; Offset: 176 |
| ; struct struct.B |
| ; { |
| ; |
| ; double B0; ; Offset: 192 |
| ; float3 B1; ; Offset: 208 |
| ; float B2; ; Offset: 220 |
| ; double3 B3; ; Offset: 224 |
| ; half B4; ; Offset: 248 |
| ; double2 B5; ; Offset: 256 |
| ; float B6; ; Offset: 272 |
| ; half3 B7; ; Offset: 276 |
| ; half3 B8; ; Offset: 282 |
| ; |
| ; } C2[2];; ; Offset: 192 |
| ; |
| ; half C3; ; Offset: 384 |
| ; |
| ; } D3; ; Offset: 128 |
| ; |
| ; double D4; ; Offset: 392 |
| ; |
| ; } D; ; Offset: 0 Size: 400 |
| |
| |
| ; Make sure the size is 400 |
| ; DXILMD:!{i32 0, ptr @D.cb., !"", i32 0, i32 1, i32 1, i32 400} |
| |
| |
| %struct.B = type <{ double, <3 x float>, float, <3 x double>, half, <2 x double>, float, <3 x half>, <3 x half> }> |
| %struct.C = type <{ %struct.A, [1 x float], [2 x %struct.B], half }> |
| %struct.A = type <{ float, double, float, half, i16, i64, i32 }> |
| |
| @D.cb. = external local_unnamed_addr constant { i32, %struct.B, half, %struct.C, double } |
| |
| !hlsl.cbufs = !{!0} |
| !0 = !{ptr @D.cb., !"D.cb.ty", i32 13, i32 1, i32 0} |