@@ -19,6 +19,22 @@ void main() {
19
19
// distance({0.0, 0.0, 0.0, 0.0}, {3.0, 4.0, 12.0, 84.0}) = 85.0
20
20
half R3 = distance(X[0].xyzw, Y[0].xyzw);
21
21
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);
22
38
}
23
39
24
40
//--- pipeline.yaml
@@ -32,23 +48,23 @@ Buffers:
32
48
- Name: X
33
49
Format: Float16
34
50
Stride: 8
35
- Data: [ 0x0000, 0x0000, 0x0000, 0x0000 ]
51
+ Data: [ 0x0000, 0x0000, 0x0000, 0x0000, 0x7C00, 0x7E00, 0xFC00, 0x7C00 ]
36
52
- Name: Y
37
53
Format: Float16
38
54
Stride: 8
39
- Data: [ 0x4200, 0x4400, 0x4a00, 0x5540 ]
55
+ Data: [ 0x4200, 0x4400, 0x4a00, 0x5540, 0x003C, 0x003C, 0x003C, 0x7FFF ]
40
56
- Name: Result
41
57
Format: Float16
42
58
Stride: 2
43
- ZeroInitSize: 8
59
+ ZeroInitSize: 24
44
60
- Name: ExpectedResult
45
61
Format: Float16
46
62
Stride: 2
47
- Data: [ 0x4200, 0x4500, 0x4a80, 0x5550 ]
63
+ Data: [ 0x4200, 0x4500, 0x4a80, 0x5550, 0x7C00, 0x7FFF, 0x7C00, 0x7FFF, 0x7FFF, 0x0, 0x0, 0x0 ]
48
64
Results:
49
65
- Result: CheckResult
50
- Rule: BufferFloatEpsilon
51
- Epsilon: 0. 1
66
+ Rule: BufferFloatULP
67
+ ULPT: 1
52
68
Actual: Result
53
69
Expected: ExpectedResult
54
70
DescriptorSets:
0 commit comments