Hans-Kristian Arntzen
192a882df3
Also unpack regular unary/binary operations on MSL.
...
Apparently MSL gets confused when you have packed_float3 op float3 ...
2018-06-11 16:23:09 +02:00
Hans-Kristian Arntzen
46bf17c5d3
Add SREM tests for HLSL/MSL.
2018-05-24 10:34:36 +02:00
Hans-Kristian Arntzen
d93807a625
Deal with OpImageFetch without explicit LOD.
2018-04-30 10:54:44 +02:00
Hans-Kristian Arntzen
aaf397cd1f
Fix usage tracking issue for OpImage.
2018-04-27 11:11:24 +02:00
Hans-Kristian Arntzen
0280800a8f
Fix case where SampledImage would get flushed to temporary.
2018-04-27 10:06:30 +02:00
Hans-Kristian Arntzen
694b314f87
Support empty structs.
...
Need to fake it by pretending it has one dummy member.
2018-04-05 16:26:54 +02:00
Hans-Kristian Arntzen
ac81a0ce68
Use declared binding in SPIR-V as a fallback for explicit MSL binds.
2018-04-04 12:25:11 +02:00
Hans-Kristian Arntzen
9fbd8b789e
Update tests for latest SPIRV-Tools and glslang.
2018-03-12 15:11:55 +01:00
Hans-Kristian Arntzen
e3b8e9455c
Add test shader where a phi variable invalidates a temporary.
...
The temporary in question is used to flush a phi variable.
2018-03-09 14:42:26 +01:00
Hans-Kristian Arntzen
e0efa737ca
Expand the implementation of inherit_expression_dependencies.
2018-03-09 13:21:38 +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
8a3bef2bd6
Add OpFRem tests.
2018-02-15 13:36:59 +01:00
Hans-Kristian Arntzen
c9db3e5521
Overload on constant storage.
2018-02-08 17:58:46 +01:00
Hans-Kristian Arntzen
b2c9487b0f
Attempt to deduce constant/thread storage.
2018-02-08 17:07:50 +01:00
Hans-Kristian Arntzen
1a9c960058
MSL cannot declare inline arrays except in certain cases.
2018-02-08 13:06:29 +01:00
Arseny Kapoulkine
5cbed7a69f
Update test files
2018-01-29 06:40:45 -08: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
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
168bcc7b3b
Add unreachable tests for MSL/HLSL.
2018-01-15 09:39:15 +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
Bill Hollings
c93d44ba3c
For MSL, use {} instead of constructors to init OpUndef values.
2017-11-30 15:03:27 -05:00
Hans-Kristian Arntzen
3440263d60
Update MSL tests.
2017-11-23 09:50:11 +01:00
Bill Hollings
e83e2b2217
CompilerMSL support and tests for OpUndef.
2017-11-15 22:44:42 -05:00