Add asdouble, fma, & mad intrinsics and change profile to allow doubles when parsing...
authorLoopDawg <nospam@nowhere.net>
Wed, 22 Jun 2016 21:20:14 +0000 (15:20 -0600)
committerLoopDawg <nospam@nowhere.net>
Tue, 28 Jun 2016 21:38:38 +0000 (15:38 -0600)
13 files changed:
Test/baseResults/hlsl.intrinsics.double.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.intrinsics.negative.comp.out
Test/baseResults/hlsl.intrinsics.negative.frag.out
Test/baseResults/hlsl.intrinsics.negative.vert.out
Test/hlsl.intrinsics.double.frag [new file with mode: 0644]
Test/hlsl.intrinsics.negative.comp
Test/hlsl.intrinsics.negative.frag
Test/hlsl.intrinsics.negative.vert
glslang/Include/intermediate.h
glslang/MachineIndependent/ShaderLang.cpp
gtests/Hlsl.FromFile.cpp
hlsl/hlslParseHelper.cpp
hlsl/hlslParseables.cpp

diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
new file mode 100644 (file)
index 0000000..ebdbcac
--- /dev/null
@@ -0,0 +1,117 @@
+hlsl.intrinsics.double.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float)
+0:5    Function Parameters: 
+0:5      'inDV1a' (in double)
+0:5      'inDV1b' (in double)
+0:5      'inDV1c' (in double)
+0:5      'inDV2' (in 2-component vector of double)
+0:5      'inDV3' (in 3-component vector of double)
+0:5      'inDV4' (in 4-component vector of double)
+0:5      'inU1a' (in uint)
+0:5      'inU1b' (in uint)
+0:?     Sequence
+0:6      move second child to first child (temp double)
+0:6        'r00' (temp double)
+0:6        fma (global double)
+0:6          'inDV1a' (in double)
+0:6          'inDV1b' (in double)
+0:6          'inDV1c' (in double)
+0:7      move second child to first child (temp double)
+0:7        'r01' (temp double)
+0:7        uint64BitsToDouble (temp double)
+0:7          Construct uvec2 (temp 2-component vector of uint)
+0:7            'inU1a' (in uint)
+0:7            'inU1b' (in uint)
+0:9      Branch: Return with expression
+0:9        Constant:
+0:9          0.000000
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float)
+0:5    Function Parameters: 
+0:5      'inDV1a' (in double)
+0:5      'inDV1b' (in double)
+0:5      'inDV1c' (in double)
+0:5      'inDV2' (in 2-component vector of double)
+0:5      'inDV3' (in 3-component vector of double)
+0:5      'inDV4' (in 4-component vector of double)
+0:5      'inU1a' (in uint)
+0:5      'inU1b' (in uint)
+0:?     Sequence
+0:6      move second child to first child (temp double)
+0:6        'r00' (temp double)
+0:6        fma (global double)
+0:6          'inDV1a' (in double)
+0:6          'inDV1b' (in double)
+0:6          'inDV1c' (in double)
+0:7      move second child to first child (temp double)
+0:7        'r01' (temp double)
+0:7        uint64BitsToDouble (temp double)
+0:7          Construct uvec2 (temp 2-component vector of uint)
+0:7            'inU1a' (in uint)
+0:7            'inU1b' (in uint)
+0:9      Branch: Return with expression
+0:9        Constant:
+0:9          0.000000
+0:?   Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 30
+
+                              Capability Shader
+                              Capability Float64
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "PixelShaderFunction" 10 12 14 20 22
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 450
+                              Name 4  "PixelShaderFunction"
+                              Name 8  "r00"
+                              Name 10  "inDV1a"
+                              Name 12  "inDV1b"
+                              Name 14  "inDV1c"
+                              Name 17  "r01"
+                              Name 20  "inU1a"
+                              Name 22  "inU1b"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 64
+               7:             TypePointer Function 6(float)
+               9:             TypePointer Input 6(float)
+      10(inDV1a):      9(ptr) Variable Input
+      12(inDV1b):      9(ptr) Variable Input
+      14(inDV1c):      9(ptr) Variable Input
+              18:             TypeInt 32 0
+              19:             TypePointer Input 18(int)
+       20(inU1a):     19(ptr) Variable Input
+       22(inU1b):     19(ptr) Variable Input
+              24:             TypeVector 18(int) 2
+              27:             TypeFloat 32
+              28:   27(float) Constant 0
+4(PixelShaderFunction):           2 Function None 3
+               5:             Label
+          8(r00):      7(ptr) Variable Function
+         17(r01):      7(ptr) Variable Function
+              11:    6(float) Load 10(inDV1a)
+              13:    6(float) Load 12(inDV1b)
+              15:    6(float) Load 14(inDV1c)
+              16:    6(float) ExtInst 1(GLSL.std.450) 50(Fma) 11 13 15
+                              Store 8(r00) 16
+              21:     18(int) Load 20(inU1a)
+              23:     18(int) Load 22(inU1b)
+              25:   24(ivec2) CompositeConstruct 21 23
+              26:    6(float) Bitcast 25
+                              Store 17(r01) 26
+                              ReturnValue 28
+                              FunctionEnd
index 336f70d..b839322 100644 (file)
@@ -18,7 +18,6 @@ ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:23: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:24: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:25: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:26: 'fma' : no matching overloaded function found 
 ERROR: 0:27: 'fwidth' : no matching overloaded function found 
 ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found 
@@ -61,7 +60,6 @@ ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:84: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:85: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:86: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:87: 'fma' : no matching overloaded function found 
 ERROR: 0:88: 'fwidth' : no matching overloaded function found 
 ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found 
@@ -96,7 +94,6 @@ ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:129: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:130: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:131: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:132: 'fma' : no matching overloaded function found 
 ERROR: 0:133: 'fwidth' : no matching overloaded function found 
 ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found 
@@ -131,7 +128,6 @@ ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:174: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:175: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:176: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:177: 'fma' : no matching overloaded function found 
 ERROR: 0:178: 'fwidth' : no matching overloaded function found 
 ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found 
@@ -150,7 +146,7 @@ ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found
 ERROR: 0:193: 'noise' : no matching overloaded function found 
 ERROR: 0:194: 'reversebits' : no matching overloaded function found 
 ERROR: 0:195: 'transpose' : no matching overloaded function found 
-ERROR: 151 compilation errors.  No code generated.
+ERROR: 147 compilation errors.  No code generated.
 
 
 Shader version: 450
@@ -201,8 +197,6 @@ ERROR: node is still EOpNull!
 0:24        0.000000
 0:25      Constant:
 0:25        0.000000
-0:26      Constant:
-0:26        0.000000
 0:27      Constant:
 0:27        0.000000
 0:28      Constant:
@@ -307,8 +301,6 @@ ERROR: node is still EOpNull!
 0:85        0.000000
 0:86      Constant:
 0:86        0.000000
-0:87      Constant:
-0:87        0.000000
 0:88      Constant:
 0:88        0.000000
 0:89      Constant:
@@ -388,8 +380,6 @@ ERROR: node is still EOpNull!
 0:130        0.000000
 0:131      Constant:
 0:131        0.000000
-0:132      Constant:
-0:132        0.000000
 0:133      Constant:
 0:133        0.000000
 0:134      Constant:
@@ -470,8 +460,6 @@ ERROR: node is still EOpNull!
 0:175        0.000000
 0:176      Constant:
 0:176        0.000000
-0:177      Constant:
-0:177        0.000000
 0:178      Constant:
 0:178        0.000000
 0:179      Constant:
@@ -568,8 +556,6 @@ ERROR: node is still EOpNull!
 0:24        0.000000
 0:25      Constant:
 0:25        0.000000
-0:26      Constant:
-0:26        0.000000
 0:27      Constant:
 0:27        0.000000
 0:28      Constant:
@@ -674,8 +660,6 @@ ERROR: node is still EOpNull!
 0:85        0.000000
 0:86      Constant:
 0:86        0.000000
-0:87      Constant:
-0:87        0.000000
 0:88      Constant:
 0:88        0.000000
 0:89      Constant:
@@ -755,8 +739,6 @@ ERROR: node is still EOpNull!
 0:130        0.000000
 0:131      Constant:
 0:131        0.000000
-0:132      Constant:
-0:132        0.000000
 0:133      Constant:
 0:133        0.000000
 0:134      Constant:
@@ -837,8 +819,6 @@ ERROR: node is still EOpNull!
 0:175        0.000000
 0:176      Constant:
 0:176        0.000000
-0:177      Constant:
-0:177        0.000000
 0:178      Constant:
 0:178        0.000000
 0:179      Constant:
index ebb651e..22c1a87 100644 (file)
@@ -8,7 +8,6 @@ ERROR: 0:10: 'determinant' : no matching overloaded function found
 ERROR: 0:12: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:13: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:14: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:15: 'fma' : no matching overloaded function found 
 ERROR: 0:23: 'length' : no matching overloaded function found 
 ERROR: 0:24: 'msad4' : no matching overloaded function found 
 ERROR: 0:25: 'normalize' : no matching overloaded function found 
@@ -27,7 +26,6 @@ ERROR: 0:51: 'determinant' : no matching overloaded function found
 ERROR: 0:52: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:53: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:54: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:55: 'fma' : no matching overloaded function found 
 ERROR: 0:56: 'reversebits' : no matching overloaded function found 
 ERROR: 0:57: 'transpose' : no matching overloaded function found 
 ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found 
@@ -37,7 +35,6 @@ ERROR: 0:67: 'determinant' : no matching overloaded function found
 ERROR: 0:68: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:69: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:70: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:71: 'fma' : no matching overloaded function found 
 ERROR: 0:72: 'reversebits' : no matching overloaded function found 
 ERROR: 0:73: 'transpose' : no matching overloaded function found 
 ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found 
@@ -47,52 +44,48 @@ ERROR: 0:84: 'determinant' : no matching overloaded function found
 ERROR: 0:85: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:86: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:87: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:88: 'fma' : no matching overloaded function found 
 ERROR: 0:89: 'reversebits' : no matching overloaded function found 
 ERROR: 0:90: 'transpose' : no matching overloaded function found 
