From 1b7fd0f7b7f9bfeeec099b219c51217aad900182 Mon Sep 17 00:00:00 2001 From: LoopDawg Date: Wed, 22 Jun 2016 15:20:14 -0600 Subject: [PATCH] Add asdouble, fma, & mad intrinsics and change profile to allow doubles when parsing prototypes --- .../hlsl.intrinsics.double.frag.out | 117 +++ .../hlsl.intrinsics.negative.comp.out | 22 +- .../hlsl.intrinsics.negative.frag.out | 503 +++++------ .../hlsl.intrinsics.negative.vert.out | 833 +++++++++--------- Test/hlsl.intrinsics.double.frag | 11 + Test/hlsl.intrinsics.negative.comp | 8 +- Test/hlsl.intrinsics.negative.frag | 9 +- Test/hlsl.intrinsics.negative.vert | 9 +- glslang/Include/intermediate.h | 1 + glslang/MachineIndependent/ShaderLang.cpp | 4 +- gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslParseHelper.cpp | 29 + hlsl/hlslParseables.cpp | 8 +- 13 files changed, 810 insertions(+), 745 deletions(-) create mode 100644 Test/baseResults/hlsl.intrinsics.double.frag.out create mode 100644 Test/hlsl.intrinsics.double.frag diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out new file mode 100644 index 000000000..ebdbcac8e --- /dev/null +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -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 diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out index 336f70d43..b8393220e 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.comp.out +++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out @@ -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: diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out index ebb651ee3..22c1a8712 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.frag.out +++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out @@ -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 diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out index b24ef6989..3dd08c1ee 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.vert.out +++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out @@ -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 index 000000000..013422a8c --- /dev/null +++ b/Test/hlsl.intrinsics.double.frag @@ -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; +} + diff --git a/Test/hlsl.intrinsics.negative.comp b/Test/hlsl.intrinsics.negative.comp index 1b2ecd957..6989c50e6 100644 --- a/Test/hlsl.intrinsics.negative.comp +++ b/Test/hlsl.intrinsics.negative.comp @@ -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 diff --git a/Test/hlsl.intrinsics.negative.frag b/Test/hlsl.intrinsics.negative.frag index ddbac06ac..9bb20cf17 100644 --- a/Test/hlsl.intrinsics.negative.frag +++ b/Test/hlsl.intrinsics.negative.frag @@ -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); \ diff --git a/Test/hlsl.intrinsics.negative.vert b/Test/hlsl.intrinsics.negative.vert index e716c688c..301fb7bdd 100644 --- a/Test/hlsl.intrinsics.negative.vert +++ b/Test/hlsl.intrinsics.negative.vert @@ -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); \ diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index a2538c6ad..daf60241f 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -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; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 9766fa333..7e126c978 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -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; } diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5492ff8fe..d9218958b 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -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"}, diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index c14488f94..928021ebf 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -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: { diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index c2da2a676..6fa18bb28 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -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);