cast.flat-conversion.struct.hlsl 547 B

12345678910111213141516171819202122232425
  1. // Run: %dxc -T ps_6_0 -E main
  2. // Compositing a struct by casting from its single member
  3. struct S {
  4. float4 val;
  5. };
  6. struct T {
  7. S val;
  8. };
  9. float4 main(float4 a: A) : SV_Target {
  10. // CHECK: [[a:%\d+]] = OpLoad %v4float %a
  11. // CHECK-NEXT: [[s:%\d+]] = OpCompositeConstruct %S [[a]]
  12. // CHECK-NEXT: OpStore %s [[s]]
  13. S s = (S)a;
  14. // CHECK: [[s:%\d+]] = OpLoad %S %s
  15. // CHECK-NEXT: [[t:%\d+]] = OpCompositeConstruct %T [[s]]
  16. // CHECK-NEXT: OpStore %t [[t]]
  17. T t = (T)s;
  18. return s.val + t.val.val;
  19. }