-ERROR: 0:118: 'countbits' : no matching overloaded function found 
-ERROR: 0:118: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:118: 'cross' : no matching overloaded function found 
-ERROR: 0:118: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:118: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:118: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:118: 'fma' : no matching overloaded function found 
-ERROR: 0:118: 'reversebits' : no matching overloaded function found 
-ERROR: 0:118: 'length' : no matching overloaded function found 
-ERROR: 0:118: 'noise' : no matching overloaded function found 
-ERROR: 0:118: 'normalize' : no matching overloaded function found 
-ERROR: 0:118: 'reflect' : no matching overloaded function found 
-ERROR: 0:118: 'refract' : no matching overloaded function found 
-ERROR: 0:118: 'reversebits' : no matching overloaded function found 
-ERROR: 0:126: 'countbits' : no matching overloaded function found 
-ERROR: 0:126: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:126: 'cross' : no matching overloaded function found 
-ERROR: 0:126: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:126: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:126: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:126: 'fma' : no matching overloaded function found 
-ERROR: 0:126: 'reversebits' : no matching overloaded function found 
-ERROR: 0:126: 'length' : no matching overloaded function found 
-ERROR: 0:126: 'noise' : no matching overloaded function found 
-ERROR: 0:126: 'normalize' : no matching overloaded function found 
-ERROR: 0:126: 'reflect' : no matching overloaded function found 
-ERROR: 0:126: 'refract' : no matching overloaded function found 
-ERROR: 0:126: 'reversebits' : no matching overloaded function found 
-ERROR: 0:134: 'countbits' : no matching overloaded function found 
-ERROR: 0:134: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:134: 'cross' : no matching overloaded function found 
-ERROR: 0:134: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:134: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:134: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:134: 'fma' : no matching overloaded function found 
-ERROR: 0:134: 'reversebits' : no matching overloaded function found 
-ERROR: 0:134: 'length' : no matching overloaded function found 
-ERROR: 0:134: 'noise' : no matching overloaded function found 
-ERROR: 0:134: 'normalize' : no matching overloaded function found 
-ERROR: 0:134: 'reflect' : no matching overloaded function found 
-ERROR: 0:134: 'refract' : no matching overloaded function found 
-ERROR: 0:134: 'reversebits' : no matching overloaded function found 
-ERROR: 93 compilation errors.  No code generated.
+ERROR: 0:117: 'countbits' : no matching overloaded function found 
+ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:117: 'cross' : no matching overloaded function found 
+ERROR: 0:117: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:117: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:117: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:117: 'reversebits' : no matching overloaded function found 
+ERROR: 0:117: 'length' : no matching overloaded function found 
+ERROR: 0:117: 'noise' : no matching overloaded function found 
+ERROR: 0:117: 'normalize' : no matching overloaded function found 
+ERROR: 0:117: 'reflect' : no matching overloaded function found 
+ERROR: 0:117: 'refract' : no matching overloaded function found 
+ERROR: 0:117: 'reversebits' : no matching overloaded function found 
+ERROR: 0:125: 'countbits' : no matching overloaded function found 
+ERROR: 0:125: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:125: 'cross' : no matching overloaded function found 
+ERROR: 0:125: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:125: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:125: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:125: 'reversebits' : no matching overloaded function found 
+ERROR: 0:125: 'length' : no matching overloaded function found 
+ERROR: 0:125: 'noise' : no matching overloaded function found 
+ERROR: 0:125: 'normalize' : no matching overloaded function found 
+ERROR: 0:125: 'reflect' : no matching overloaded function found 
+ERROR: 0:125: 'refract' : no matching overloaded function found 
+ERROR: 0:125: 'reversebits' : no matching overloaded function found 
+ERROR: 0:133: 'countbits' : no matching overloaded function found 
+ERROR: 0:133: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:133: 'cross' : no matching overloaded function found 
+ERROR: 0:133: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:133: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:133: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:133: 'reversebits' : no matching overloaded function found 
+ERROR: 0:133: 'length' : no matching overloaded function found 
+ERROR: 0:133: 'noise' : no matching overloaded function found 
+ERROR: 0:133: 'normalize' : no matching overloaded function found 
+ERROR: 0:133: 'reflect' : no matching overloaded function found 
+ERROR: 0:133: 'refract' : no matching overloaded function found 
+ERROR: 0:133: 'reversebits' : no matching overloaded function found 
+ERROR: 86 compilation errors.  No code generated.
 
 
 Shader version: 450
@@ -123,8 +116,6 @@ ERROR: node is still EOpNull!
 0:13        0.000000
 0:14      Constant:
 0:14        0.000000
-0:15      Constant:
-0:15        0.000000
 0:23      Constant:
 0:23        0.000000
 0:24      Constant:
@@ -181,8 +172,6 @@ ERROR: node is still EOpNull!
 0:53        0.000000
 0:54      Constant:
 0:54        0.000000
-0:55      Constant:
-0:55        0.000000
 0:56      Constant:
 0:56        0.000000
 0:57      Constant:
@@ -212,8 +201,6 @@ ERROR: node is still EOpNull!
 0:69        0.000000
 0:70      Constant:
 0:70        0.000000
-0:71      Constant:
-0:71        0.000000
 0:72      Constant:
 0:72        0.000000
 0:73      Constant:
@@ -223,7 +210,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:115  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:114  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' (in 4-component vector of float)
 0:80      'inF1' (in 4-component vector of float)
@@ -244,8 +231,6 @@ ERROR: node is still EOpNull!
 0:86        0.000000
 0:87      Constant:
 0:87        0.000000
-0:88      Constant:
-0:88        0.000000
 0:89      Constant:
 0:89        0.000000
 0:90      Constant:
@@ -256,81 +241,77 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:123  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:116    Function Parameters: 
-0:116      'inF0' (in 2X2 matrix of float)
-0:116      'inF1' (in 2X2 matrix of float)
-0:116      'inF2' (in 2X2 matrix of float)
+0:122  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:115    Function Parameters: 
+0:115      'inF0' (in 2X2 matrix of float)
+0:115      'inF1' (in 2X2 matrix of float)
+0:115      'inF2' (in 2X2 matrix of float)
 0:?     Sequence
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:120      Branch: Return with expression
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:119      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:131  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:124    Function Parameters: 
-0:124      'inF0' (in 3X3 matrix of float)
-0:124      'inF1' (in 3X3 matrix of float)
-0:124      'inF2' (in 3X3 matrix of float)
+0:130  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:123    Function Parameters: 
+0:123      'inF0' (in 3X3 matrix of float)
+0:123      'inF1' (in 3X3 matrix of float)
+0:123      'inF2' (in 3X3 matrix of float)
 0:?     Sequence
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:128      Branch: Return with expression
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:127      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -341,41 +322,39 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:138  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:132    Function Parameters: 
-0:132      'inF0' (in 4X4 matrix of float)
-0:132      'inF1' (in 4X4 matrix of float)
-0:132      'inF2' (in 4X4 matrix of float)
+0:137  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:131    Function Parameters: 
+0:131      'inF0' (in 4X4 matrix of float)
+0:131      'inF1' (in 4X4 matrix of float)
+0:131      'inF2' (in 4X4 matrix of float)
 0:?     Sequence
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:136      Branch: Return with expression
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:135      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -427,8 +406,6 @@ ERROR: node is still EOpNull!
 0:13        0.000000
 0:14      Constant:
 0:14        0.000000
