Skip to content

Add test for sign #112

Open
Open
@llvm-beanz

Description

@llvm-beanz

https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-sign
https://github.com/llvm/llvm-project/blob/a9032712c453bda70449dedcaf00bead0fea6e88/clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h#L2663

In Test\Feature\HLSLLib create

  • Test for 16 bit int types (< intrinsic >.int16.test)
  • Test for Half type (< intrinsic >.fp16.test)
  • Test for 32 bit types (< intrinsic >.32.test)
  • Test for 64 bit int types (< intrinsic >.int64.test)
  • Test for Double type (< intrinsic >.fp64.test)

A .test file should contain

  • a source portion; If multiple .test files can use the same source; it can go in its own file and be referenced in the run portion of each .test file instead.
@@ -0,0 +1,54 @@
#--- source.hlsl

StructuredBuffer<float4> In : register(t0);
RWStructuredBuffer<float> Out : register(u1);

[numthreads(1,1,1)]
void main() {
// A single test can test for all scalar/vector length as shown here.
  Out[0] = length(In[0]); // Test float4
  Out[1] = length(In[1].x); // Test float
  Out[2] = length(In[1].yzw); // Test float3
  Out[3] = length(In[1].yz); // Test float2
}
  • a yaml portion; If multiple .test files can use the same YAML, it can go in its own file and be referenced in the run portion of each .test file instead.
//--- pipeline.yaml

---
Shaders:
  - Stage: Compute
    Entry: main
    DispatchSize: [1, 1, 1]
Buffers:
  - Name: In
    Format: Float32
    Stride: 16
    Data: [ 4, 4, 4, 4, 3.14159, 0, 5, 12 ]
  - Name: Out
    Format: Float32
    Stride: 4
    ZeroInitSize: 12
  - Name: ExpectedOut # The result we expect
    Format: Float32
    Stride: 4
    Data: [ 8, 3.14159, 13, 5 ]
Results:  # A test might have more than 1 result.
  - Result: Test1
    Rule: BufferFuzzy # there is also a BufferExact rule
    ULPT: 1
    Actual: Out
    Expected: ExpectedOut
DescriptorSets:
  - Resources:
    - Name: In
      Kind: StructuredBuffer
      DirectXBinding:
        Register: 0
        Space: 0
      VulkanBinding:
        Binding: 0
    - Name: Out
      Kind: RWStructuredBuffer
      DirectXBinding:
        Register: 1
        Space: 0
      VulkanBinding:
        Binding: 1
...
#--- end
  • A run portion; which will be unique to each .test file.
# RUN: split-file %s %t
# RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl
# RUN: %offloader %t/pipeline.yaml %t.o 

Tests for 16 bit floating point should have a # REQUIRES: Half.
Tests for 16 bit integer should have a # REQUIRES: Int16.
Tests for 64 bit floating point should have a # REQUIRES: Double.
Tests for 64 bit integer should have a # REQUIRES: Int64.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Active

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions