Hans-Kristian Arntzen
e0efa737ca
Expand the implementation of inherit_expression_dependencies.
2018-03-09 13:21:38 +01:00
Hans-Kristian Arntzen
28cccc3dbb
Emit complex continue blocks "properly".
2018-03-08 17:59:21 +01:00
Hans-Kristian Arntzen
54549a624f
Add some test shaders for special merge methods.
2018-03-08 16:48:50 +01:00
Hans-Kristian Arntzen
5fe79eb59c
Update tests.
...
Adds an earlier reported shader packing failure into regression suite.
2018-03-05 16:34:42 +01:00
Hans-Kristian Arntzen
3c1b147272
Support Invariant for BuiltInPosition.
2018-03-01 12:31:39 +01:00
Hans-Kristian Arntzen
a04bdcc7f7
Handle overloaded functions which share the same OpName.
...
Awkward, but legal SPIR-V.
2018-02-23 14:15:51 +01:00
Hans-Kristian Arntzen
1a2e4de7a5
Add test for texelFetch without sampler.
2018-02-21 13:45:59 +01:00
Hans-Kristian Arntzen
8a3bef2bd6
Add OpFRem tests.
2018-02-15 13:36:59 +01:00
Hans-Kristian Arntzen
8841f15283
Fix case where loop header branches into continue block.
2018-02-01 10:00:16 +01:00
Hans-Kristian Arntzen
b3f6e3de8e
Fix CFG::update_common_dominator.
...
The algorithm was too conservative causing lots of unnecessary
temporaries to be created.
2018-01-24 20:32:11 +01:00
Hans-Kristian Arntzen
09f550f718
Handle exponential explosion of code-gen during first phase of compile.
...
Certain patterns with OpVectorShuffle (and probably others) will cascade
to so large, that they can cause OOM. After we have observed
force_recompile, don't spend unnecessary memory emitting code which will
never be used.
2018-01-24 18:12:41 +01:00
Hans-Kristian Arntzen
d0ce948df4
Do not merge swizzles for anything other than vectors.
2018-01-22 09:52:57 +01:00
Hans-Kristian Arntzen
7d223b8987
Fix CFG for forwarded temporaries.
...
Forwarded temporaries would never declare a temporary.
Figure out all result types ahead of time so we can deal with those
temporaries as well.
2018-01-18 12:11:33 +01:00
Hans-Kristian Arntzen
b902d5400c
Do not use inline for-loop initializers with different types.
2018-01-16 10:27:58 +01:00
Hans-Kristian Arntzen
0f4adaa09d
Handle OpUnreachable in code-gen.
...
Forgot to add it to emit_block_chain. It should just be a noop.
2018-01-15 09:35:09 +01:00
Hans-Kristian Arntzen
d4e470babd
Analyze the CFG for temporaries as well.
...
Normally, temporary declaration must dominate any use of it,
so we generally did not need to analyze the CFG for these variables,
but there is an edge case where you have an inliner doing:
do {
create_temporary;
break;
} while(0);
use_temporary;
The inside of the loop dominates the outer scope, but we cannot emit
code like this in GLSL, so make sure we hoist these temporaries outside
the "loop".
2018-01-12 10:56:11 +01:00
Hans-Kristian Arntzen
9bdfd7025e
Fix tessellation control shaders from HLSL.
...
Need to take into account that gl_Position[i] needs to be rewritten as
gl_out[i].gl_Position instead.
2018-01-04 16:22:44 +01:00
Hans-Kristian Arntzen
6d7af5c83c
Add test for continue block lifting.
2017-12-05 17:44:52 +01:00
Hans-Kristian Arntzen
2c90ea3acc
Improve handling of block name declaration in GLSL.
...
HLSL UAVs are a bit annoying because they can share block types,
so reflection becomes rather awkward. Sometimes we will need to make
some nasty fallbacks, so add a reflection interface which lets you query
post-shader compile which names was actually declared in the shader.
2017-12-01 14:30:10 +01:00
Hans-Kristian Arntzen
65cd417630
Do not hoist OpUndef variables.
2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
7238e57933
Enforce stable order for dominated phi variables.
2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
c52776af78
Update to correct SPIRV-Tools revision.
2017-11-23 09:59:21 +01:00
Hans-Kristian Arntzen
b39e829fc2
Add reference output for --opt.
2017-11-23 09:50:11 +01:00