Explorar el Código

Fix sqrt,rsqrt and ulp test for half (#1054)

Young Kim hace 7 años
padre
commit
3400911ca7

+ 1 - 1
tools/clang/unittests/HLSL/HlslTestUtils.h

@@ -380,7 +380,7 @@ inline bool CompareHalfULP(const uint16_t &fsrc, const uint16_t &fref, float ULP
   if (isnanFloat16(fsrc))
     return isnanFloat16(fref);
   // 16-bit floating point numbers must preserve denorms
-  int diff = *((DWORD *)&fsrc) - *((DWORD *)&fref);
+  int diff = fsrc - fref;
   unsigned int uDiff = diff < 0 ? -diff : diff;
   return uDiff <= (unsigned int)ULPTolerance;
 }

+ 2 - 2
tools/clang/unittests/HLSL/ShaderOpArithTable.xml

@@ -2085,7 +2085,7 @@
                 <Value>NaN</Value>
                 <Value>-Inf</Value>
                 <Value>Inf</Value>
-                <Value>0x5800</Value>
+                <Value>0x5801</Value>
                 <Value>0</Value>
                 <Value>NaN</Value>
                 <Value>0.25</Value>
@@ -2126,7 +2126,7 @@
                 <Value>NaN</Value>
                 <Value>NaN</Value>
                 <Value>NaN</Value>
-                <Value>0</Value>
+                <Value>-0</Value>
                 <Value>0</Value>
                 <Value>0x1FFF</Value>
                 <Value>Inf</Value>

+ 2 - 2
utils/hct/hctdb_test.py

@@ -668,7 +668,7 @@ def add_test_cases():
         '4.0', '16.0'
     ]], "unary float", "sqrt",
     half_inputs=[['NaN', '-Inf', '-denorm', '-0', '0', '0x03FF', 'Inf', '-1', '2', '16.0', '256.0']],
-    half_outputs=[['NaN', 'NaN', 'NaN', '0', '0', '0x1FFF', 'Inf', 'NaN', '1.41421', '4.0', '16.0']])
+    half_outputs=[['NaN', 'NaN', 'NaN', '-0', '0', '0x1FFF', 'Inf', 'NaN', '1.41421', '4.0', '16.0']])
     add_test_case_float_half('Rsqrt', ['Rsqrt'], 'ulp', 1, [[
         'NaN', '-Inf', '-denorm', '-0', '0', 'denorm', 'Inf', '-1', '16.0',
         '256.0', '65536.0'
@@ -679,7 +679,7 @@ def add_test_cases():
         'NaN', '-Inf', '-denorm', '-0', '0', '0x03FF', 'Inf', '-1', '16.0',
         '256.0', '0x7bff'
     ]], half_outputs=[[
-        'NaN', 'NaN', 'NaN', '-Inf', 'Inf', '0x5800', '0', 'NaN', '0.25',
+        'NaN', 'NaN', 'NaN', '-Inf', 'Inf', '0x5801', '0', 'NaN', '0.25',
         '0.0625', '0x1C00'
     ]])
     add_test_case_float_half('Round_ne', ['Round_ne'], 'Epsilon', 0, [[