-0:15      Constant:
-0:15        0.000000
 0:23      Constant:
 0:23        0.000000
 0:24      Constant:
@@ -485,8 +462,6 @@ ERROR: node is still EOpNull!
 0:53        0.000000
 0:54      Constant:
 0:54        0.000000
-0:55      Constant:
-0:55        0.000000
 0:56      Constant:
 0:56        0.000000
 0:57      Constant:
@@ -516,8 +491,6 @@ ERROR: node is still EOpNull!
 0:69        0.000000
 0:70      Constant:
 0:70        0.000000
-0:71      Constant:
-0:71        0.000000
 0:72      Constant:
 0:72        0.000000
 0:73      Constant:
@@ -527,7 +500,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:115  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:114  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' (in 4-component vector of float)
 0:80      'inF1' (in 4-component vector of float)
@@ -548,8 +521,6 @@ ERROR: node is still EOpNull!
 0:86        0.000000
 0:87      Constant:
 0:87        0.000000
-0:88      Constant:
-0:88        0.000000
 0:89      Constant:
 0:89        0.000000
 0:90      Constant:
@@ -560,81 +531,77 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:123  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:116    Function Parameters: 
-0:116      'inF0' (in 2X2 matrix of float)
-0:116      'inF1' (in 2X2 matrix of float)
-0:116      'inF2' (in 2X2 matrix of float)
+0:122  Function Definition: PixelShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:115    Function Parameters: 
+0:115      'inF0' (in 2X2 matrix of float)
+0:115      'inF1' (in 2X2 matrix of float)
+0:115      'inF2' (in 2X2 matrix of float)
 0:?     Sequence
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:118      Constant:
-0:118        0.000000
-0:120      Branch: Return with expression
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:117      Constant:
+0:117        0.000000
+0:119      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:131  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:124    Function Parameters: 
-0:124      'inF0' (in 3X3 matrix of float)
-0:124      'inF1' (in 3X3 matrix of float)
-0:124      'inF2' (in 3X3 matrix of float)
+0:130  Function Definition: PixelShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:123    Function Parameters: 
+0:123      'inF0' (in 3X3 matrix of float)
+0:123      'inF1' (in 3X3 matrix of float)
+0:123      'inF2' (in 3X3 matrix of float)
 0:?     Sequence
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:126      Constant:
-0:126        0.000000
-0:128      Branch: Return with expression
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:125      Constant:
+0:125        0.000000
+0:127      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -645,41 +612,39 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:138  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:132    Function Parameters: 
-0:132      'inF0' (in 4X4 matrix of float)
-0:132      'inF1' (in 4X4 matrix of float)
-0:132      'inF2' (in 4X4 matrix of float)
+0:137  Function Definition: PixelShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:131    Function Parameters: 
+0:131      'inF0' (in 4X4 matrix of float)
+0:131      'inF1' (in 4X4 matrix of float)
+0:131      'inF2' (in 4X4 matrix of float)
 0:?     Sequence
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:134      Constant:
-0:134        0.000000
-0:136      Branch: Return with expression
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:133      Constant:
+0:133        0.000000
+0:135      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
index b24ef69..3dd08c1 100644 (file)
@@ -23,7 +23,6 @@ ERROR: 0:38: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:39: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:40: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:41: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:42: 'fma' : no matching overloaded function found 
 ERROR: 0:43: 'fwidth' : no matching overloaded function found 
 ERROR: 0:44: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:45: 'InterlockedAdd' : no matching overloaded function found 
@@ -68,7 +67,6 @@ ERROR: 0:101: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:102: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:103: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:104: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:105: 'fma' : no matching overloaded function found 
 ERROR: 0:106: 'fwidth' : no matching overloaded function found 
 ERROR: 0:107: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:108: 'InterlockedAdd' : no matching overloaded function found 
@@ -103,7 +101,6 @@ ERROR: 0:146: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:147: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:148: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:149: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:150: 'fma' : no matching overloaded function found 
 ERROR: 0:151: 'fwidth' : no matching overloaded function found 
 ERROR: 0:152: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:153: 'InterlockedAdd' : no matching overloaded function found 
@@ -138,7 +135,6 @@ ERROR: 0:191: 'EvaluateAttributeSnapped' : no matching overloaded function found
 ERROR: 0:192: 'f16tof32' : no matching overloaded function found 
 ERROR: 0:193: 'firstbithigh' : no matching overloaded function found 
 ERROR: 0:194: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:195: 'fma' : no matching overloaded function found 
 ERROR: 0:196: 'fwidth' : no matching overloaded function found 
 ERROR: 0:197: 'InterlockedAdd' : no matching overloaded function found 
 ERROR: 0:198: 'InterlockedAdd' : no matching overloaded function found 
@@ -157,82 +153,79 @@ ERROR: 0:210: 'InterlockedXor' : no matching overloaded function found
 ERROR: 0:211: 'noise' : no matching overloaded function found 
 ERROR: 0:212: 'reversebits' : no matching overloaded function found 
 ERROR: 0:213: 'transpose' : no matching overloaded function found 
-ERROR: 0:254: 'countbits' : no matching overloaded function found 
-ERROR: 0:254: 'cross' : no matching overloaded function found 
-ERROR: 0:254: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:254: 'ddx' : no matching overloaded function found 
-ERROR: 0:254: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:254: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:254: 'ddy' : no matching overloaded function found 
-ERROR: 0:254: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:254: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:254: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:254: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:254: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:254: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:254: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:254: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:254: 'fma' : no matching overloaded function found 
-ERROR: 0:254: 'fwidth' : no matching overloaded function found 
-ERROR: 0:254: 'noise' : no matching overloaded function found 
-ERROR: 0:254: 'reversebits' : no matching overloaded function found 
-ERROR: 0:254: 'length' : no matching overloaded function found 
-ERROR: 0:254: 'noise' : no matching overloaded function found 
-ERROR: 0:254: 'normalize' : no matching overloaded function found 
-ERROR: 0:254: 'reflect' : no matching overloaded function found 
-ERROR: 0:254: 'refract' : no matching overloaded function found 
-ERROR: 0:254: 'reversebits' : no matching overloaded function found 
-ERROR: 0:262: 'countbits' : no matching overloaded function found 
-ERROR: 0:262: 'cross' : no matching overloaded function found 
-ERROR: 0:262: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:262: 'ddx' : no matching overloaded function found 
-ERROR: 0:262: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:262: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:262: 'ddy' : no matching overloaded function found 
-ERROR: 0:262: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:262: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:262: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:262: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:262: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:262: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:262: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:262: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:262: 'fma' : no matching overloaded function found 
-ERROR: 0:262: 'fwidth' : no matching overloaded function found 
-ERROR: 0:262: 'noise' : no matching overloaded function found 
-ERROR: 0:262: 'reversebits' : no matching overloaded function found 
-ERROR: 0:262: 'length' : no matching overloaded function found 
-ERROR: 0:262: 'noise' : no matching overloaded function found 
-ERROR: 0:262: 'normalize' : no matching overloaded function found 
-ERROR: 0:262: 'reflect' : no matching overloaded function found 
-ERROR: 0:262: 'refract' : no matching overloaded function found 
-ERROR: 0:262: 'reversebits' : no matching overloaded function found 
-ERROR: 0:270: 'countbits' : no matching overloaded function found 
-ERROR: 0:270: 'cross' : no matching overloaded function found 
-ERROR: 0:270: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
-ERROR: 0:270: 'ddx' : no matching overloaded function found 
-ERROR: 0:270: 'ddx_coarse' : no matching overloaded function found 
-ERROR: 0:270: 'ddx_fine' : no matching overloaded function found 
-ERROR: 0:270: 'ddy' : no matching overloaded function found 
-ERROR: 0:270: 'ddy_coarse' : no matching overloaded function found 
-ERROR: 0:270: 'ddy_fine' : no matching overloaded function found 
-ERROR: 0:270: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
-ERROR: 0:270: 'EvaluateAttributeAtSample' : no matching overloaded function found 
-ERROR: 0:270: 'EvaluateAttributeSnapped' : no matching overloaded function found 
-ERROR: 0:270: 'f16tof32' : no matching overloaded function found 
-ERROR: 0:270: 'firstbithigh' : no matching overloaded function found 
-ERROR: 0:270: 'firstbitlow' : no matching overloaded function found 
-ERROR: 0:270: 'fma' : no matching overloaded function found 
-ERROR: 0:270: 'fwidth' : no matching overloaded function found 
-ERROR: 0:270: 'noise' : no matching overloaded function found 
-ERROR: 0:270: 'reversebits' : no matching overloaded function found 
-ERROR: 0:270: 'length' : no matching overloaded function found 
-ERROR: 0:270: 'noise' : no matching overloaded function found 
-ERROR: 0:270: 'normalize' : no matching overloaded function found 
-ERROR: 0:270: 'reflect' : no matching overloaded function found 
-ERROR: 0:270: 'refract' : no matching overloaded function found 
-ERROR: 0:270: 'reversebits' : no matching overloaded function found 
-ERROR: 233 compilation errors.  No code generated.
+ERROR: 0:253: 'countbits' : no matching overloaded function found 
+ERROR: 0:253: 'cross' : no matching overloaded function found 
+ERROR: 0:253: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:253: 'ddx' : no matching overloaded function found 
+ERROR: 0:253: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:253: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:253: 'ddy' : no matching overloaded function found 
+ERROR: 0:253: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:253: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:253: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:253: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:253: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:253: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:253: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:253: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:253: 'fwidth' : no matching overloaded function found 
+ERROR: 0:253: 'noise' : no matching overloaded function found 
+ERROR: 0:253: 'reversebits' : no matching overloaded function found 
+ERROR: 0:253: 'length' : no matching overloaded function found 
+ERROR: 0:253: 'noise' : no matching overloaded function found 
+ERROR: 0:253: 'normalize' : no matching overloaded function found 
+ERROR: 0:253: 'reflect' : no matching overloaded function found 
+ERROR: 0:253: 'refract' : no matching overloaded function found 
+ERROR: 0:253: 'reversebits' : no matching overloaded function found 
+ERROR: 0:261: 'countbits' : no matching overloaded function found 
+ERROR: 0:261: 'cross' : no matching overloaded function found 
+ERROR: 0:261: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:261: 'ddx' : no matching overloaded function found 
+ERROR: 0:261: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:261: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:261: 'ddy' : no matching overloaded function found 
+ERROR: 0:261: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:261: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:261: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:261: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:261: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:261: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:261: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:261: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:261: 'fwidth' : no matching overloaded function found 
+ERROR: 0:261: 'noise' : no matching overloaded function found 
+ERROR: 0:261: 'reversebits' : no matching overloaded function found 
+ERROR: 0:261: 'length' : no matching overloaded function found 
+ERROR: 0:261: 'noise' : no matching overloaded function found 
+ERROR: 0:261: 'normalize' : no matching overloaded function found 
+ERROR: 0:261: 'reflect' : no matching overloaded function found 
+ERROR: 0:261: 'refract' : no matching overloaded function found 
+ERROR: 0:261: 'reversebits' : no matching overloaded function found 
+ERROR: 0:269: 'countbits' : no matching overloaded function found 
+ERROR: 0:269: 'cross' : no matching overloaded function found 
+ERROR: 0:269: 'D3DCOLORtoUBYTE4' : no matching overloaded function found 
+ERROR: 0:269: 'ddx' : no matching overloaded function found 
+ERROR: 0:269: 'ddx_coarse' : no matching overloaded function found 
+ERROR: 0:269: 'ddx_fine' : no matching overloaded function found 
+ERROR: 0:269: 'ddy' : no matching overloaded function found 
+ERROR: 0:269: 'ddy_coarse' : no matching overloaded function found 
+ERROR: 0:269: 'ddy_fine' : no matching overloaded function found 
+ERROR: 0:269: 'EvaluateAttributeAtCentroid' : no matching overloaded function found 
+ERROR: 0:269: 'EvaluateAttributeAtSample' : no matching overloaded function found 
+ERROR: 0:269: 'EvaluateAttributeSnapped' : no matching overloaded function found 
+ERROR: 0:269: 'f16tof32' : no matching overloaded function found 
+ERROR: 0:269: 'firstbithigh' : no matching overloaded function found 
+ERROR: 0:269: 'firstbitlow' : no matching overloaded function found 
+ERROR: 0:269: 'fwidth' : no matching overloaded function found 
+ERROR: 0:269: 'noise' : no matching overloaded function found 
+ERROR: 0:269: 'reversebits' : no matching overloaded function found 
+ERROR: 0:269: 'length' : no matching overloaded function found 
+ERROR: 0:269: 'noise' : no matching overloaded function found 
+ERROR: 0:269: 'normalize' : no matching overloaded function found 
+ERROR: 0:269: 'reflect' : no matching overloaded function found 
+ERROR: 0:269: 'refract' : no matching overloaded function found 
+ERROR: 0:269: 'reversebits' : no matching overloaded function found 
+ERROR: 226 compilation errors.  No code generated.
 
 
 Shader version: 450
@@ -292,8 +285,6 @@ ERROR: node is still EOpNull!
 0:40        0.000000
 0:41      Constant:
 0:41        0.000000
-0:42      Constant:
-0:42        0.000000
 0:43      Constant:
 0:43        0.000000
 0:44      Constant:
@@ -402,8 +393,6 @@ ERROR: node is still EOpNull!
 0:103        0.000000
 0:104      Constant:
 0:104        0.000000
-0:105      Constant:
-0:105        0.000000
 0:106      Constant:
 0:106        0.000000
 0:107      Constant:
@@ -483,8 +472,6 @@ ERROR: node is still EOpNull!
 0:148        0.000000
 0:149      Constant:
 0:149        0.000000
-0:150      Constant:
-0:150        0.000000
 0:151      Constant:
 0:151        0.000000
 0:152      Constant:
@@ -526,7 +513,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:251  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:250  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' (in 4-component vector of float)
 0:176      'inF1' (in 4-component vector of float)
@@ -565,8 +552,6 @@ ERROR: node is still EOpNull!
 0:193        0.000000
 0:194      Constant:
 0:194        0.000000
-0:195      Constant:
-0:195        0.000000
 0:196      Constant:
 0:196        0.000000
 0:197      Constant:
@@ -609,125 +594,121 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:259  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:252    Function Parameters: 
-0:252      'inF0' (in 2X2 matrix of float)
-0:252      'inF1' (in 2X2 matrix of float)
-0:252      'inF2' (in 2X2 matrix of float)
+0:258  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:251    Function Parameters: 
+0:251      'inF0' (in 2X2 matrix of float)
+0:251      'inF1' (in 2X2 matrix of float)
+0:251      'inF2' (in 2X2 matrix of float)
 0:?     Sequence
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:256      Branch: Return with expression
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:255      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:267  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:260    Function Parameters: 
-0:260      'inF0' (in 3X3 matrix of float)
-0:260      'inF1' (in 3X3 matrix of float)
-0:260      'inF2' (in 3X3 matrix of float)
+0:266  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:259    Function Parameters: 
+0:259      'inF0' (in 3X3 matrix of float)
+0:259      'inF1' (in 3X3 matrix of float)
+0:259      'inF2' (in 3X3 matrix of float)
 0:?     Sequence
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:264      Branch: Return with expression
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:263      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -738,63 +719,61 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:274  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:268    Function Parameters: 
-0:268      'inF0' (in 4X4 matrix of float)
-0:268      'inF1' (in 4X4 matrix of float)
-0:268      'inF2' (in 4X4 matrix of float)
+0:273  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:267    Function Parameters: 
+0:267      'inF0' (in 4X4 matrix of float)
+0:267      'inF1' (in 4X4 matrix of float)
+0:267      'inF2' (in 4X4 matrix of float)
 0:?     Sequence
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:272      Branch: Return with expression
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:271      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
@@ -887,8 +866,6 @@ ERROR: node is still EOpNull!
 0:40        0.000000
 0:41      Constant:
 0:41        0.000000
-0:42      Constant:
-0:42        0.000000
 0:43      Constant:
 0:43        0.000000
 0:44      Constant:
@@ -997,8 +974,6 @@ ERROR: node is still EOpNull!
 0:103        0.000000
 0:104      Constant:
 0:104        0.000000
-0:105      Constant:
-0:105        0.000000
 0:106      Constant:
 0:106        0.000000
 0:107      Constant:
@@ -1078,8 +1053,6 @@ ERROR: node is still EOpNull!
 0:148        0.000000
 0:149      Constant:
 0:149        0.000000
-0:150      Constant:
-0:150        0.000000
 0:151      Constant:
 0:151        0.000000
 0:152      Constant:
@@ -1121,7 +1094,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:251  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
+0:250  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' (in 4-component vector of float)
 0:176      'inF1' (in 4-component vector of float)
@@ -1160,8 +1133,6 @@ ERROR: node is still EOpNull!
 0:193        0.000000
 0:194      Constant:
 0:194        0.000000
-0:195      Constant:
-0:195        0.000000
 0:196      Constant:
 0:196        0.000000
 0:197      Constant:
