Explorar o código

Preserve denorms for frc on half inputs, and fix sqrt(-denorm) for float (#1042)

Young Kim %!s(int64=7) %!d(string=hai) anos
pai
achega
6f2aaa6ab3

+ 3 - 5
tools/clang/unittests/HLSL/ShaderOpArithTable.xml

@@ -514,7 +514,7 @@
             <Parameter Name="Validation.Expected1">
                 <Value>NaN</Value>
                 <Value>NaN</Value>
-                <Value>NaN</Value>
+                <Value>-0</Value>
                 <Value>-0</Value>
                 <Value>0</Value>
                 <Value>0</Value>
@@ -1867,10 +1867,9 @@
             <Parameter Name="Validation.Input1">
                 <Value>NaN</Value>
                 <Value>-Inf</Value>
-                <Value>-denorm</Value>
+                <Value>0x03FF</Value>
                 <Value>-0</Value>
                 <Value>0</Value>
-                <Value>denorm</Value>
                 <Value>Inf</Value>
                 <Value>-1</Value>
                 <Value>2.719</Value>
@@ -1880,8 +1879,7 @@
             <Parameter Name="Validation.Expected1">
                 <Value>NaN</Value>
                 <Value>NaN</Value>
-                <Value>0</Value>
-                <Value>0</Value>
+                <Value>0x03FF</Value>
                 <Value>0</Value>
                 <Value>0</Value>
                 <Value>NaN</Value>

+ 3 - 3
utils/hct/hctdb_test.py

@@ -642,10 +642,10 @@ def add_test_cases():
         'NaN', 'NaN', '0', '0', '0', '0', 'NaN', '0', '0.718280', '0.599976',
         '0.611'
     ]], "unary float", "frac",
-        half_inputs=[['NaN', '-Inf', '-denorm', '-0', '0', 'denorm', 'Inf', '-1', '2.719',
+        half_inputs=[['NaN', '-Inf', '0x03FF', '-0', '0', 'Inf', '-1', '2.719',
         '1000.5', '0xC764']],
         half_outputs=[[
-         'NaN', 'NaN', '0', '0', '0', '0', 'NaN', '0', '0.719', '0.5',
+         'NaN', 'NaN', '0x03FF', '0', '0', 'NaN', '0', '0.719', '0.5',
         '0x38E1']])
     add_test_case_float_half('Log', ['Log'], 'Relative', 21, [[
         'NaN', '-Inf', '-denorm', '-0', '0', 'denorm', 'Inf', '-1',
@@ -664,7 +664,7 @@ def add_test_cases():
         'NaN', '-Inf', '-denorm', '-0', '0', 'denorm', 'Inf', '-1', '2',
         '16.0', '256.0'
     ]], [[
-        'NaN', 'NaN', 'NaN', '-0', '0', '0', 'Inf', 'NaN', '1.41421356237',
+        'NaN', 'NaN', '-0', '-0', '0', '0', 'Inf', 'NaN', '1.41421356237',
         '4.0', '16.0'
     ]], "unary float", "sqrt",
     half_inputs=[['NaN', '-Inf', '-denorm', '-0', '0', '0x03FF', 'Inf', '-1', '2', '16.0', '256.0']],