DebugBasic.hlsl 1.6 KB

1234567891011121314151617181920212223242526272829
  1. // RUN: %dxc -Emain -Tps_6_0 %s | %opt -S -hlsl-dxil-debug-instrumentation | %FileCheck %s
  2. // Check that the basic starting header is present:
  3. // CHECK: %PIX_DebugUAV_Handle = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 0, i1 false)
  4. // CHECK: %XPos = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  5. // CHECK: %YPos = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  6. // CHECK: %XIndex = fptoui float %XPos to i32
  7. // CHECK: %YIndex = fptoui float %YPos to i32
  8. // CHECK: %CompareToX = icmp eq i32 %XIndex, 0
  9. // CHECK: %CompareToY = icmp eq i32 %YIndex, 0
  10. // CHECK: %ComparePos = and i1 %CompareToX, %CompareToY
  11. // CHECK: %OffsetMultiplicand = zext i1 %ComparePos to i32
  12. // CHECK: %ComplementOfMultiplicand = sub i32 1, %OffsetMultiplicand
  13. // CHECK: %OffsetAddend = mul i32 983040, %ComplementOfMultiplicand
  14. // CHECK: %IncrementForThisInvocation = mul i32 8, %OffsetMultiplicand
  15. // Check the first instruction was instrumented:
  16. // CHECK: %UAVIncResult = call i32 @dx.op.atomicBinOp.i32(i32 78, %dx.types.Handle %PIX_DebugUAV_Handle, i32 0, i32 0, i32 undef, i32 undef, i32 %IncrementForThisInvocation)
  17. // CHECK: %MaskedForUAVLimit = and i32 %UAVIncResult, 983039
  18. // CHECK: %MultipliedForInterest = mul i32 %MaskedForUAVLimit, %OffsetMultiplicand
  19. // CHECK: %AddedForInterest = add i32 %MultipliedForInterest, %OffsetAddend
  20. // CHECK: call void @dx.op.bufferStore.i32(i32 69, %dx.types.Handle %PIX_DebugUAV_Handle, i32 %AddedForInterest, i32 undef, i32 0, i32 undef, i32 undef, i32 undef, i8 1)
  21. [RootSignature("")]
  22. float4 main() : SV_Target {
  23. return float4(0,0,0,0);
  24. }