@@ -1204,125 +1175,121 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:259  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
-0:252    Function Parameters: 
-0:252      'inF0' (in 2X2 matrix of float)
-0:252      'inF1' (in 2X2 matrix of float)
-0:252      'inF2' (in 2X2 matrix of float)
+0:258  Function Definition: VertexShaderFunction(mf22;mf22;mf22; (temp 2X2 matrix of float)
+0:251    Function Parameters: 
+0:251      'inF0' (in 2X2 matrix of float)
+0:251      'inF1' (in 2X2 matrix of float)
+0:251      'inF2' (in 2X2 matrix of float)
 0:?     Sequence
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:254      Constant:
-0:254        0.000000
-0:256      Branch: Return with expression
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:253      Constant:
+0:253        0.000000
+0:255      Branch: Return with expression
 0:?         Constant:
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:267  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
-0:260    Function Parameters: 
-0:260      'inF0' (in 3X3 matrix of float)
-0:260      'inF1' (in 3X3 matrix of float)
-0:260      'inF2' (in 3X3 matrix of float)
+0:266  Function Definition: VertexShaderFunction(mf33;mf33;mf33; (temp 3X3 matrix of float)
+0:259    Function Parameters: 
+0:259      'inF0' (in 3X3 matrix of float)
+0:259      'inF1' (in 3X3 matrix of float)
+0:259      'inF2' (in 3X3 matrix of float)
 0:?     Sequence
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:262      Constant:
-0:262        0.000000
-0:264      Branch: Return with expression
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:261      Constant:
+0:261        0.000000
+0:263      Branch: Return with expression
 0:?         Constant:
 0:?           3.000000
 0:?           3.000000
@@ -1333,63 +1300,61 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:274  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
-0:268    Function Parameters: 
-0:268      'inF0' (in 4X4 matrix of float)
-0:268      'inF1' (in 4X4 matrix of float)
-0:268      'inF2' (in 4X4 matrix of float)
+0:273  Function Definition: VertexShaderFunction(mf44;mf44;mf44; (temp 4X4 matrix of float)
+0:267    Function Parameters: 
+0:267      'inF0' (in 4X4 matrix of float)
+0:267      'inF1' (in 4X4 matrix of float)
+0:267      'inF2' (in 4X4 matrix of float)
 0:?     Sequence
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:270      Constant:
-0:270        0.000000
-0:272      Branch: Return with expression
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:269      Constant:
+0:269        0.000000
+0:271      Branch: Return with expression
 0:?         Constant:
 0:?           4.000000
 0:?           4.000000
diff --git a/Test/hlsl.intrinsics.double.frag b/Test/hlsl.intrinsics.double.frag
new file mode 100644 (file)
index 0000000..013422a
--- /dev/null
@@ -0,0 +1,11 @@
+
+float PixelShaderFunction(double inDV1a, double inDV1b, double inDV1c,
+                          double2 inDV2, double3 inDV3, double4 inDV4,
+                          uint inU1a, uint inU1b)
+{
+    double  r00 = fma(inDV1a, inDV1b, inDV1c);
+    double  r01 = asdouble(inU1a, inU1b);
+
+    return 0.0;
+}
+
index 1b2ecd9..6989c50 100644 (file)
@@ -23,7 +23,7 @@ float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
     f16tof32(inF0);                           // expected error: only integer inputs
     firstbithigh(inF0);                       // expected error: only integer inputs
     firstbitlow(inF0);                        // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                    // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
@@ -84,7 +84,7 @@ float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
     f16tof32(inF0);               // expected error: only integer inputs
     firstbithigh(inF0);           // expected error: only integer inputs
     firstbitlow(inF0);            // expected error: only integer inputs
-    fma(inF0, inF1, inF2);        // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                 // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua2, gs_ub2);         // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
@@ -129,7 +129,7 @@ float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
     f16tof32(inF0);                                             // expected error: only integer inputs
     firstbithigh(inF0);                                         // expected error: only integer inputs
     firstbitlow(inF0);                                          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                                               // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
@@ -174,7 +174,7 @@ float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     f16tof32(inF0);                                             // expected error: only integer inputs
     firstbithigh(inF0);                                         // expected error: only integer inputs
     firstbitlow(inF0);                                          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                                               // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
index ddbac06..9bb20cf 100644 (file)
@@ -12,7 +12,7 @@ float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
     f16tof32(inF0);                           // expected error: only integer inputs
     firstbithigh(inF0);                       // expected error: only integer inputs
     firstbitlow(inF0);                        // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                    // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     // InterlockedAdd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
     // InterlockedAnd(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out i    // InterlockedMax(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
     // InterlockedMin(inI0, inI0, 3);            // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
@@ -52,7 +52,7 @@ float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
     f16tof32(inF0);               // expected error: only integer inputs
     firstbithigh(inF0);           // expected error: only integer inputs
     firstbitlow(inF0);            // expected error: only integer inputs
-    fma(inF0, inF1, inF2);        // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     reversebits(inF0);            // expected error: only integer inputs
     transpose(inF0);              // expected error: only valid on mats
 
@@ -68,7 +68,7 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
     f16tof32(inF0);             // expected error: only integer inputs
     firstbithigh(inF0);         // expected error: only integer inputs
     firstbitlow(inF0);          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     reversebits(inF0);          // expected error: only integer inputs
     transpose(inF0);            // expected error: only valid on mats
 
@@ -85,7 +85,7 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     f16tof32(inF0);               // expected error: only integer inputs
     firstbithigh(inF0);           // expected error: only integer inputs
     firstbitlow(inF0);            // expected error: only integer inputs
-    fma(inF0, inF1, inF2);        // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     reversebits(inF0);            // expected error: only integer inputs
     transpose(inF0);              // expected error: only valid on mats
 
@@ -100,7 +100,6 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     f16tof32(inF0);           \
     firstbithigh(inF0);       \
     firstbitlow(inF0);        \
-    fma(inF0, inF1, inF2);    \
     reversebits(inF0);        \
     length(inF0);             \
     noise(inF0);              \
index e716c68..301fb7b 100644 (file)
@@ -39,7 +39,7 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
     f16tof32(inF0);                           // expected error: only integer inputs
     firstbithigh(inF0);                       // expected error: only integer inputs
     firstbitlow(inF0);                        // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                    // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua, gs_ub);             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua, gs_ub, out_u1);     // expected error: only valid in pixel stage
@@ -102,7 +102,7 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
     f16tof32(inF0);                                             // expected error: only integer inputs
     firstbithigh(inF0);                                         // expected error: only integer inputs
     firstbitlow(inF0);                                          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                                               // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua2, gs_ub2);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua2, gs_ub2, out_u2);                     // expected error: only valid in pixel stage
@@ -147,7 +147,7 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
     f16tof32(inF0);                                             // expected error: only integer inputs
     firstbithigh(inF0);                                         // expected error: only integer inputs
     firstbitlow(inF0);                                          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                                               // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua3, gs_ub3);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua3, gs_ub3, out_u3);                     // expected error: only valid in pixel stage
@@ -192,7 +192,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     f16tof32(inF0);                                             // expected error: only integer inputs
     firstbithigh(inF0);                                         // expected error: only integer inputs
     firstbitlow(inF0);                                          // expected error: only integer inputs
-    fma(inF0, inF1, inF2);                                      // expected error: only double inputs
+    // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
     fwidth(inF0);                                               // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua4, gs_ub4);                             // expected error: only valid in pixel stage
     InterlockedAdd(gs_ua4, gs_ub4, out_u4);                     // expected error: only valid in pixel stage
@@ -234,7 +234,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
     f16tof32(inF0);                          \
     firstbithigh(inF0);                      \
     firstbitlow(inF0);                       \
-    fma(inF0, inF1, inF2);                   \
     fwidth(inF0);                            \
     noise(inF0);                             \
     reversebits(inF0);                       \
index a2538c6..daf6024 100644 (file)
@@ -524,6 +524,7 @@ enum TOperator {
     EOpF16tof32,                         // HLSL conversion: half of an UnpackHalf2x16
     EOpLit,                              // HLSL lighting coefficient vector
     EOpTextureBias,                      // HLSL texture bias: will be lowered to EOpTexture
+    EOpAsDouble,                         // slightly different from EOpUint64BitsToDouble
 };
 
 class TIntermTraverser;
index 9766fa3..7e126c9 100644 (file)
@@ -338,8 +338,8 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
     bool correct = true;
 
     if (source == EShSourceHlsl) {
-        version = 450;         // TODO: GLSL parser is still used for builtins.
-        profile = ENoProfile;
+        version = 450;          // TODO: GLSL parser is still used for builtins.
+        profile = ECoreProfile; // allow doubles in prototype parsing
         return correct;
     }
 
index 5492ff8..d921895 100644 (file)
@@ -85,6 +85,7 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.evalfns.frag", "main"},
+        {"hlsl.intrinsics.double.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
index c14488f..928021e 100755 (executable)
@@ -1168,6 +1168,35 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
             break;
         }
 
+    case EOpAsDouble:
+        {
+            // asdouble accepts two 32 bit ints.  we can use EOpUint64BitsToDouble, but must
+            // first construct a uint64.
+            TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();
+            TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();
+
+            if (arg0->getType().isVector()) { // TODO: ...
+                error(loc, "double2 conversion not implemented", "asdouble", "");
+                break;
+            }
+
+            TIntermAggregate* uint64 = new TIntermAggregate(EOpConstructUVec2);
+
+            uint64->getSequence().push_back(arg0);
+            uint64->getSequence().push_back(arg1);
+            uint64->setType(TType(EbtUint, EvqTemporary, 2));  // convert 2 uints to a uint2
+            uint64->setLoc(loc);
+
+            // bitcast uint2 to a double
+            TIntermTyped* convert = new TIntermUnary(EOpUint64BitsToDouble);
+            convert->getAsUnaryNode()->setOperand(uint64);
+            convert->setLoc(loc);
+            convert->setType(TType(EbtDouble, EvqTemporary));
+            node = convert;
+            
+            break;
+        }
+        
     case EOpF16tof32:
     case EOpF32tof16:
         {
index c2da2a6..6fa18bb 100755 (executable)
@@ -158,9 +158,7 @@ inline bool IsValidGlsl(const char* cname, char retOrder, char retType, char arg
     const bool isVec = dim0Max > 1 || argType == 'V';
     const bool isMat = dim1Max > 1 || argType == 'M';
 
-    if (argType == 'D'                  ||  // avoid double args
-        retType == 'D'                  ||  // avoid double return
-        (isVec && dim0 == 1)            ||  // avoid vec1
+    if ((isVec && dim0 == 1)            ||  // avoid vec1
         (isMat && dim0 == 1 && dim1 == 1))  // avoid mat1x1
         return false;
 
@@ -582,7 +580,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
     symbolTable.relateToOperator("AllMemoryBarrier",            EOpMemoryBarrier);
     symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync", EOpAllMemoryBarrierWithGroupSync);
     symbolTable.relateToOperator("any",                         EOpAny);
-    symbolTable.relateToOperator("asdouble",                    EOpUint64BitsToDouble);
+    symbolTable.relateToOperator("asdouble",                    EOpAsDouble);
     symbolTable.relateToOperator("asfloat",                     EOpIntBitsToFloat);
     symbolTable.relateToOperator("asin",                        EOpAsin);
     symbolTable.relateToOperator("asint",                       EOpFloatBitsToInt);
@@ -651,7 +649,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
     symbolTable.relateToOperator("log",                         EOpLog);
     symbolTable.relateToOperator("log10",                       EOpLog10);
     symbolTable.relateToOperator("log2",                        EOpLog2);
-    // symbolTable.relateToOperator("mad");
+    symbolTable.relateToOperator("mad",                         EOpFma);
     symbolTable.relateToOperator("max",                         EOpMax);
     symbolTable.relateToOperator("min",                         EOpMin);
     symbolTable.relateToOperator("modf",                        EOpModf);