SPIRV-Cross/reference/shaders-msl/asm/frag
Hans-Kristian Arntzen 461f1506e7 Do not eagerly invalidate all active variables on a branch.
This is not necessary, as we must emit an invalidating store before we
potentially consume an invalid expression. In fact, we're a bit
conservative here in this case for example:

int tmp = variable;
if (...)
{
    variable = 10;
}
else
{
    // Consuming tmp here is fine, but it was
    // invalidated while emitting other branch.
    // Technically, we need to study if there is an invalidating store
    // in the CFG between the loading block and this block, and the other
    // branch will not be a part of that analysis.
    int tmp2 = tmp * tmp;
}

Fixing this case means complex CFG traversal *everywhere*, and it feels like overkill.

Fixing this exposed a bug with access chains, so fix a bug where expression dependencies were not
inherited properly in access chains. Access chains are now considered forwarded if there
is at least one dependency which is also forwarded.
2019-07-24 11:17:30 +02:00
..
combined-sampler-reuse.asm.frag MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
default-member-names.asm.frag CompilerMSL support and tests for OpUndef. 2017-11-15 22:44:42 -05:00
descriptor-array-unnamed.asm.frag MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
empty-struct.asm.frag MSL: Properly support passing parameters by value. 2018-08-06 15:43:51 +02:00
extract-packed-from-composite.asm.frag MSL: Fix struct declaration order with complex type aliases. 2019-05-23 14:54:04 +02:00
frem.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
function-overload-alias.asm.frag Handle overloaded functions which share the same OpName. 2018-02-23 14:15:51 +01:00
image-extract-reuse.asm.frag Fix usage tracking issue for OpImage. 2018-04-27 11:11:24 +02:00
implicit-read-dep-phi.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
inf-nan-constant.asm.frag Add Windows support in Travis CI. 2018-10-27 00:22:30 +02:00
interpolation-qualifiers-struct.asm.frag MSL: Support global I/O block and struct Input/Output usage. 2018-09-13 16:04:24 +02:00
line-directive.line.asm.frag Support emitting OpLine directive. 2019-05-28 13:44:24 +02:00
locations-components.asm.frag MSL: Account for components when assigning locations to varyings. 2018-09-06 13:52:33 -05:00
lut-promotion-initializer.asm.frag MSL: Support copying array of arrays. 2018-09-12 09:54:55 +02:00
min-lod.msl22.asm.frag MSL: Support MinLod operand. 2019-06-19 09:43:03 +02:00
min-max-clamp.invalid.asm.frag Update glslang and SPIRV-Tools. 2018-09-27 11:10:22 +02:00
op-constant-null.asm.frag Only declare typed initializer list for non-array types. 2018-09-10 10:04:17 +02:00
op-image-sampled-image.asm.frag MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
pass-by-value.asm.frag MSL: Properly support passing parameters by value. 2018-08-06 15:43:51 +02:00
phi-loop-variable.asm.frag Fix CFG for forwarded temporaries. 2018-01-18 12:11:33 +01:00
sample-and-compare.asm.frag MSL: Fix textures which are sampled and compared against. 2019-02-22 12:27:40 +01:00
single-function-private-lut.asm.frag Support LUTs in single-function CFGs on Private storage class. 2019-02-06 10:38:59 +01:00
srem.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
storage-class-output-initializer.asm.frag Support initializers on StorageClassOutput. 2019-01-30 10:29:08 +01:00
texel-fetch-no-lod.asm.frag Deal with OpImageFetch without explicit LOD. 2018-04-30 10:54:44 +02:00
texture-sampling-fp16.asm.frag Handle more cases with FP16 and texture sampling. 2019-06-27 15:04:22 +02:00
undef-variable-store.asm.frag For MSL, use {} instead of constructors to init OpUndef values. 2017-11-30 15:03:27 -05:00
unknown-depth-state.asm.frag MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
unord-relational-op.asm.frag Add tests for FUnord comparisons of vectors. 2018-09-01 12:42:07 -05:00
unreachable.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
vector-shuffle-oom.asm.frag Do not eagerly invalidate all active variables on a branch. 2019-07-24 11:17:30 +02:00