mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
Add HLSL memory barrier intrinsics, fix dst, add lit & EvaluateAttributeSnapped
This commit is contained in:
parent
19b92fff7e
commit
6e72fddaa2
@ -1405,6 +1405,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
||||
case glslang::EOpMemoryBarrierImage:
|
||||
case glslang::EOpMemoryBarrierShared:
|
||||
case glslang::EOpGroupMemoryBarrier:
|
||||
case glslang::EOpAllMemoryBarrierWithGroupSync:
|
||||
case glslang::EOpGroupMemoryBarrierWithGroupSync:
|
||||
case glslang::EOpWorkgroupMemoryBarrier:
|
||||
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
|
||||
noReturnValue = true;
|
||||
// These all have 0 operands and will naturally finish up in the code below for 0 operands
|
||||
break;
|
||||
@ -3986,6 +3990,21 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
|
||||
case glslang::EOpGroupMemoryBarrier:
|
||||
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
|
||||
return 0;
|
||||
case glslang::EOpAllMemoryBarrierWithGroupSync:
|
||||
// Control barrier with non-"None" semantic is also a memory barrier.
|
||||
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsAllMemory);
|
||||
return 0;
|
||||
case glslang::EOpGroupMemoryBarrierWithGroupSync:
|
||||
// Control barrier with non-"None" semantic is also a memory barrier.
|
||||
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
|
||||
return 0;
|
||||
case glslang::EOpWorkgroupMemoryBarrier:
|
||||
builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
|
||||
return 0;
|
||||
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
|
||||
// Control barrier with non-"None" semantic is also a memory barrier.
|
||||
builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
|
||||
return 0;
|
||||
default:
|
||||
logger->missingFunctionality("unknown operation with no arguments");
|
||||
return 0;
|
||||
|
70
Test/baseResults/hlsl.intrinsics.barriers.comp.out
Normal file
70
Test/baseResults/hlsl.intrinsics.barriers.comp.out
Normal file
@ -0,0 +1,70 @@
|
||||
hlsl.intrinsics.barriers.comp
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
0:? Sequence
|
||||
0:14 Function Definition: ComputeShaderFunction( (temp float)
|
||||
0:3 Function Parameters:
|
||||
0:? Sequence
|
||||
0:4 MemoryBarrier (global void)
|
||||
0:5 AllMemoryBarrierWithGroupSync (global void)
|
||||
0:6 GroupMemoryBarrier (global void)
|
||||
0:7 GroupMemoryBarrierWithGroupSync (global void)
|
||||
0:8 WorkgroupMemoryBarrier (global void)
|
||||
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
0:? Sequence
|
||||
0:14 Function Definition: ComputeShaderFunction( (temp float)
|
||||
0:3 Function Parameters:
|
||||
0:? Sequence
|
||||
0:4 MemoryBarrier (global void)
|
||||
0:5 AllMemoryBarrierWithGroupSync (global void)
|
||||
0:6 GroupMemoryBarrier (global void)
|
||||
0:7 GroupMemoryBarrierWithGroupSync (global void)
|
||||
0:8 WorkgroupMemoryBarrier (global void)
|
||||
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:? Linker Objects
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 15
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "ComputeShaderFunction"
|
||||
ExecutionMode 4 LocalSize 1 1 1
|
||||
Source HLSL 450
|
||||
Name 4 "ComputeShaderFunction"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: 6(int) Constant 1
|
||||
8: 6(int) Constant 4048
|
||||
9: 6(int) Constant 512
|
||||
10: 6(int) Constant 2
|
||||
11: 6(int) Constant 256
|
||||
12: TypeFloat 32
|
||||
13: 12(float) Constant 0
|
||||
4(ComputeShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
MemoryBarrier 7 8
|
||||
ControlBarrier 7 7 8
|
||||
MemoryBarrier 7 9
|
||||
ControlBarrier 7 7 9
|
||||
MemoryBarrier 10 11
|
||||
ControlBarrier 10 10 11
|
||||
ReturnValue 13
|
||||
FunctionEnd
|
160
Test/baseResults/hlsl.intrinsics.evalfns.frag.out
Normal file
160
Test/baseResults/hlsl.intrinsics.evalfns.frag.out
Normal file
@ -0,0 +1,160 @@
|
||||
hlsl.intrinsics.evalfns.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
|
||||
0:3 Function Parameters:
|
||||
0:3 'inF1' (in float)
|
||||
0:3 'inF2' (in 2-component vector of float)
|
||||
0:3 'inF3' (in 3-component vector of float)
|
||||
0:3 'inF4' (in 4-component vector of float)
|
||||
0:3 'inI2' (in 2-component vector of int)
|
||||
0:? Sequence
|
||||
0:4 interpolateAtOffset (temp float)
|
||||
0:4 'inF1' (in float)
|
||||
0:? Constant:
|
||||
0:? -0.500000
|
||||
0:? -0.062500
|
||||
0:5 interpolateAtOffset (temp 2-component vector of float)
|
||||
0:5 'inF2' (in 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.062500
|
||||
0:6 interpolateAtOffset (temp 3-component vector of float)
|
||||
0:6 'inF3' (in 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.187500
|
||||
0:? -0.375000
|
||||
0:7 interpolateAtOffset (temp 4-component vector of float)
|
||||
0:7 'inF4' (in 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.437500
|
||||
0:? -0.500000
|
||||
0:9 interpolateAtOffset (temp float)
|
||||
0:9 'inF1' (in float)
|
||||
0:9 vector-scale (temp 2-component vector of float)
|
||||
0:9 Convert int to float (temp 2-component vector of float)
|
||||
0:9 right-shift (temp 2-component vector of int)
|
||||
0:9 left-shift (temp 2-component vector of int)
|
||||
0:9 'inI2' (in 2-component vector of int)
|
||||
0:9 Constant:
|
||||
0:9 28 (const int)
|
||||
0:9 Constant:
|
||||
0:9 28 (const int)
|
||||
0:9 Constant:
|
||||
0:9 0.062500
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
|
||||
0:3 Function Parameters:
|
||||
0:3 'inF1' (in float)
|
||||
0:3 'inF2' (in 2-component vector of float)
|
||||
0:3 'inF3' (in 3-component vector of float)
|
||||
0:3 'inF4' (in 4-component vector of float)
|
||||
0:3 'inI2' (in 2-component vector of int)
|
||||
0:? Sequence
|
||||
0:4 interpolateAtOffset (temp float)
|
||||
0:4 'inF1' (in float)
|
||||
0:? Constant:
|
||||
0:? -0.500000
|
||||
0:? -0.062500
|
||||
0:5 interpolateAtOffset (temp 2-component vector of float)
|
||||
0:5 'inF2' (in 2-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.000000
|
||||
0:? 0.062500
|
||||
0:6 interpolateAtOffset (temp 3-component vector of float)
|
||||
0:6 'inF3' (in 3-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.187500
|
||||
0:? -0.375000
|
||||
0:7 interpolateAtOffset (temp 4-component vector of float)
|
||||
0:7 'inF4' (in 4-component vector of float)
|
||||
0:? Constant:
|
||||
0:? 0.437500
|
||||
0:? -0.500000
|
||||
0:9 interpolateAtOffset (temp float)
|
||||
0:9 'inF1' (in float)
|
||||
0:9 vector-scale (temp 2-component vector of float)
|
||||
0:9 Convert int to float (temp 2-component vector of float)
|
||||
0:9 right-shift (temp 2-component vector of int)
|
||||
0:9 left-shift (temp 2-component vector of int)
|
||||
0:9 'inI2' (in 2-component vector of int)
|
||||
0:9 Constant:
|
||||
0:9 28 (const int)
|
||||
0:9 Constant:
|
||||
0:9 28 (const int)
|
||||
0:9 Constant:
|
||||
0:9 0.062500
|
||||
0:? Linker Objects
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 46
|
||||
|
||||
Capability Shader
|
||||
Capability InterpolationFunction
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 8 15 22 29 36
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 450
|
||||
Name 4 "main"
|
||||
Name 8 "inF1"
|
||||
Name 15 "inF2"
|
||||
Name 22 "inF3"
|
||||
Name 29 "inF4"
|
||||
Name 36 "inI2"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Input 6(float)
|
||||
8(inF1): 7(ptr) Variable Input
|
||||
9: TypeVector 6(float) 2
|
||||
10: 6(float) Constant 3204448256
|
||||
11: 6(float) Constant 3179282432
|
||||
12: 9(fvec2) ConstantComposite 10 11
|
||||
14: TypePointer Input 9(fvec2)
|
||||
15(inF2): 14(ptr) Variable Input
|
||||
16: 6(float) Constant 0
|
||||
17: 6(float) Constant 1031798784
|
||||
18: 9(fvec2) ConstantComposite 16 17
|
||||
20: TypeVector 6(float) 3
|
||||
21: TypePointer Input 20(fvec3)
|
||||
22(inF3): 21(ptr) Variable Input
|
||||
23: 6(float) Constant 1044381696
|
||||
24: 6(float) Constant 3200253952
|
||||
25: 9(fvec2) ConstantComposite 23 24
|
||||
27: TypeVector 6(float) 4
|
||||
28: TypePointer Input 27(fvec4)
|
||||
29(inF4): 28(ptr) Variable Input
|
||||
30: 6(float) Constant 1054867456
|
||||
31: 9(fvec2) ConstantComposite 30 10
|
||||
33: TypeInt 32 1
|
||||
34: TypeVector 33(int) 2
|
||||
35: TypePointer Input 34(ivec2)
|
||||
36(inI2): 35(ptr) Variable Input
|
||||
38: 33(int) Constant 28
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 12
|
||||
19: 9(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 15(inF2) 18
|
||||
26: 20(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 22(inF3) 25
|
||||
32: 27(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 29(inF4) 31
|
||||
37: 34(ivec2) Load 36(inI2)
|
||||
39: 34(ivec2) CompositeConstruct 38 38
|
||||
40: 34(ivec2) ShiftLeftLogical 37 39
|
||||
41: 34(ivec2) CompositeConstruct 38 38
|
||||
42: 34(ivec2) ShiftRightArithmetic 40 41
|
||||
43: 9(fvec2) ConvertSToF 42
|
||||
44: 9(fvec2) VectorTimesScalar 43 17
|
||||
45: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 44
|
||||
Return
|
||||
FunctionEnd
|
129
Test/baseResults/hlsl.intrinsics.f1632.frag.out
Normal file
129
Test/baseResults/hlsl.intrinsics.f1632.frag.out
Normal file
@ -0,0 +1,129 @@
|
||||
hlsl.intrinsics.f1632.frag
|
||||
ERROR: 0:3: 'f32tof16' : unimplemented intrinsic: handle natively
|
||||
ERROR: 0:16: 'f32tof16' : unimplemented intrinsic: handle natively
|
||||
ERROR: 0:23: 'f32tof16' : unimplemented intrinsic: handle natively
|
||||
ERROR: 0:30: 'f32tof16' : unimplemented intrinsic: handle natively
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' (in float)
|
||||
0:? Sequence
|
||||
0:3 ERROR: Bad unary op
|
||||
(global uint)
|
||||
0:3 'inF0' (in float)
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Constant:
|
||||
0:5 0.000000
|
||||
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'inF0' (in 1-component vector of float)
|
||||
0:? Sequence
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 'inF0' (in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:16 ERROR: Bad unary op
|
||||
(global 2-component vector of uint)
|
||||
0:16 'inF0' (in 2-component vector of float)
|
||||
0:18 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'inF0' (in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:23 ERROR: Bad unary op
|
||||
(global 3-component vector of uint)
|
||||
0:23 'inF0' (in 3-component vector of float)
|
||||
0:25 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:29 Function Parameters:
|
||||
0:29 'inF0' (in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:30 ERROR: Bad unary op
|
||||
(global 4-component vector of uint)
|
||||
0:30 'inF0' (in 4-component vector of float)
|
||||
0:32 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' (in float)
|
||||
0:? Sequence
|
||||
0:3 ERROR: Bad unary op
|
||||
(global uint)
|
||||
0:3 'inF0' (in float)
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Constant:
|
||||
0:5 0.000000
|
||||
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'inF0' (in 1-component vector of float)
|
||||
0:? Sequence
|
||||
0:11 Branch: Return with expression
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
|
||||
0:15 Function Parameters:
|
||||
0:15 'inF0' (in 2-component vector of float)
|
||||
0:? Sequence
|
||||
0:16 ERROR: Bad unary op
|
||||
(global 2-component vector of uint)
|
||||
0:16 'inF0' (in 2-component vector of float)
|
||||
0:18 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'inF0' (in 3-component vector of float)
|
||||
0:? Sequence
|
||||
0:23 ERROR: Bad unary op
|
||||
(global 3-component vector of uint)
|
||||
0:23 'inF0' (in 3-component vector of float)
|
||||
0:25 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:29 Function Parameters:
|
||||
0:29 'inF0' (in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:30 ERROR: Bad unary op
|
||||
(global 4-component vector of uint)
|
||||
0:30 'inF0' (in 4-component vector of float)
|
||||
0:32 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
@ -638,7 +638,7 @@ gl_FragCoord origin is upper left
|
||||
0:281 dot-product (global float)
|
||||
0:281 'inF0' (in 4-component vector of float)
|
||||
0:281 'inF1' (in 4-component vector of float)
|
||||
0:282 Construct vec4 (temp float)
|
||||
0:282 Construct vec4 (temp 4-component vector of float)
|
||||
0:282 Constant:
|
||||
0:282 1.000000
|
||||
0:282 component-wise multiply (temp float)
|
||||
@ -2088,7 +2088,7 @@ gl_FragCoord origin is upper left
|
||||
0:281 dot-product (global float)
|
||||
0:281 'inF0' (in 4-component vector of float)
|
||||
0:281 'inF1' (in 4-component vector of float)
|
||||
0:282 Construct vec4 (temp float)
|
||||
0:282 Construct vec4 (temp 4-component vector of float)
|
||||
0:282 Constant:
|
||||
0:282 1.000000
|
||||
0:282 component-wise multiply (temp float)
|
||||
@ -2897,13 +2897,13 @@ gl_FragCoord origin is upper left
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 1264
|
||||
// Id's are bound by 1265
|
||||
|
||||
Capability Shader
|
||||
Capability DerivativeControl
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 48 67 73 80 195 213 219 226 366 384 390 397 539 557 563 570 718 732 747 856 870 885 997 1011 1026
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 48 67 73 80 195 213 219 226 366 384 390 397 539 557 563 570 719 733 748 857 871 886 998 1012 1027
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 450
|
||||
Name 4 "PixelShaderFunction"
|
||||
@ -2947,58 +2947,58 @@ gl_FragCoord origin is upper left
|
||||
Name 557 "inU0"
|
||||
Name 563 "inF1"
|
||||
Name 570 "inF2"
|
||||
Name 634 "ResType"
|
||||
Name 718 "inF0"
|
||||
Name 732 "inF1"
|
||||
Name 747 "inF2"
|
||||
Name 790 "ResType"
|
||||
Name 856 "inF0"
|
||||
Name 870 "inF1"
|
||||
Name 885 "inF2"
|
||||
Name 931 "ResType"
|
||||
Name 997 "inF0"
|
||||
Name 1011 "inF1"
|
||||
Name 1026 "inF2"
|
||||
Name 1075 "ResType"
|
||||
Name 1140 "r0"
|
||||
Name 1144 "r1"
|
||||
Name 1148 "r2"
|
||||
Name 1152 "r3"
|
||||
Name 1156 "r4"
|
||||
Name 1160 "r5"
|
||||
Name 1164 "r6"
|
||||
Name 1168 "r7"
|
||||
Name 1172 "r8"
|
||||
Name 1176 "r0"
|
||||
Name 1180 "r1"
|
||||
Name 1184 "r2"
|
||||
Name 1188 "r3"
|
||||
Name 1192 "r4"
|
||||
Name 1196 "r5"
|
||||
Name 1200 "r6"
|
||||
Name 1204 "r7"
|
||||
Name 1208 "r8"
|
||||
Name 1212 "r0"
|
||||
Name 1216 "r1"
|
||||
Name 1220 "r2"
|
||||
Name 1224 "r3"
|
||||
Name 1228 "r4"
|
||||
Name 1232 "r5"
|
||||
Name 1236 "r6"
|
||||
Name 1240 "r7"
|
||||
Name 1244 "r8"
|
||||
Name 1249 "gs_ua"
|
||||
Name 1250 "gs_ub"
|
||||
Name 1251 "gs_uc"
|
||||
Name 1253 "gs_ua2"
|
||||
Name 1254 "gs_ub2"
|
||||
Name 1255 "gs_uc2"
|
||||
Name 1257 "gs_ua3"
|
||||
Name 1258 "gs_ub3"
|
||||
Name 1259 "gs_uc3"
|
||||
Name 1261 "gs_ua4"
|
||||
Name 1262 "gs_ub4"
|
||||
Name 1263 "gs_uc4"
|
||||
Name 635 "ResType"
|
||||
Name 719 "inF0"
|
||||
Name 733 "inF1"
|
||||
Name 748 "inF2"
|
||||
Name 791 "ResType"
|
||||
Name 857 "inF0"
|
||||
Name 871 "inF1"
|
||||
Name 886 "inF2"
|
||||
Name 932 "ResType"
|
||||
Name 998 "inF0"
|
||||
Name 1012 "inF1"
|
||||
Name 1027 "inF2"
|
||||
Name 1076 "ResType"
|
||||
Name 1141 "r0"
|
||||
Name 1145 "r1"
|
||||
Name 1149 "r2"
|
||||
Name 1153 "r3"
|
||||
Name 1157 "r4"
|
||||
Name 1161 "r5"
|
||||
Name 1165 "r6"
|
||||
Name 1169 "r7"
|
||||
Name 1173 "r8"
|
||||
Name 1177 "r0"
|
||||
Name 1181 "r1"
|
||||
Name 1185 "r2"
|
||||
Name 1189 "r3"
|
||||
Name 1193 "r4"
|
||||
Name 1197 "r5"
|
||||
Name 1201 "r6"
|
||||
Name 1205 "r7"
|
||||
Name 1209 "r8"
|
||||
Name 1213 "r0"
|
||||
Name 1217 "r1"
|
||||
Name 1221 "r2"
|
||||
Name 1225 "r3"
|
||||
Name 1229 "r4"
|
||||
Name 1233 "r5"
|
||||
Name 1237 "r6"
|
||||
Name 1241 "r7"
|
||||
Name 1245 "r8"
|
||||
Name 1250 "gs_ua"
|
||||
Name 1251 "gs_ub"
|
||||
Name 1252 "gs_uc"
|
||||
Name 1254 "gs_ua2"
|
||||
Name 1255 "gs_ub2"
|
||||
Name 1256 "gs_uc2"
|
||||
Name 1258 "gs_ua3"
|
||||
Name 1259 "gs_ub3"
|
||||
Name 1260 "gs_uc3"
|
||||
Name 1262 "gs_ua4"
|
||||
Name 1263 "gs_ub4"
|
||||
Name 1264 "gs_uc4"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -3078,42 +3078,42 @@ gl_FragCoord origin is upper left
|
||||
574: 34(fvec4) ConstantComposite 84 84 84 84
|
||||
575: TypeVector 50(bool) 4
|
||||
585: 554(ivec4) ConstantComposite 93 241 412 159
|
||||
634(ResType): TypeStruct 34(fvec4) 551(ivec4)
|
||||
678: 64(int) Constant 4
|
||||
679: 554(ivec4) ConstantComposite 327 159 241 678
|
||||
714: 6(float) Constant 1082130432
|
||||
715: 34(fvec4) ConstantComposite 156 325 535 714
|
||||
717: TypePointer Input 10
|
||||
718(inF0): 717(ptr) Variable Input
|
||||
732(inF1): 717(ptr) Variable Input
|
||||
738: 10 ConstantComposite 230 230
|
||||
739: TypeMatrix 231(bvec2) 2
|
||||
747(inF2): 717(ptr) Variable Input
|
||||
790(ResType): TypeStruct 10 207(ivec2)
|
||||
852: 8(fvec2) ConstantComposite 325 325
|
||||
853: 10 ConstantComposite 852 852
|
||||
855: TypePointer Input 23
|
||||
856(inF0): 855(ptr) Variable Input
|
||||
870(inF1): 855(ptr) Variable Input
|
||||
876: 23 ConstantComposite 401 401 401
|
||||
877: TypeMatrix 402(bvec3) 3
|
||||
885(inF2): 855(ptr) Variable Input
|
||||
931(ResType): TypeStruct 23 378(ivec3)
|
||||
993: 21(fvec3) ConstantComposite 535 535 535
|
||||
994: 23 ConstantComposite 993 993 993
|
||||
996: TypePointer Input 36
|
||||
997(inF0): 996(ptr) Variable Input
|
||||
1011(inF1): 996(ptr) Variable Input
|
||||
1017: 36 ConstantComposite 574 574 574 574
|
||||
1018: TypeMatrix 575(bvec4) 4
|
||||
1026(inF2): 996(ptr) Variable Input
|
||||
1075(ResType): TypeStruct 36 551(ivec4)
|
||||
1137: 34(fvec4) ConstantComposite 714 714 714 714
|
||||
1138: 36 ConstantComposite 1137 1137 1137 1137
|
||||
1248: TypePointer Function 64(int)
|
||||
1252: TypePointer Function 210(ivec2)
|
||||
1256: TypePointer Function 381(ivec3)
|
||||
1260: TypePointer Function 554(ivec4)
|
||||
635(ResType): TypeStruct 34(fvec4) 551(ivec4)
|
||||
679: 64(int) Constant 4
|
||||
680: 554(ivec4) ConstantComposite 327 159 241 679
|
||||
715: 6(float) Constant 1082130432
|
||||
716: 34(fvec4) ConstantComposite 156 325 535 715
|
||||
718: TypePointer Input 10
|
||||
719(inF0): 718(ptr) Variable Input
|
||||
733(inF1): 718(ptr) Variable Input
|
||||
739: 10 ConstantComposite 230 230
|
||||
740: TypeMatrix 231(bvec2) 2
|
||||
748(inF2): 718(ptr) Variable Input
|
||||
791(ResType): TypeStruct 10 207(ivec2)
|
||||
853: 8(fvec2) ConstantComposite 325 325
|
||||
854: 10 ConstantComposite 853 853
|
||||
856: TypePointer Input 23
|
||||
857(inF0): 856(ptr) Variable Input
|
||||
871(inF1): 856(ptr) Variable Input
|
||||
877: 23 ConstantComposite 401 401 401
|
||||
878: TypeMatrix 402(bvec3) 3
|
||||
886(inF2): 856(ptr) Variable Input
|
||||
932(ResType): TypeStruct 23 378(ivec3)
|
||||
994: 21(fvec3) ConstantComposite 535 535 535
|
||||
995: 23 ConstantComposite 994 994 994
|
||||
997: TypePointer Input 36
|
||||
998(inF0): 997(ptr) Variable Input
|
||||
1012(inF1): 997(ptr) Variable Input
|
||||
1018: 36 ConstantComposite 574 574 574 574
|
||||
1019: TypeMatrix 575(bvec4) 4
|
||||
1027(inF2): 997(ptr) Variable Input
|
||||
1076(ResType): TypeStruct 36 551(ivec4)
|
||||
1138: 34(fvec4) ConstantComposite 715 715 715 715
|
||||
1139: 36 ConstantComposite 1138 1138 1138 1138
|
||||
1249: TypePointer Function 64(int)
|
||||
1253: TypePointer Function 210(ivec2)
|
||||
1257: TypePointer Function 381(ivec3)
|
||||
1261: TypePointer Function 554(ivec4)
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
49: 6(float) Load 48(inF0)
|
||||
@ -3260,51 +3260,51 @@ gl_FragCoord origin is upper left
|
||||
17(inFM0): 11(ptr) FunctionParameter
|
||||
18(inFM1): 11(ptr) FunctionParameter
|
||||
20: Label
|
||||
1140(r0): 7(ptr) Variable Function
|
||||
1144(r1): 9(ptr) Variable Function
|
||||
1148(r2): 9(ptr) Variable Function
|
||||
1152(r3): 7(ptr) Variable Function
|
||||
1156(r4): 9(ptr) Variable Function
|
||||
1160(r5): 9(ptr) Variable Function
|
||||
1164(r6): 11(ptr) Variable Function
|
||||
1168(r7): 11(ptr) Variable Function
|
||||
1172(r8): 11(ptr) Variable Function
|
||||
1141: 6(float) Load 13(inF0)
|
||||
1142: 6(float) Load 14(inF1)
|
||||
1143: 6(float) FMul 1141 1142
|
||||
Store 1140(r0) 1143
|
||||
1145: 8(fvec2) Load 15(inFV0)
|
||||
1146: 6(float) Load 13(inF0)
|
||||
1147: 8(fvec2) VectorTimesScalar 1145 1146
|
||||
Store 1144(r1) 1147
|
||||
1149: 6(float) Load 13(inF0)
|
||||
1150: 8(fvec2) Load 15(inFV0)
|
||||
1151: 8(fvec2) VectorTimesScalar 1150 1149
|
||||
Store 1148(r2) 1151
|
||||
1153: 8(fvec2) Load 15(inFV0)
|
||||
1154: 8(fvec2) Load 16(inFV1)
|
||||
1155: 6(float) Dot 1153 1154
|
||||
Store 1152(r3) 1155
|
||||
1157: 10 Load 17(inFM0)
|
||||
1158: 8(fvec2) Load 15(inFV0)
|
||||
1159: 8(fvec2) MatrixTimesVector 1157 1158
|
||||
Store 1156(r4) 1159
|
||||
1161: 8(fvec2) Load 15(inFV0)
|
||||
1162: 10 Load 17(inFM0)
|
||||
1163: 8(fvec2) VectorTimesMatrix 1161 1162
|
||||
Store 1160(r5) 1163
|
||||
1165: 10 Load 17(inFM0)
|
||||
1166: 6(float) Load 13(inF0)
|
||||
1167: 10 MatrixTimesScalar 1165 1166
|
||||
Store 1164(r6) 1167
|
||||
1169: 6(float) Load 13(inF0)
|
||||
1170: 10 Load 17(inFM0)
|
||||
1171: 10 MatrixTimesScalar 1170 1169
|
||||
Store 1168(r7) 1171
|
||||
1173: 10 Load 17(inFM0)
|
||||
1174: 10 Load 18(inFM1)
|
||||
1175: 10 MatrixTimesMatrix 1173 1174
|
||||
Store 1172(r8) 1175
|
||||
1141(r0): 7(ptr) Variable Function
|
||||
1145(r1): 9(ptr) Variable Function
|
||||
1149(r2): 9(ptr) Variable Function
|
||||
1153(r3): 7(ptr) Variable Function
|
||||
1157(r4): 9(ptr) Variable Function
|
||||
1161(r5): 9(ptr) Variable Function
|
||||
1165(r6): 11(ptr) Variable Function
|
||||
1169(r7): 11(ptr) Variable Function
|
||||
1173(r8): 11(ptr) Variable Function
|
||||
1142: 6(float) Load 13(inF0)
|
||||
1143: 6(float) Load 14(inF1)
|
||||
1144: 6(float) FMul 1142 1143
|
||||
Store 1141(r0) 1144
|
||||
1146: 8(fvec2) Load 15(inFV0)
|
||||
1147: 6(float) Load 13(inF0)
|
||||
1148: 8(fvec2) VectorTimesScalar 1146 1147
|
||||
Store 1145(r1) 1148
|
||||
1150: 6(float) Load 13(inF0)
|
||||
1151: 8(fvec2) Load 15(inFV0)
|
||||
1152: 8(fvec2) VectorTimesScalar 1151 1150
|
||||
Store 1149(r2) 1152
|
||||
1154: 8(fvec2) Load 15(inFV0)
|
||||
1155: 8(fvec2) Load 16(inFV1)
|
||||
1156: 6(float) Dot 1154 1155
|
||||
Store 1153(r3) 1156
|
||||
1158: 10 Load 17(inFM0)
|
||||
1159: 8(fvec2) Load 15(inFV0)
|
||||
1160: 8(fvec2) MatrixTimesVector 1158 1159
|
||||
Store 1157(r4) 1160
|
||||
1162: 8(fvec2) Load 15(inFV0)
|
||||
1163: 10 Load 17(inFM0)
|
||||
1164: 8(fvec2) VectorTimesMatrix 1162 1163
|
||||
Store 1161(r5) 1164
|
||||
1166: 10 Load 17(inFM0)
|
||||
1167: 6(float) Load 13(inF0)
|
||||
1168: 10 MatrixTimesScalar 1166 1167
|
||||
Store 1165(r6) 1168
|
||||
1170: 6(float) Load 13(inF0)
|
||||
1171: 10 Load 17(inFM0)
|
||||
1172: 10 MatrixTimesScalar 1171 1170
|
||||
Store 1169(r7) 1172
|
||||
1174: 10 Load 17(inFM0)
|
||||
1175: 10 Load 18(inFM1)
|
||||
1176: 10 MatrixTimesMatrix 1174 1175
|
||||
Store 1173(r8) 1176
|
||||
Return
|
||||
FunctionEnd
|
||||
32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25
|
||||
@ -3315,51 +3315,51 @@ gl_FragCoord origin is upper left
|
||||
30(inFM0): 24(ptr) FunctionParameter
|
||||
31(inFM1): 24(ptr) FunctionParameter
|
||||
33: Label
|
||||
1176(r0): 7(ptr) Variable Function
|
||||
1180(r1): 22(ptr) Variable Function
|
||||
1184(r2): 22(ptr) Variable Function
|
||||
1188(r3): 7(ptr) Variable Function
|
||||
1192(r4): 22(ptr) Variable Function
|
||||
1196(r5): 22(ptr) Variable Function
|
||||
1200(r6): 24(ptr) Variable Function
|
||||
1204(r7): 24(ptr) Variable Function
|
||||
1208(r8): 24(ptr) Variable Function
|
||||
1177: 6(float) Load 26(inF0)
|
||||
1178: 6(float) Load 27(inF1)
|
||||
1179: 6(float) FMul 1177 1178
|
||||
Store 1176(r0) 1179
|
||||
1181: 21(fvec3) Load 28(inFV0)
|
||||
1182: 6(float) Load 26(inF0)
|
||||
1183: 21(fvec3) VectorTimesScalar 1181 1182
|
||||
Store 1180(r1) 1183
|
||||
1185: 6(float) Load 26(inF0)
|
||||
1186: 21(fvec3) Load 28(inFV0)
|
||||
1187: 21(fvec3) VectorTimesScalar 1186 1185
|
||||
Store 1184(r2) 1187
|
||||
1189: 21(fvec3) Load 28(inFV0)
|
||||
1190: 21(fvec3) Load 29(inFV1)
|
||||
1191: 6(float) Dot 1189 1190
|
||||
Store 1188(r3) 1191
|
||||
1193: 23 Load 30(inFM0)
|
||||
1194: 21(fvec3) Load 28(inFV0)
|
||||
1195: 21(fvec3) MatrixTimesVector 1193 1194
|
||||
Store 1192(r4) 1195
|
||||
1197: 21(fvec3) Load 28(inFV0)
|
||||
1198: 23 Load 30(inFM0)
|
||||
1199: 21(fvec3) VectorTimesMatrix 1197 1198
|
||||
Store 1196(r5) 1199
|
||||
1201: 23 Load 30(inFM0)
|
||||
1202: 6(float) Load 26(inF0)
|
||||
1203: 23 MatrixTimesScalar 1201 1202
|
||||
Store 1200(r6) 1203
|
||||
1205: 6(float) Load 26(inF0)
|
||||
1206: 23 Load 30(inFM0)
|
||||
1207: 23 MatrixTimesScalar 1206 1205
|
||||
Store 1204(r7) 1207
|
||||
1209: 23 Load 30(inFM0)
|
||||
1210: 23 Load 31(inFM1)
|
||||
1211: 23 MatrixTimesMatrix 1209 1210
|
||||
Store 1208(r8) 1211
|
||||
1177(r0): 7(ptr) Variable Function
|
||||
1181(r1): 22(ptr) Variable Function
|
||||
1185(r2): 22(ptr) Variable Function
|
||||
1189(r3): 7(ptr) Variable Function
|
||||
1193(r4): 22(ptr) Variable Function
|
||||
1197(r5): 22(ptr) Variable Function
|
||||
1201(r6): 24(ptr) Variable Function
|
||||
1205(r7): 24(ptr) Variable Function
|
||||
1209(r8): 24(ptr) Variable Function
|
||||
1178: 6(float) Load 26(inF0)
|
||||
1179: 6(float) Load 27(inF1)
|
||||
1180: 6(float) FMul 1178 1179
|
||||
Store 1177(r0) 1180
|
||||
1182: 21(fvec3) Load 28(inFV0)
|
||||
1183: 6(float) Load 26(inF0)
|
||||
1184: 21(fvec3) VectorTimesScalar 1182 1183
|
||||
Store 1181(r1) 1184
|
||||
1186: 6(float) Load 26(inF0)
|
||||
1187: 21(fvec3) Load 28(inFV0)
|
||||
1188: 21(fvec3) VectorTimesScalar 1187 1186
|
||||
Store 1185(r2) 1188
|
||||
1190: 21(fvec3) Load 28(inFV0)
|
||||
1191: 21(fvec3) Load 29(inFV1)
|
||||
1192: 6(float) Dot 1190 1191
|
||||
Store 1189(r3) 1192
|
||||
1194: 23 Load 30(inFM0)
|
||||
1195: 21(fvec3) Load 28(inFV0)
|
||||
1196: 21(fvec3) MatrixTimesVector 1194 1195
|
||||
Store 1193(r4) 1196
|
||||
1198: 21(fvec3) Load 28(inFV0)
|
||||
1199: 23 Load 30(inFM0)
|
||||
1200: 21(fvec3) VectorTimesMatrix 1198 1199
|
||||
Store 1197(r5) 1200
|
||||
1202: 23 Load 30(inFM0)
|
||||
1203: 6(float) Load 26(inF0)
|
||||
1204: 23 MatrixTimesScalar 1202 1203
|
||||
Store 1201(r6) 1204
|
||||
1206: 6(float) Load 26(inF0)
|
||||
1207: 23 Load 30(inFM0)
|
||||
1208: 23 MatrixTimesScalar 1207 1206
|
||||
Store 1205(r7) 1208
|
||||
1210: 23 Load 30(inFM0)
|
||||
1211: 23 Load 31(inFM1)
|
||||
1212: 23 MatrixTimesMatrix 1210 1211
|
||||
Store 1209(r8) 1212
|
||||
Return
|
||||
FunctionEnd
|
||||
45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38
|
||||
@ -3370,62 +3370,62 @@ gl_FragCoord origin is upper left
|
||||
43(inFM0): 37(ptr) FunctionParameter
|
||||
44(inFM1): 37(ptr) FunctionParameter
|
||||
46: Label
|
||||
1212(r0): 7(ptr) Variable Function
|
||||
1216(r1): 35(ptr) Variable Function
|
||||
1220(r2): 35(ptr) Variable Function
|
||||
1224(r3): 7(ptr) Variable Function
|
||||
1228(r4): 35(ptr) Variable Function
|
||||
1232(r5): 35(ptr) Variable Function
|
||||
1236(r6): 37(ptr) Variable Function
|
||||
1240(r7): 37(ptr) Variable Function
|
||||
1244(r8): 37(ptr) Variable Function
|
||||
1249(gs_ua): 1248(ptr) Variable Function
|
||||
1250(gs_ub): 1248(ptr) Variable Function
|
||||
1251(gs_uc): 1248(ptr) Variable Function
|
||||
1253(gs_ua2): 1252(ptr) Variable Function
|
||||
1254(gs_ub2): 1252(ptr) Variable Function
|
||||
1255(gs_uc2): 1252(ptr) Variable Function
|
||||
1257(gs_ua3): 1256(ptr) Variable Function
|
||||
1258(gs_ub3): 1256(ptr) Variable Function
|
||||
1259(gs_uc3): 1256(ptr) Variable Function
|
||||
1261(gs_ua4): 1260(ptr) Variable Function
|
||||
1262(gs_ub4): 1260(ptr) Variable Function
|
||||
1263(gs_uc4): 1260(ptr) Variable Function
|
||||
1213: 6(float) Load 39(inF0)
|
||||
1214: 6(float) Load 40(inF1)
|
||||
1215: 6(float) FMul 1213 1214
|
||||
Store 1212(r0) 1215
|
||||
1217: 34(fvec4) Load 41(inFV0)
|
||||
1218: 6(float) Load 39(inF0)
|
||||
1219: 34(fvec4) VectorTimesScalar 1217 1218
|
||||
Store 1216(r1) 1219
|
||||
1221: 6(float) Load 39(inF0)
|
||||
1222: 34(fvec4) Load 41(inFV0)
|
||||
1223: 34(fvec4) VectorTimesScalar 1222 1221
|
||||
Store 1220(r2) 1223
|
||||
1225: 34(fvec4) Load 41(inFV0)
|
||||
1226: 34(fvec4) Load 42(inFV1)
|
||||
1227: 6(float) Dot 1225 1226
|
||||
Store 1224(r3) 1227
|
||||
1229: 36 Load 43(inFM0)
|
||||
1230: 34(fvec4) Load 41(inFV0)
|
||||
1231: 34(fvec4) MatrixTimesVector 1229 1230
|
||||
Store 1228(r4) 1231
|
||||
1233: 34(fvec4) Load 41(inFV0)
|
||||
1234: 36 Load 43(inFM0)
|
||||
1235: 34(fvec4) VectorTimesMatrix 1233 1234
|
||||
Store 1232(r5) 1235
|
||||
1237: 36 Load 43(inFM0)
|
||||
1238: 6(float) Load 39(inF0)
|
||||
1239: 36 MatrixTimesScalar 1237 1238
|
||||
Store 1236(r6) 1239
|
||||
1241: 6(float) Load 39(inF0)
|
||||
1242: 36 Load 43(inFM0)
|
||||
1243: 36 MatrixTimesScalar 1242 1241
|
||||
Store 1240(r7) 1243
|
||||
1245: 36 Load 43(inFM0)
|
||||
1246: 36 Load 44(inFM1)
|
||||
1247: 36 MatrixTimesMatrix 1245 1246
|
||||
Store 1244(r8) 1247
|
||||
1213(r0): 7(ptr) Variable Function
|
||||
1217(r1): 35(ptr) Variable Function
|
||||
1221(r2): 35(ptr) Variable Function
|
||||
1225(r3): 7(ptr) Variable Function
|
||||
1229(r4): 35(ptr) Variable Function
|
||||
1233(r5): 35(ptr) Variable Function
|
||||
1237(r6): 37(ptr) Variable Function
|
||||
1241(r7): 37(ptr) Variable Function
|
||||
1245(r8): 37(ptr) Variable Function
|
||||
1250(gs_ua): 1249(ptr) Variable Function
|
||||
1251(gs_ub): 1249(ptr) Variable Function
|
||||
1252(gs_uc): 1249(ptr) Variable Function
|
||||
1254(gs_ua2): 1253(ptr) Variable Function
|
||||
1255(gs_ub2): 1253(ptr) Variable Function
|
||||
1256(gs_uc2): 1253(ptr) Variable Function
|
||||
1258(gs_ua3): 1257(ptr) Variable Function
|
||||
1259(gs_ub3): 1257(ptr) Variable Function
|
||||
1260(gs_uc3): 1257(ptr) Variable Function
|
||||
1262(gs_ua4): 1261(ptr) Variable Function
|
||||
1263(gs_ub4): 1261(ptr) Variable Function
|
||||
1264(gs_uc4): 1261(ptr) Variable Function
|
||||
1214: 6(float) Load 39(inF0)
|
||||
1215: 6(float) Load 40(inF1)
|
||||
1216: 6(float) FMul 1214 1215
|
||||
Store 1213(r0) 1216
|
||||
1218: 34(fvec4) Load 41(inFV0)
|
||||
1219: 6(float) Load 39(inF0)
|
||||
1220: 34(fvec4) VectorTimesScalar 1218 1219
|
||||
Store 1217(r1) 1220
|
||||
1222: 6(float) Load 39(inF0)
|
||||
1223: 34(fvec4) Load 41(inFV0)
|
||||
1224: 34(fvec4) VectorTimesScalar 1223 1222
|
||||
Store 1221(r2) 1224
|
||||
1226: 34(fvec4) Load 41(inFV0)
|
||||
1227: 34(fvec4) Load 42(inFV1)
|
||||
1228: 6(float) Dot 1226 1227
|
||||
Store 1225(r3) 1228
|
||||
1230: 36 Load 43(inFM0)
|
||||
1231: 34(fvec4) Load 41(inFV0)
|
||||
1232: 34(fvec4) MatrixTimesVector 1230 1231
|
||||
Store 1229(r4) 1232
|
||||
1234: 34(fvec4) Load 41(inFV0)
|
||||
1235: 36 Load 43(inFM0)
|
||||
1236: 34(fvec4) VectorTimesMatrix 1234 1235
|
||||
Store 1233(r5) 1236
|
||||
1238: 36 Load 43(inFM0)
|
||||
1239: 6(float) Load 39(inF0)
|
||||
1240: 36 MatrixTimesScalar 1238 1239
|
||||
Store 1237(r6) 1240
|
||||
1242: 6(float) Load 39(inF0)
|
||||
1243: 36 Load 43(inFM0)
|
||||
1244: 36 MatrixTimesScalar 1243 1242
|
||||
Store 1241(r7) 1244
|
||||
1246: 36 Load 43(inFM0)
|
||||
1247: 36 Load 44(inFM1)
|
||||
1248: 36 MatrixTimesMatrix 1246 1247
|
||||
Store 1245(r8) 1248
|
||||
Return
|
||||
FunctionEnd
|
||||
|
134
Test/baseResults/hlsl.intrinsics.lit.frag.out
Normal file
134
Test/baseResults/hlsl.intrinsics.lit.frag.out
Normal file
@ -0,0 +1,134 @@
|
||||
hlsl.intrinsics.lit.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
|
||||
0:2 Function Parameters:
|
||||
0:2 'n_dot_l' (in float)
|
||||
0:2 'n_dot_h' (in float)
|
||||
0:2 'm' (in float)
|
||||
0:? Sequence
|
||||
0:3 move second child to first child (temp 4-component vector of float)
|
||||
0:3 'r0' (temp 4-component vector of float)
|
||||
0:3 Construct vec4 (temp 4-component vector of float)
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:3 max (temp float)
|
||||
0:3 'n_dot_l' (in float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 Test condition and select (temp float)
|
||||
0:3 Condition
|
||||
0:3 Compare Less Than (temp bool)
|
||||
0:3 min (temp float)
|
||||
0:3 'n_dot_l' (in float)
|
||||
0:3 'n_dot_h' (in float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 true case
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 false case
|
||||
0:3 component-wise multiply (temp float)
|
||||
0:3 'n_dot_h' (in float)
|
||||
0:3 'm' (in float)
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
|
||||
0:2 Function Parameters:
|
||||
0:2 'n_dot_l' (in float)
|
||||
0:2 'n_dot_h' (in float)
|
||||
0:2 'm' (in float)
|
||||
0:? Sequence
|
||||
0:3 move second child to first child (temp 4-component vector of float)
|
||||
0:3 'r0' (temp 4-component vector of float)
|
||||
0:3 Construct vec4 (temp 4-component vector of float)
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:3 max (temp float)
|
||||
0:3 'n_dot_l' (in float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 Test condition and select (temp float)
|
||||
0:3 Condition
|
||||
0:3 Compare Less Than (temp bool)
|
||||
0:3 min (temp float)
|
||||
0:3 'n_dot_l' (in float)
|
||||
0:3 'n_dot_h' (in float)
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 true case
|
||||
0:3 Constant:
|
||||
0:3 0.000000
|
||||
0:3 false case
|
||||
0:3 component-wise multiply (temp float)
|
||||
0:3 'n_dot_h' (in float)
|
||||
0:3 'm' (in float)
|
||||
0:3 Constant:
|
||||
0:3 1.000000
|
||||
0:? Linker Objects
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 33
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 12 19 28
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 450
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 9 "r0"
|
||||
Name 12 "n_dot_l"
|
||||
Name 19 "n_dot_h"
|
||||
Name 28 "m"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
10: 6(float) Constant 1065353216
|
||||
11: TypePointer Input 6(float)
|
||||
12(n_dot_l): 11(ptr) Variable Input
|
||||
14: 6(float) Constant 0
|
||||
16: TypePointer Function 6(float)
|
||||
19(n_dot_h): 11(ptr) Variable Input
|
||||
22: TypeBool
|
||||
28(m): 11(ptr) Variable Input
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
9(r0): 8(ptr) Variable Function
|
||||
17: 16(ptr) Variable Function
|
||||
13: 6(float) Load 12(n_dot_l)
|
||||
15: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 13 14
|
||||
18: 6(float) Load 12(n_dot_l)
|
||||
20: 6(float) Load 19(n_dot_h)
|
||||
21: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 18 20
|
||||
23: 22(bool) FOrdLessThan 21 14
|
||||
SelectionMerge 25 None
|
||||
BranchConditional 23 24 26
|
||||
24: Label
|
||||
Store 17 14
|
||||
Branch 25
|
||||
26: Label
|
||||
27: 6(float) Load 19(n_dot_h)
|
||||
29: 6(float) Load 28(m)
|
||||
30: 6(float) FMul 27 29
|
||||
Store 17 30
|
||||
Branch 25
|
||||
25: Label
|
||||
31: 6(float) Load 17
|
||||
32: 7(fvec4) CompositeConstruct 10 15 31 10
|
||||
Store 9(r0) 32
|
||||
Return
|
||||
FunctionEnd
|
@ -1,4 +1,6 @@
|
||||
hlsl.intrinsics.negative.vert
|
||||
ERROR: 0:18: 'AllMemoryBarrier' : no matching overloaded function found
|
||||
ERROR: 0:19: 'AllMemoryBarrierWithGroupSync' : no matching overloaded function found
|
||||
ERROR: 0:20: 'asdouble' : no matching overloaded function found
|
||||
ERROR: 0:21: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
ERROR: 0:22: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
@ -6,6 +8,8 @@ ERROR: 0:23: 'clip' : no matching overloaded function found
|
||||
ERROR: 0:24: 'countbits' : no matching overloaded function found
|
||||
ERROR: 0:25: 'cross' : no matching overloaded function found
|
||||
ERROR: 0:26: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
|
||||
ERROR: 0:27: 'DeviceMemoryBarrier' : no matching overloaded function found
|
||||
ERROR: 0:28: 'DeviceMemoryBarrierWithGroupSync' : no matching overloaded function found
|
||||
ERROR: 0:29: 'ddx' : no matching overloaded function found
|
||||
ERROR: 0:30: 'ddx_coarse' : no matching overloaded function found
|
||||
ERROR: 0:31: 'ddx_fine' : no matching overloaded function found
|
||||
@ -35,6 +39,8 @@ ERROR: 0:54: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:55: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:56: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:57: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:58: 'GroupMemoryBarrier' : no matching overloaded function found
|
||||
ERROR: 0:59: 'GroupMemoryBarrierWithGroupSync' : no matching overloaded function found
|
||||
ERROR: 0:60: 'length' : no matching overloaded function found
|
||||
ERROR: 0:61: 'msad4' : no matching overloaded function found
|
||||
ERROR: 0:62: 'normalize' : no matching overloaded function found
|
||||
@ -226,7 +232,7 @@ 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: 227 compilation errors. No code generated.
|
||||
ERROR: 233 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
@ -238,6 +244,10 @@ ERROR: node is still EOpNull!
|
||||
0:15 'inF2' (in float)
|
||||
0:15 'inI0' (in int)
|
||||
0:? Sequence
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:21 Constant:
|
||||
@ -252,6 +262,10 @@ ERROR: node is still EOpNull!
|
||||
0:25 0.000000
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Constant:
|
||||
0:27 0.000000
|
||||
0:28 Constant:
|
||||
0:28 0.000000
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:30 Constant:
|
||||
@ -310,6 +324,10 @@ ERROR: node is still EOpNull!
|
||||
0:56 0.000000
|
||||
0:57 Constant:
|
||||
0:57 0.000000
|
||||
0:58 Constant:
|
||||
0:58 0.000000
|
||||
0:59 Constant:
|
||||
0:59 0.000000
|
||||
0:60 Constant:
|
||||
0:60 0.000000
|
||||
0:61 Constant:
|
||||
@ -821,6 +839,10 @@ ERROR: node is still EOpNull!
|
||||
0:15 'inF2' (in float)
|
||||
0:15 'inI0' (in int)
|
||||
0:? Sequence
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:21 Constant:
|
||||
@ -835,6 +857,10 @@ ERROR: node is still EOpNull!
|
||||
0:25 0.000000
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Constant:
|
||||
0:27 0.000000
|
||||
0:28 Constant:
|
||||
0:28 0.000000
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:30 Constant:
|
||||
@ -893,6 +919,10 @@ ERROR: node is still EOpNull!
|
||||
0:56 0.000000
|
||||
0:57 Constant:
|
||||
0:57 0.000000
|
||||
0:58 Constant:
|
||||
0:58 0.000000
|
||||
0:59 Constant:
|
||||
0:59 0.000000
|
||||
0:60 Constant:
|
||||
0:60 0.000000
|
||||
0:61 Constant:
|
||||
|
@ -530,7 +530,7 @@ Shader version: 450
|
||||
0:227 dot-product (global float)
|
||||
0:227 'inF0' (in 4-component vector of float)
|
||||
0:227 'inF1' (in 4-component vector of float)
|
||||
0:228 Construct vec4 (temp float)
|
||||
0:228 Construct vec4 (temp 4-component vector of float)
|
||||
0:228 Constant:
|
||||
0:228 1.000000
|
||||
0:228 component-wise multiply (temp float)
|
||||
@ -1759,7 +1759,7 @@ Shader version: 450
|
||||
0:227 dot-product (global float)
|
||||
0:227 'inF0' (in 4-component vector of float)
|
||||
0:227 'inF1' (in 4-component vector of float)
|
||||
0:228 Construct vec4 (temp float)
|
||||
0:228 Construct vec4 (temp 4-component vector of float)
|
||||
0:228 Constant:
|
||||
0:228 1.000000
|
||||
0:228 component-wise multiply (temp float)
|
||||
@ -2455,12 +2455,12 @@ Shader version: 450
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 1089
|
||||
// Id's are bound by 1090
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "VertexShaderFunction" 48 67 73 80 174 192 198 205 321 339 345 352 470 488 494 501 625 639 646 741 755 762 860 874 881
|
||||
EntryPoint Vertex 4 "VertexShaderFunction" 48 67 73 80 174 192 198 205 321 339 345 352 470 488 494 501 626 640 647 742 756 763 861 875 882
|
||||
Source HLSL 450
|
||||
Name 4 "VertexShaderFunction"
|
||||
Name 19 "TestGenMul(f1;f1;vf2;vf2;mf22;mf22;"
|
||||
@ -2503,46 +2503,46 @@ Shader version: 450
|
||||
Name 488 "inU0"
|
||||
Name 494 "inF1"
|
||||
Name 501 "inF2"
|
||||
Name 545 "ResType"
|
||||
Name 625 "inF0"
|
||||
Name 639 "inF1"
|
||||
Name 646 "inF2"
|
||||
Name 677 "ResType"
|
||||
Name 741 "inF0"
|
||||
Name 755 "inF1"
|
||||
Name 762 "inF2"
|
||||
Name 796 "ResType"
|
||||
Name 860 "inF0"
|
||||
Name 874 "inF1"
|
||||
Name 881 "inF2"
|
||||
Name 918 "ResType"
|
||||
Name 981 "r0"
|
||||
Name 985 "r1"
|
||||
Name 989 "r2"
|
||||
Name 993 "r3"
|
||||
Name 997 "r4"
|
||||
Name 1001 "r5"
|
||||
Name 1005 "r6"
|
||||
Name 1009 "r7"
|
||||
Name 1013 "r8"
|
||||
Name 1017 "r0"
|
||||
Name 1021 "r1"
|
||||
Name 1025 "r2"
|
||||
Name 1029 "r3"
|
||||
Name 1033 "r4"
|
||||
Name 1037 "r5"
|
||||
Name 1041 "r6"
|
||||
Name 1045 "r7"
|
||||
Name 1049 "r8"
|
||||
Name 1053 "r0"
|
||||
Name 1057 "r1"
|
||||
Name 1061 "r2"
|
||||
Name 1065 "r3"
|
||||
Name 1069 "r4"
|
||||
Name 1073 "r5"
|
||||
Name 1077 "r6"
|
||||
Name 1081 "r7"
|
||||
Name 1085 "r8"
|
||||
Name 546 "ResType"
|
||||
Name 626 "inF0"
|
||||
Name 640 "inF1"
|
||||
Name 647 "inF2"
|
||||
Name 678 "ResType"
|
||||
Name 742 "inF0"
|
||||
Name 756 "inF1"
|
||||
Name 763 "inF2"
|
||||
Name 797 "ResType"
|
||||
Name 861 "inF0"
|
||||
Name 875 "inF1"
|
||||
Name 882 "inF2"
|
||||
Name 919 "ResType"
|
||||
Name 982 "r0"
|
||||
Name 986 "r1"
|
||||
Name 990 "r2"
|
||||
Name 994 "r3"
|
||||
Name 998 "r4"
|
||||
Name 1002 "r5"
|
||||
Name 1006 "r6"
|
||||
Name 1010 "r7"
|
||||
Name 1014 "r8"
|
||||
Name 1018 "r0"
|
||||
Name 1022 "r1"
|
||||
Name 1026 "r2"
|
||||
Name 1030 "r3"
|
||||
Name 1034 "r4"
|
||||
Name 1038 "r5"
|
||||
Name 1042 "r6"
|
||||
Name 1046 "r7"
|
||||
Name 1050 "r8"
|
||||
Name 1054 "r0"
|
||||
Name 1058 "r1"
|
||||
Name 1062 "r2"
|
||||
Name 1066 "r3"
|
||||
Name 1070 "r4"
|
||||
Name 1074 "r5"
|
||||
Name 1078 "r6"
|
||||
Name 1082 "r7"
|
||||
Name 1086 "r8"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -2618,33 +2618,33 @@ Shader version: 450
|
||||
494(inF1): 469(ptr) Variable Input
|
||||
501(inF2): 469(ptr) Variable Input
|
||||
508: 485(ivec4) ConstantComposite 87 212 359 136
|
||||
545(ResType): TypeStruct 34(fvec4) 482(ivec4)
|
||||
550: TypeVector 50(bool) 4
|
||||
585: 64(int) Constant 4
|
||||
586: 485(ivec4) ConstantComposite 282 136 212 585
|
||||
621: 6(float) Constant 1082130432
|
||||
622: 34(fvec4) ConstantComposite 144 280 466 621
|
||||
624: TypePointer Input 10
|
||||
625(inF0): 624(ptr) Variable Input
|
||||
639(inF1): 624(ptr) Variable Input
|
||||
646(inF2): 624(ptr) Variable Input
|
||||
677(ResType): TypeStruct 10 186(ivec2)
|
||||
737: 8(fvec2) ConstantComposite 280 280
|
||||
738: 10 ConstantComposite 737 737
|
||||
740: TypePointer Input 23
|
||||
741(inF0): 740(ptr) Variable Input
|
||||
755(inF1): 740(ptr) Variable Input
|
||||
762(inF2): 740(ptr) Variable Input
|
||||
796(ResType): TypeStruct 23 333(ivec3)
|
||||
856: 21(fvec3) ConstantComposite 466 466 466
|
||||
857: 23 ConstantComposite 856 856 856
|
||||
859: TypePointer Input 36
|
||||
860(inF0): 859(ptr) Variable Input
|
||||
874(inF1): 859(ptr) Variable Input
|
||||
881(inF2): 859(ptr) Variable Input
|
||||
918(ResType): TypeStruct 36 482(ivec4)
|
||||
978: 34(fvec4) ConstantComposite 621 621 621 621
|
||||
979: 36 ConstantComposite 978 978 978 978
|
||||
546(ResType): TypeStruct 34(fvec4) 482(ivec4)
|
||||
551: TypeVector 50(bool) 4
|
||||
586: 64(int) Constant 4
|
||||
587: 485(ivec4) ConstantComposite 282 136 212 586
|
||||
622: 6(float) Constant 1082130432
|
||||
623: 34(fvec4) ConstantComposite 144 280 466 622
|
||||
625: TypePointer Input 10
|
||||
626(inF0): 625(ptr) Variable Input
|
||||
640(inF1): 625(ptr) Variable Input
|
||||
647(inF2): 625(ptr) Variable Input
|
||||
678(ResType): TypeStruct 10 186(ivec2)
|
||||
738: 8(fvec2) ConstantComposite 280 280
|
||||
739: 10 ConstantComposite 738 738
|
||||
741: TypePointer Input 23
|
||||
742(inF0): 741(ptr) Variable Input
|
||||
756(inF1): 741(ptr) Variable Input
|
||||
763(inF2): 741(ptr) Variable Input
|
||||
797(ResType): TypeStruct 23 333(ivec3)
|
||||
857: 21(fvec3) ConstantComposite 466 466 466
|
||||
858: 23 ConstantComposite 857 857 857
|
||||
860: TypePointer Input 36
|
||||
861(inF0): 860(ptr) Variable Input
|
||||
875(inF1): 860(ptr) Variable Input
|
||||
882(inF2): 860(ptr) Variable Input
|
||||
919(ResType): TypeStruct 36 482(ivec4)
|
||||
979: 34(fvec4) ConstantComposite 622 622 622 622
|
||||
980: 36 ConstantComposite 979 979 979 979
|
||||
4(VertexShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
49: 6(float) Load 48(inF0)
|
||||
@ -2768,51 +2768,51 @@ Shader version: 450
|
||||
17(inFM0): 11(ptr) FunctionParameter
|
||||
18(inFM1): 11(ptr) FunctionParameter
|
||||
20: Label
|
||||
981(r0): 7(ptr) Variable Function
|
||||
985(r1): 9(ptr) Variable Function
|
||||
989(r2): 9(ptr) Variable Function
|
||||
993(r3): 7(ptr) Variable Function
|
||||
997(r4): 9(ptr) Variable Function
|
||||
1001(r5): 9(ptr) Variable Function
|
||||
1005(r6): 11(ptr) Variable Function
|
||||
1009(r7): 11(ptr) Variable Function
|
||||
1013(r8): 11(ptr) Variable Function
|
||||
982: 6(float) Load 13(inF0)
|
||||
983: 6(float) Load 14(inF1)
|
||||
984: 6(float) FMul 982 983
|
||||
Store 981(r0) 984
|
||||
986: 8(fvec2) Load 15(inFV0)
|
||||
987: 6(float) Load 13(inF0)
|
||||
988: 8(fvec2) VectorTimesScalar 986 987
|
||||
Store 985(r1) 988
|
||||
990: 6(float) Load 13(inF0)
|
||||
991: 8(fvec2) Load 15(inFV0)
|
||||
992: 8(fvec2) VectorTimesScalar 991 990
|
||||
Store 989(r2) 992
|
||||
994: 8(fvec2) Load 15(inFV0)
|
||||
995: 8(fvec2) Load 16(inFV1)
|
||||
996: 6(float) Dot 994 995
|
||||
Store 993(r3) 996
|
||||
998: 10 Load 17(inFM0)
|
||||
999: 8(fvec2) Load 15(inFV0)
|
||||
1000: 8(fvec2) MatrixTimesVector 998 999
|
||||
Store 997(r4) 1000
|
||||
1002: 8(fvec2) Load 15(inFV0)
|
||||
1003: 10 Load 17(inFM0)
|
||||
1004: 8(fvec2) VectorTimesMatrix 1002 1003
|
||||
Store 1001(r5) 1004
|
||||
1006: 10 Load 17(inFM0)
|
||||
1007: 6(float) Load 13(inF0)
|
||||
1008: 10 MatrixTimesScalar 1006 1007
|
||||
Store 1005(r6) 1008
|
||||
1010: 6(float) Load 13(inF0)
|
||||
1011: 10 Load 17(inFM0)
|
||||
1012: 10 MatrixTimesScalar 1011 1010
|
||||
Store 1009(r7) 1012
|
||||
1014: 10 Load 17(inFM0)
|
||||
1015: 10 Load 18(inFM1)
|
||||
1016: 10 MatrixTimesMatrix 1014 1015
|
||||
Store 1013(r8) 1016
|
||||
982(r0): 7(ptr) Variable Function
|
||||
986(r1): 9(ptr) Variable Function
|
||||
990(r2): 9(ptr) Variable Function
|
||||
994(r3): 7(ptr) Variable Function
|
||||
998(r4): 9(ptr) Variable Function
|
||||
1002(r5): 9(ptr) Variable Function
|
||||
1006(r6): 11(ptr) Variable Function
|
||||
1010(r7): 11(ptr) Variable Function
|
||||
1014(r8): 11(ptr) Variable Function
|
||||
983: 6(float) Load 13(inF0)
|
||||
984: 6(float) Load 14(inF1)
|
||||
985: 6(float) FMul 983 984
|
||||
Store 982(r0) 985
|
||||
987: 8(fvec2) Load 15(inFV0)
|
||||
988: 6(float) Load 13(inF0)
|
||||
989: 8(fvec2) VectorTimesScalar 987 988
|
||||
Store 986(r1) 989
|
||||
991: 6(float) Load 13(inF0)
|
||||
992: 8(fvec2) Load 15(inFV0)
|
||||
993: 8(fvec2) VectorTimesScalar 992 991
|
||||
Store 990(r2) 993
|
||||
995: 8(fvec2) Load 15(inFV0)
|
||||
996: 8(fvec2) Load 16(inFV1)
|
||||
997: 6(float) Dot 995 996
|
||||
Store 994(r3) 997
|
||||
999: 10 Load 17(inFM0)
|
||||
1000: 8(fvec2) Load 15(inFV0)
|
||||
1001: 8(fvec2) MatrixTimesVector 999 1000
|
||||
Store 998(r4) 1001
|
||||
1003: 8(fvec2) Load 15(inFV0)
|
||||
1004: 10 Load 17(inFM0)
|
||||
1005: 8(fvec2) VectorTimesMatrix 1003 1004
|
||||
Store 1002(r5) 1005
|
||||
1007: 10 Load 17(inFM0)
|
||||
1008: 6(float) Load 13(inF0)
|
||||
1009: 10 MatrixTimesScalar 1007 1008
|
||||
Store 1006(r6) 1009
|
||||
1011: 6(float) Load 13(inF0)
|
||||
1012: 10 Load 17(inFM0)
|
||||
1013: 10 MatrixTimesScalar 1012 1011
|
||||
Store 1010(r7) 1013
|
||||
1015: 10 Load 17(inFM0)
|
||||
1016: 10 Load 18(inFM1)
|
||||
1017: 10 MatrixTimesMatrix 1015 1016
|
||||
Store 1014(r8) 1017
|
||||
Return
|
||||
FunctionEnd
|
||||
32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25
|
||||
@ -2823,51 +2823,51 @@ Shader version: 450
|
||||
30(inFM0): 24(ptr) FunctionParameter
|
||||
31(inFM1): 24(ptr) FunctionParameter
|
||||
33: Label
|
||||
1017(r0): 7(ptr) Variable Function
|
||||
1021(r1): 22(ptr) Variable Function
|
||||
1025(r2): 22(ptr) Variable Function
|
||||
1029(r3): 7(ptr) Variable Function
|
||||
1033(r4): 22(ptr) Variable Function
|
||||
1037(r5): 22(ptr) Variable Function
|
||||
1041(r6): 24(ptr) Variable Function
|
||||
1045(r7): 24(ptr) Variable Function
|
||||
1049(r8): 24(ptr) Variable Function
|
||||
1018: 6(float) Load 26(inF0)
|
||||
1019: 6(float) Load 27(inF1)
|
||||
1020: 6(float) FMul 1018 1019
|
||||
Store 1017(r0) 1020
|
||||
1022: 21(fvec3) Load 28(inFV0)
|
||||
1023: 6(float) Load 26(inF0)
|
||||
1024: 21(fvec3) VectorTimesScalar 1022 1023
|
||||
Store 1021(r1) 1024
|
||||
1026: 6(float) Load 26(inF0)
|
||||
1027: 21(fvec3) Load 28(inFV0)
|
||||
1028: 21(fvec3) VectorTimesScalar 1027 1026
|
||||
Store 1025(r2) 1028
|
||||
1030: 21(fvec3) Load 28(inFV0)
|
||||
1031: 21(fvec3) Load 29(inFV1)
|
||||
1032: 6(float) Dot 1030 1031
|
||||
Store 1029(r3) 1032
|
||||
1034: 23 Load 30(inFM0)
|
||||
1035: 21(fvec3) Load 28(inFV0)
|
||||
1036: 21(fvec3) MatrixTimesVector 1034 1035
|
||||
Store 1033(r4) 1036
|
||||
1038: 21(fvec3) Load 28(inFV0)
|
||||
1039: 23 Load 30(inFM0)
|
||||
1040: 21(fvec3) VectorTimesMatrix 1038 1039
|
||||
Store 1037(r5) 1040
|
||||
1042: 23 Load 30(inFM0)
|
||||
1043: 6(float) Load 26(inF0)
|
||||
1044: 23 MatrixTimesScalar 1042 1043
|
||||
Store 1041(r6) 1044
|
||||
1046: 6(float) Load 26(inF0)
|
||||
1047: 23 Load 30(inFM0)
|
||||
1048: 23 MatrixTimesScalar 1047 1046
|
||||
Store 1045(r7) 1048
|
||||
1050: 23 Load 30(inFM0)
|
||||
1051: 23 Load 31(inFM1)
|
||||
1052: 23 MatrixTimesMatrix 1050 1051
|
||||
Store 1049(r8) 1052
|
||||
1018(r0): 7(ptr) Variable Function
|
||||
1022(r1): 22(ptr) Variable Function
|
||||
1026(r2): 22(ptr) Variable Function
|
||||
1030(r3): 7(ptr) Variable Function
|
||||
1034(r4): 22(ptr) Variable Function
|
||||
1038(r5): 22(ptr) Variable Function
|
||||
1042(r6): 24(ptr) Variable Function
|
||||
1046(r7): 24(ptr) Variable Function
|
||||
1050(r8): 24(ptr) Variable Function
|
||||
1019: 6(float) Load 26(inF0)
|
||||
1020: 6(float) Load 27(inF1)
|
||||
1021: 6(float) FMul 1019 1020
|
||||
Store 1018(r0) 1021
|
||||
1023: 21(fvec3) Load 28(inFV0)
|
||||
1024: 6(float) Load 26(inF0)
|
||||
1025: 21(fvec3) VectorTimesScalar 1023 1024
|
||||
Store 1022(r1) 1025
|
||||
1027: 6(float) Load 26(inF0)
|
||||
1028: 21(fvec3) Load 28(inFV0)
|
||||
1029: 21(fvec3) VectorTimesScalar 1028 1027
|
||||
Store 1026(r2) 1029
|
||||
1031: 21(fvec3) Load 28(inFV0)
|
||||
1032: 21(fvec3) Load 29(inFV1)
|
||||
1033: 6(float) Dot 1031 1032
|
||||
Store 1030(r3) 1033
|
||||
1035: 23 Load 30(inFM0)
|
||||
1036: 21(fvec3) Load 28(inFV0)
|
||||
1037: 21(fvec3) MatrixTimesVector 1035 1036
|
||||
Store 1034(r4) 1037
|
||||
1039: 21(fvec3) Load 28(inFV0)
|
||||
1040: 23 Load 30(inFM0)
|
||||
1041: 21(fvec3) VectorTimesMatrix 1039 1040
|
||||
Store 1038(r5) 1041
|
||||
1043: 23 Load 30(inFM0)
|
||||
1044: 6(float) Load 26(inF0)
|
||||
1045: 23 MatrixTimesScalar 1043 1044
|
||||
Store 1042(r6) 1045
|
||||
1047: 6(float) Load 26(inF0)
|
||||
1048: 23 Load 30(inFM0)
|
||||
1049: 23 MatrixTimesScalar 1048 1047
|
||||
Store 1046(r7) 1049
|
||||
1051: 23 Load 30(inFM0)
|
||||
1052: 23 Load 31(inFM1)
|
||||
1053: 23 MatrixTimesMatrix 1051 1052
|
||||
Store 1050(r8) 1053
|
||||
Return
|
||||
FunctionEnd
|
||||
45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38
|
||||
@ -2878,50 +2878,50 @@ Shader version: 450
|
||||
43(inFM0): 37(ptr) FunctionParameter
|
||||
44(inFM1): 37(ptr) FunctionParameter
|
||||
46: Label
|
||||
1053(r0): 7(ptr) Variable Function
|
||||
1057(r1): 35(ptr) Variable Function
|
||||
1061(r2): 35(ptr) Variable Function
|
||||
1065(r3): 7(ptr) Variable Function
|
||||
1069(r4): 35(ptr) Variable Function
|
||||
1073(r5): 35(ptr) Variable Function
|
||||
1077(r6): 37(ptr) Variable Function
|
||||
1081(r7): 37(ptr) Variable Function
|
||||
1085(r8): 37(ptr) Variable Function
|
||||
1054: 6(float) Load 39(inF0)
|
||||
1055: 6(float) Load 40(inF1)
|
||||
1056: 6(float) FMul 1054 1055
|
||||
Store 1053(r0) 1056
|
||||
1058: 34(fvec4) Load 41(inFV0)
|
||||
1059: 6(float) Load 39(inF0)
|
||||
1060: 34(fvec4) VectorTimesScalar 1058 1059
|
||||
Store 1057(r1) 1060
|
||||
1062: 6(float) Load 39(inF0)
|
||||
1063: 34(fvec4) Load 41(inFV0)
|
||||
1064: 34(fvec4) VectorTimesScalar 1063 1062
|
||||
Store 1061(r2) 1064
|
||||
1066: 34(fvec4) Load 41(inFV0)
|
||||
1067: 34(fvec4) Load 42(inFV1)
|
||||
1068: 6(float) Dot 1066 1067
|
||||
Store 1065(r3) 1068
|
||||
1070: 36 Load 43(inFM0)
|
||||
1071: 34(fvec4) Load 41(inFV0)
|
||||
1072: 34(fvec4) MatrixTimesVector 1070 1071
|
||||
Store 1069(r4) 1072
|
||||
1074: 34(fvec4) Load 41(inFV0)
|
||||
1075: 36 Load 43(inFM0)
|
||||
1076: 34(fvec4) VectorTimesMatrix 1074 1075
|
||||
Store 1073(r5) 1076
|
||||
1078: 36 Load 43(inFM0)
|
||||
1079: 6(float) Load 39(inF0)
|
||||
1080: 36 MatrixTimesScalar 1078 1079
|
||||
Store 1077(r6) 1080
|
||||
1082: 6(float) Load 39(inF0)
|
||||
1083: 36 Load 43(inFM0)
|
||||
1084: 36 MatrixTimesScalar 1083 1082
|
||||
Store 1081(r7) 1084
|
||||
1086: 36 Load 43(inFM0)
|
||||
1087: 36 Load 44(inFM1)
|
||||
1088: 36 MatrixTimesMatrix 1086 1087
|
||||
Store 1085(r8) 1088
|
||||
1054(r0): 7(ptr) Variable Function
|
||||
1058(r1): 35(ptr) Variable Function
|
||||
1062(r2): 35(ptr) Variable Function
|
||||
1066(r3): 7(ptr) Variable Function
|
||||
1070(r4): 35(ptr) Variable Function
|
||||
1074(r5): 35(ptr) Variable Function
|
||||
1078(r6): 37(ptr) Variable Function
|
||||
1082(r7): 37(ptr) Variable Function
|
||||
1086(r8): 37(ptr) Variable Function
|
||||
1055: 6(float) Load 39(inF0)
|
||||
1056: 6(float) Load 40(inF1)
|
||||
1057: 6(float) FMul 1055 1056
|
||||
Store 1054(r0) 1057
|
||||
1059: 34(fvec4) Load 41(inFV0)
|
||||
1060: 6(float) Load 39(inF0)
|
||||
1061: 34(fvec4) VectorTimesScalar 1059 1060
|
||||
Store 1058(r1) 1061
|
||||
1063: 6(float) Load 39(inF0)
|
||||
1064: 34(fvec4) Load 41(inFV0)
|
||||
1065: 34(fvec4) VectorTimesScalar 1064 1063
|
||||
Store 1062(r2) 1065
|
||||
1067: 34(fvec4) Load 41(inFV0)
|
||||
1068: 34(fvec4) Load 42(inFV1)
|
||||
1069: 6(float) Dot 1067 1068
|
||||
Store 1066(r3) 1069
|
||||
1071: 36 Load 43(inFM0)
|
||||
1072: 34(fvec4) Load 41(inFV0)
|
||||
1073: 34(fvec4) MatrixTimesVector 1071 1072
|
||||
Store 1070(r4) 1073
|
||||
1075: 34(fvec4) Load 41(inFV0)
|
||||
1076: 36 Load 43(inFM0)
|
||||
1077: 34(fvec4) VectorTimesMatrix 1075 1076
|
||||
Store 1074(r5) 1077
|
||||
1079: 36 Load 43(inFM0)
|
||||
1080: 6(float) Load 39(inF0)
|
||||
1081: 36 MatrixTimesScalar 1079 1080
|
||||
Store 1078(r6) 1081
|
||||
1083: 6(float) Load 39(inF0)
|
||||
1084: 36 Load 43(inFM0)
|
||||
1085: 36 MatrixTimesScalar 1084 1083
|
||||
Store 1082(r7) 1085
|
||||
1087: 36 Load 43(inFM0)
|
||||
1088: 36 Load 44(inFM1)
|
||||
1089: 36 MatrixTimesMatrix 1087 1088
|
||||
Store 1086(r8) 1089
|
||||
Return
|
||||
FunctionEnd
|
||||
|
13
Test/hlsl.intrinsics.barriers.comp
Normal file
13
Test/hlsl.intrinsics.barriers.comp
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
float ComputeShaderFunction()
|
||||
{
|
||||
AllMemoryBarrier();
|
||||
AllMemoryBarrierWithGroupSync();
|
||||
DeviceMemoryBarrier();
|
||||
DeviceMemoryBarrierWithGroupSync();
|
||||
GroupMemoryBarrier();
|
||||
GroupMemoryBarrierWithGroupSync();
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
10
Test/hlsl.intrinsics.evalfns.frag
Normal file
10
Test/hlsl.intrinsics.evalfns.frag
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
void main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2) : COLOR
|
||||
{
|
||||
EvaluateAttributeSnapped(inF1, int2(8,15));
|
||||
EvaluateAttributeSnapped(inF2, int2(0,1));
|
||||
EvaluateAttributeSnapped(inF3, int2(3,10));
|
||||
EvaluateAttributeSnapped(inF4, int2(7,8));
|
||||
|
||||
EvaluateAttributeSnapped(inF1, inI2);
|
||||
}
|
34
Test/hlsl.intrinsics.f1632.frag
Normal file
34
Test/hlsl.intrinsics.f1632.frag
Normal file
@ -0,0 +1,34 @@
|
||||
float PixelShaderFunction(float inF0)
|
||||
{
|
||||
f32tof16(inF0);
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float1 PixelShaderFunction(float1 inF0)
|
||||
{
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 PixelShaderFunction(float2 inF0)
|
||||
{
|
||||
f32tof16(inF0);
|
||||
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 PixelShaderFunction(float3 inF0)
|
||||
{
|
||||
f32tof16(inF0);
|
||||
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 PixelShaderFunction(float4 inF0)
|
||||
{
|
||||
f32tof16(inF0);
|
||||
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
4
Test/hlsl.intrinsics.lit.frag
Normal file
4
Test/hlsl.intrinsics.lit.frag
Normal file
@ -0,0 +1,4 @@
|
||||
void PixelShaderFunction(float n_dot_l, float n_dot_h, float m)
|
||||
{
|
||||
float4 r0 = lit(n_dot_l, n_dot_h, m);
|
||||
}
|
@ -15,8 +15,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
{
|
||||
uint out_u1;
|
||||
|
||||
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
AllMemoryBarrier(); // expected error: only valid in compute stage
|
||||
AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
|
||||
CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
|
||||
@ -24,8 +24,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
// DeviceMemoryBarrier(); // TODO: expected error: only valid in pixel & compute stages
|
||||
// DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
|
||||
DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
|
||||
DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
|
||||
ddx(inF0); // expected error: only valid in pixel stage
|
||||
ddx_coarse(inF0); // expected error: only valid in pixel stage
|
||||
ddx_fine(inF0); // expected error: only valid in pixel stage
|
||||
@ -55,8 +55,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
// GroupMemoryBarrier(); // TODO: expected error: only valid in compute stage
|
||||
// GroupMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
|
||||
GroupMemoryBarrier(); // expected error: only valid in compute stage
|
||||
GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
|
||||
length(inF0); // expect error: invalid on scalars
|
||||
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
|
||||
normalize(inF0); // expect error: invalid on scalars
|
||||
|
@ -515,7 +515,14 @@ enum TOperator {
|
||||
EOpInterlockedMin, // ...
|
||||
EOpInterlockedOr, // ...
|
||||
EOpInterlockedXor, // ...
|
||||
|
||||
EOpAllMemoryBarrierWithGroupSync, // memory barriers without non-hlsl AST equivalents
|
||||
EOpGroupMemoryBarrierWithGroupSync, // ...
|
||||
EOpWorkgroupMemoryBarrier, // ...
|
||||
EOpWorkgroupMemoryBarrierWithGroupSync, // ...
|
||||
EOpEvaluateAttributeSnapped, // InterpolateAtOffset with int position on 16x16 grid
|
||||
EOpF32tof16, // HLSL conversion: half of a PackHalf2x16
|
||||
EOpF16tof32, // HLSL conversion: half of an UnpackHalf2x16
|
||||
EOpLit, // HLSL lighting coefficient vector
|
||||
};
|
||||
|
||||
class TIntermTraverser;
|
||||
|
@ -543,6 +543,11 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
||||
case EOpSinCos: out.debug << "sincos"; break;
|
||||
case EOpGenMul: out.debug << "mul"; break;
|
||||
|
||||
case EOpAllMemoryBarrierWithGroupSync: out.debug << "AllMemoryBarrierWithGroupSync"; break;
|
||||
case EOpGroupMemoryBarrierWithGroupSync: out.debug << "GroupMemoryBarrierWithGroupSync"; break;
|
||||
case EOpWorkgroupMemoryBarrier: out.debug << "WorkgroupMemoryBarrier"; break;
|
||||
case EOpWorkgroupMemoryBarrierWithGroupSync: out.debug << "WorkgroupMemoryBarrierWithGroupSync"; break;
|
||||
|
||||
default: out.debug.message(EPrefixError, "Bad aggregation op");
|
||||
}
|
||||
|
||||
|
@ -81,8 +81,12 @@ INSTANTIATE_TEST_CASE_P(
|
||||
{"hlsl.float4.frag", "PixelShaderFunction"},
|
||||
{"hlsl.forLoop.frag", "PixelShaderFunction"},
|
||||
{"hlsl.if.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.evalfns.frag", "main"},
|
||||
{"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},
|
||||
|
@ -967,6 +967,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
|
||||
dst->getSequence().push_back(handleBinaryMath(loc, "mul", EOpMul, src0y, src1y));
|
||||
dst->getSequence().push_back(src0z);
|
||||
dst->getSequence().push_back(src1w);
|
||||
dst->setType(TType(EbtFloat, EvqTemporary, 4));
|
||||
dst->setLoc(loc);
|
||||
node = dst;
|
||||
|
||||
@ -1028,6 +1029,90 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpEvaluateAttributeSnapped:
|
||||
{
|
||||
// SPIR-V InterpolateAtOffset uses float vec2 offset in pixels
|
||||
// HLSL uses int2 offset on a 16x16 grid in [-8..7] on x & y:
|
||||
// iU = (iU<<28)>>28
|
||||
// fU = ((float)iU)/16
|
||||
// Targets might handle this natively, in which case they can disable
|
||||
// decompositions.
|
||||
|
||||
TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // value
|
||||
TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // offset
|
||||
|
||||
TIntermTyped* i28 = intermediate.addConstantUnion(28, loc, true);
|
||||
TIntermTyped* iU = handleBinaryMath(loc, ">>", EOpRightShift,
|
||||
handleBinaryMath(loc, "<<", EOpLeftShift, arg1, i28),
|
||||
i28);
|
||||
|
||||
TIntermTyped* recip16 = intermediate.addConstantUnion((1.0/16.0), EbtFloat, loc, true);
|
||||
TIntermTyped* floatOffset = handleBinaryMath(loc, "mul", EOpMul,
|
||||
intermediate.addConversion(EOpConstructFloat,
|
||||
TType(EbtFloat, EvqTemporary, 2), iU),
|
||||
recip16);
|
||||
|
||||
TIntermAggregate* interp = new TIntermAggregate(EOpInterpolateAtOffset);
|
||||
interp->getSequence().push_back(arg0);
|
||||
interp->getSequence().push_back(floatOffset);
|
||||
interp->setLoc(loc);
|
||||
interp->setType(arg0->getType());
|
||||
interp->getWritableType().getQualifier().makeTemporary();
|
||||
|
||||
node = interp;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpLit:
|
||||
{
|
||||
TIntermTyped* n_dot_l = argAggregate->getSequence()[0]->getAsTyped();
|
||||
TIntermTyped* n_dot_h = argAggregate->getSequence()[1]->getAsTyped();
|
||||
TIntermTyped* m = argAggregate->getSequence()[2]->getAsTyped();
|
||||
|
||||
TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4);
|
||||
|
||||
// Ambient
|
||||
dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true));
|
||||
|
||||
// Diffuse:
|
||||
TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true);
|
||||
TIntermAggregate* diffuse = new TIntermAggregate(EOpMax);
|
||||
diffuse->getSequence().push_back(n_dot_l);
|
||||
diffuse->getSequence().push_back(zero);
|
||||
diffuse->setLoc(loc);
|
||||
diffuse->setType(TType(EbtFloat));
|
||||
dst->getSequence().push_back(diffuse);
|
||||
|
||||
// Specular:
|
||||
TIntermAggregate* min_ndot = new TIntermAggregate(EOpMin);
|
||||
min_ndot->getSequence().push_back(n_dot_l);
|
||||
min_ndot->getSequence().push_back(n_dot_h);
|
||||
min_ndot->setLoc(loc);
|
||||
min_ndot->setType(TType(EbtFloat));
|
||||
|
||||
TIntermTyped* compare = handleBinaryMath(loc, "<", EOpLessThan, min_ndot, zero);
|
||||
TIntermTyped* n_dot_h_m = handleBinaryMath(loc, "mul", EOpMul, n_dot_h, m); // n_dot_h * m
|
||||
|
||||
dst->getSequence().push_back(intermediate.addSelection(compare, zero, n_dot_h_m, loc));
|
||||
|
||||
// One:
|
||||
dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true));
|
||||
|
||||
dst->setLoc(loc);
|
||||
dst->setType(TType(EbtFloat, EvqTemporary, 4));
|
||||
node = dst;
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpF16tof32:
|
||||
case EOpF32tof16:
|
||||
{
|
||||
// Temporary until decomposition is available.
|
||||
error(loc, "unimplemented intrinsic: handle natively", "f32tof16", "");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break; // most pass through unchanged
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ void TBuiltInParseablesHlsl::initialize(int version, EProfile profile, const Spv
|
||||
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
|
||||
{ "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
|
||||
{ "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
|
||||
{ "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,F", EShLangFragmentMask },
|
||||
{ "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
|
||||
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
|
||||
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
|
||||
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
|
||||
@ -519,8 +519,8 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
|
||||
symbolTable.relateToOperator("abs", EOpAbs);
|
||||
symbolTable.relateToOperator("acos", EOpAcos);
|
||||
symbolTable.relateToOperator("all", EOpAll);
|
||||
// symbolTable.relateToOperator("AllMemoryBarrier");
|
||||
// symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync");
|
||||
symbolTable.relateToOperator("AllMemoryBarrier", EOpMemoryBarrier);
|
||||
symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync", EOpAllMemoryBarrierWithGroupSync);
|
||||
symbolTable.relateToOperator("any", EOpAny);
|
||||
symbolTable.relateToOperator("asdouble", EOpUint64BitsToDouble);
|
||||
symbolTable.relateToOperator("asfloat", EOpIntBitsToFloat);
|
||||
@ -546,19 +546,19 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
|
||||
symbolTable.relateToOperator("ddy_fine", EOpDPdyFine);
|
||||
symbolTable.relateToOperator("degrees", EOpDegrees);
|
||||
symbolTable.relateToOperator("determinant", EOpDeterminant);
|
||||
// symbolTable.relateToOperator("DeviceMemoryBarrier");
|
||||
// symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync");
|
||||
symbolTable.relateToOperator("DeviceMemoryBarrier", EOpGroupMemoryBarrier); // == ScopeDevice+CrossWorkGroup
|
||||
symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync", EOpGroupMemoryBarrierWithGroupSync); // ...
|
||||
symbolTable.relateToOperator("distance", EOpDistance);
|
||||
symbolTable.relateToOperator("dot", EOpDot);
|
||||
symbolTable.relateToOperator("dst", EOpDst);
|
||||
// symbolTable.relateToOperator("errorf");
|
||||
// symbolTable.relateToOperator("errorf", EOpErrorf);
|
||||
symbolTable.relateToOperator("EvaluateAttributeAtCentroid", EOpInterpolateAtCentroid);
|
||||
symbolTable.relateToOperator("EvaluateAttributeAtSample", EOpInterpolateAtSample);
|
||||
// symbolTable.relateToOperator("EvaluateAttributeSnapped"); // TODO: hsnflr positions. new op?
|
||||
symbolTable.relateToOperator("EvaluateAttributeSnapped", EOpEvaluateAttributeSnapped);
|
||||
symbolTable.relateToOperator("exp", EOpExp);
|
||||
symbolTable.relateToOperator("exp2", EOpExp2);
|
||||
// symbolTable.relateToOperator("f16tof32");
|
||||
// symbolTable.relateToOperator("f32tof16");
|
||||
symbolTable.relateToOperator("f16tof32", EOpF16tof32);
|
||||
symbolTable.relateToOperator("f32tof16", EOpF32tof16);
|
||||
symbolTable.relateToOperator("faceforward", EOpFaceForward);
|
||||
symbolTable.relateToOperator("firstbithigh", EOpFindMSB);
|
||||
symbolTable.relateToOperator("firstbitlow", EOpFindLSB);
|
||||
@ -570,8 +570,8 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
|
||||
symbolTable.relateToOperator("fwidth", EOpFwidth);
|
||||
// symbolTable.relateToOperator("GetRenderTargetSampleCount");
|
||||
// symbolTable.relateToOperator("GetRenderTargetSamplePosition");
|
||||
// symbolTable.relateToOperator("GroupMemoryBarrier");
|
||||
// symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync");
|
||||
symbolTable.relateToOperator("GroupMemoryBarrier", EOpWorkgroupMemoryBarrier);
|
||||
symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync", EOpWorkgroupMemoryBarrierWithGroupSync);
|
||||
symbolTable.relateToOperator("InterlockedAdd", EOpInterlockedAdd);
|
||||
symbolTable.relateToOperator("InterlockedAnd", EOpInterlockedAnd);
|
||||
symbolTable.relateToOperator("InterlockedCompareExchange", EOpInterlockedCompareExchange);
|
||||
@ -586,7 +586,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
|
||||
symbolTable.relateToOperator("isnan", EOpIsNan);
|
||||
symbolTable.relateToOperator("ldexp", EOpLdexp);
|
||||
symbolTable.relateToOperator("length", EOpLength);
|
||||
// symbolTable.relateToOperator("lit");
|
||||
symbolTable.relateToOperator("lit", EOpLit);
|
||||
symbolTable.relateToOperator("log", EOpLog);
|
||||
symbolTable.relateToOperator("log10", EOpLog10);
|
||||
symbolTable.relateToOperator("log2", EOpLog2);
|
||||
@ -599,7 +599,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
|
||||
// symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type
|
||||
symbolTable.relateToOperator("normalize", EOpNormalize);
|
||||
symbolTable.relateToOperator("pow", EOpPow);
|
||||
// symbolTable.relateToOperator("printf");
|
||||
// symbolTable.relateToOperator("printf", EOpPrintf);
|
||||
// symbolTable.relateToOperator("Process2DQuadTessFactorsAvg");
|
||||
// symbolTable.relateToOperator("Process2DQuadTessFactorsMax");
|
||||
// symbolTable.relateToOperator("Process2DQuadTessFactorsMin");
|
||||
|
Loading…
Reference in New Issue
Block a user