precise_gvn.hlsl 542 B

12345678910111213141516171819202122232425262728293031
  1. // RUN: %dxc -E main -T vs_6_0 %s | FileCheck %s
  2. // Make sure that gvn preserves precise metadata when replacing instructions.
  3. // CHECK: @dx.op.dot4.f32{{.*}} !dx.precise
  4. struct VSIn
  5. {
  6. float4 Pos : P;
  7. float4 A : A;
  8. };
  9. struct VSOut
  10. {
  11. precise float4 Pos : SV_Position;
  12. float4 N : A;
  13. };
  14. [RootSignature("")]
  15. VSOut main(VSIn input)
  16. {
  17. float4 X = input.A * input.A;
  18. float4 Y = input.A + input.A;
  19. float4 R1 = mul(X, Y);
  20. float4 R2 = mul(X, Y);
  21. VSOut O;
  22. O.Pos = R1 * R1;
  23. O.N = R2;
  24. return O;
  25. }