cbufferMinPrec.hlsl 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
  2. // CHECK: Minimum-precision data types
  3. // CHECK: cbuffer Foo
  4. // CHECK: {
  5. // CHECK: struct dx.alignment.legacy.Foo
  6. // CHECK: {
  7. // CHECK: min16float h1; ; Offset: 0
  8. // CHECK: float3 f3; ; Offset: 4
  9. // CHECK: min16float2 h2; ; Offset: 16
  10. // CHECK: float3 f3_1; ; Offset: 32
  11. // CHECK: float2 f2; ; Offset: 48
  12. // CHECK: min16float4 h4; ; Offset: 64
  13. // CHECK: min16float2 h2_1; ; Offset: 80
  14. // CHECK: min16float3 h3; ; Offset: 96
  15. // CHECK: double d1; ; Offset: 112
  16. // CHECK: } Foo; ; Offset: 0 Size: 120
  17. // CHECK: }
  18. // CHECK: %dx.types.CBufRet.f16 = type { half, half, half, half }
  19. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f16 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %Foo_cbuffer, i32 0) ; CBufferLoadLegacy(handle,regIndex)
  20. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 0
  21. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %Foo_cbuffer, i32 0) ; CBufferLoadLegacy(handle,regIndex)
  22. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f32 {{%[0-9]+}}, 1
  23. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f16 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %Foo_cbuffer, i32 1) ; CBufferLoadLegacy(handle,regIndex)
  24. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 0
  25. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 1
  26. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %Foo_cbuffer, i32 2) ; CBufferLoadLegacy(handle,regIndex)
  27. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f32 {{%[0-9]+}}, 2
  28. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %Foo_cbuffer, i32 3) ; CBufferLoadLegacy(handle,regIndex)
  29. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f32 {{%[0-9]+}}, 0
  30. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f16 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %Foo_cbuffer, i32 4) ; CBufferLoadLegacy(handle,regIndex)
  31. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 0
  32. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 1
  33. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 2
  34. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 3
  35. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f16 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %Foo_cbuffer, i32 5) ; CBufferLoadLegacy(handle,regIndex)
  36. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 0
  37. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 1
  38. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f16 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %Foo_cbuffer, i32 6) ; CBufferLoadLegacy(handle,regIndex)
  39. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 0
  40. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 1
  41. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f16 {{%[0-9]+}}, 2
  42. // CHECK: {{%[0-9]+}} = call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %Foo_cbuffer, i32 7) ; CBufferLoadLegacy(handle,regIndex)
  43. // CHECK: {{%[0-9]+}} = extractvalue %dx.types.CBufRet.f64 {{%[0-9]+}}, 0
  44. cbuffer Foo {
  45. min16float h1;
  46. float3 f3;
  47. min16float2 h2;
  48. float3 f3_1;
  49. float2 f2;
  50. min16float4 h4;
  51. min16float2 h2_1;
  52. min16float3 h3;
  53. double d1;
  54. }
  55. float4 main() : SV_Target {
  56. return h1 + f3.x + h2.x + h2.y + f3_1.z + f2.x + h4.x + h4.y + h4.z + h4.w + h2_1.x + h2_1.y + h3.x + h3.y + h3.z + d1;
  57. }