llvm / llvm/offload-test-suite
Add test for clip
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 18
- Forks
- 39
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 40
Description
> Note: This test is parented to the matrix implementation issue because the [original implementation](https://github.com/llvm/llvm-project/issues/99093) is closed.
https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-clip
https://github.com/llvm/llvm-project/blob/a9032712c453bda70449dedcaf00bead0fea6e88/clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h#L678
In Test\Feature\HLSLLib create:
- [ ] Test for 32 bit types (< intrinsic >.32.test) (float only)
Matrix tests are also needed:
- [ ] https://github.com/llvm/wg-hlsl/issues/388
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 In : register(t0);
RWStructuredBuffer 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
```
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Create the test under Test\Feature\HLSLLib, using the linked HLSL clip documentation and hlsl_alias_intrinsics.h entry as references. Follow the shown source, YAML, and RUN portions, adapting them for the 32-bit float clip intrinsic, then run the test through the provided dxc_target and offloader commands. Done means the scalar float case is covered and the test passes.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics, testing
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100