Skip to content

Commit 913c363

Browse files
committed
add denormal test cases
1 parent d0cdcaf commit 913c363

File tree

2 files changed

+40
-11
lines changed

2 files changed

+40
-11
lines changed

test/Feature/HLSLLib/distance.32.test

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ void main() {
1919
// distance({0.0, 0.0, 0.0, 0.0}, {3.0, 4.0, 12.0, 84.0}) = 85.0
2020
float R3 = distance(X[0].xyzw, Y[0].xyzw);
2121
Result[3] = R3;
22+
23+
// test denormal cases
24+
// distance(inf, 1.0) = inf
25+
Result[4] = distance(X[1].x, Y[1].x);
26+
// distance(NaN, 1.0) = NaN
27+
Result[5] = distance(X[1].y, Y[1].y);
28+
// distance(-inf, 1.0) = inf
29+
Result[6] = distance(X[1].z, Y[1].z);
30+
// distance(inf, NaN) = NaN
31+
Result[7] = distance(X[1].w, Y[1].w);
32+
// distance({inf, NaN, -inf, inf}, {1.0, 1.0, 1.0, NaN}) = NaN
33+
Result[8] = distance(X[1].xyzw, Y[1].xyzw);
2234
}
2335

2436
//--- pipeline.yaml
@@ -32,22 +44,23 @@ Buffers:
3244
- Name: X
3345
Format: Float32
3446
Stride: 16
35-
Data: [ 0.0, 0.0, 0.0, 0.0 ]
47+
Data: [ 0.0, 0.0, 0.0, 0.0, inf, NaN, -inf, inf ]
3648
- Name: Y
3749
Format: Float32
3850
Stride: 16
39-
Data: [ 3.0, 4.0, 12.0, 84.0 ]
51+
Data: [ 3.0, 4.0, 12.0, 84.0, 1.0, 1.0, 1.0, NaN ]
4052
- Name: Result
4153
Format: Float32
4254
Stride: 4
43-
ZeroInitSize: 16
55+
ZeroInitSize: 36
4456
- Name: ExpectedResult
4557
Format: Float32
4658
Stride: 4
47-
Data: [ 3.0, 5.0, 13.0, 85.0 ]
59+
Data: [ 3.0, 5.0, 13.0, 85.0, inf, NaN, inf, NaN, NaN ]
4860
Results:
4961
- Result: CheckResult
50-
Rule: BufferExact
62+
Rule: BufferFloatULP
63+
ULPT: 1
5164
Actual: Result
5265
Expected: ExpectedResult
5366
DescriptorSets:

test/Feature/HLSLLib/distance.fp16.test

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ void main() {
1919
// distance({0.0, 0.0, 0.0, 0.0}, {3.0, 4.0, 12.0, 84.0}) = 85.0
2020
half R3 = distance(X[0].xyzw, Y[0].xyzw);
2121
Result[3] = R3;
22+
23+
// test denormal cases
24+
// distance(inf, 1.0) = inf
25+
Result[4] = distance(X[1].x, Y[1].x);
26+
27+
// distance(NaN, 1.0) = NaN
28+
Result[5] = distance(X[1].y, Y[1].y);
29+
30+
// distance(-inf, 1.0) = inf
31+
Result[6] = distance(X[1].z, Y[1].z);
32+
33+
// distance(inf, NaN) = NaN
34+
Result[7] = distance(X[1].w, Y[1].w);
35+
36+
// distance({inf, NaN, -inf, inf}, {1.0, 1.0, 1.0, NaN}) = NaN
37+
Result[8] = distance(X[1].xyzw, Y[1].xyzw);
2238
}
2339

2440
//--- pipeline.yaml
@@ -32,23 +48,23 @@ Buffers:
3248
- Name: X
3349
Format: Float16
3450
Stride: 8
35-
Data: [ 0x0000, 0x0000, 0x0000, 0x0000 ]
51+
Data: [ 0x0000, 0x0000, 0x0000, 0x0000, 0x7C00, 0x7E00, 0xFC00, 0x7C00 ]
3652
- Name: Y
3753
Format: Float16
3854
Stride: 8
39-
Data: [ 0x4200, 0x4400, 0x4a00, 0x5540 ]
55+
Data: [ 0x4200, 0x4400, 0x4a00, 0x5540, 0x003C, 0x003C, 0x003C, 0x7FFF ]
4056
- Name: Result
4157
Format: Float16
4258
Stride: 2
43-
ZeroInitSize: 8
59+
ZeroInitSize: 24
4460
- Name: ExpectedResult
4561
Format: Float16
4662
Stride: 2
47-
Data: [ 0x4200, 0x4500, 0x4a80, 0x5550 ]
63+
Data: [ 0x4200, 0x4500, 0x4a80, 0x5550, 0x7C00, 0x7FFF, 0x7C00, 0x7FFF, 0x7FFF, 0x0, 0x0, 0x0 ]
4864
Results:
4965
- Result: CheckResult
50-
Rule: BufferFloatEpsilon
51-
Epsilon: 0.1
66+
Rule: BufferFloatULP
67+
ULPT: 1
5268
Actual: Result
5369
Expected: ExpectedResult
5470
DescriptorSets:

0 commit comments

Comments
 (0)