SPIRV-Cross/reference/shaders-msl/asm/comp
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
..
atomic-decrement.asm.comp MSL: Handle coherent, volatile, and restrict. 2019-07-11 10:22:30 -05:00
atomic-increment.asm.comp MSL: Handle coherent, volatile, and restrict. 2019-07-11 10:22:30 -05:00
bitcast_iadd.asm.comp MSL: Handle coherent, volatile, and restrict. 2019-07-11 10:22:30 -05:00
bitcast_sar.asm.comp Expand the implementation of inherit_expression_dependencies. 2018-03-09 13:21:38 +01:00
bitcast_sdiv.asm.comp Expand the implementation of inherit_expression_dependencies. 2018-03-09 13:21:38 +01:00
bitcast_slr.asm.comp Expand the implementation of inherit_expression_dependencies. 2018-03-09 13:21:38 +01:00
block-name-alias-global.asm.comp Tests run clean. 2019-07-22 10:23:39 +02:00
buffer-write-relative-addr.asm.comp MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
buffer-write.asm.comp MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
global-parameter-name-alias.asm.comp MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
image-load-store-short-vector.asm.comp MSL: Fix image load/store for short vectors. 2019-01-17 14:54:29 +01:00
multiple-entry.asm.comp MSL: Handle coherent, volatile, and restrict. 2019-07-11 10:22:30 -05:00
quantize.asm.comp Enhancements to MSL compute and entry point naming. 2017-11-05 21:34:42 -05:00
relaxed-block-layout.asm.comp Fix unpacking of packed but not remapped types on load. 2019-07-19 14:50:35 +02:00
specialization-constant-workgroup.asm.comp MSL: Declare gl_WorkGroupSize constant with [[maybe_unused]]. 2019-03-28 10:54:18 +01:00
storage-buffer-basic.invalid.asm.comp MSL: Declare gl_WorkGroupSize constant with [[maybe_unused]]. 2019-03-28 10:54:18 +01:00
struct-resource-name-aliasing.asm.comp MSL: Deal with resource name aliasing. 2019-01-18 16:27:57 +01:00
variable-pointers-2.asm.comp Do not eagerly invalidate all active variables on a branch. 2019-07-24 11:17:30 +02:00
variable-pointers-store-forwarding.asm.comp Flush all variables after storing through a variable pointer. 2019-01-08 15:16:33 -06:00
vector-builtin-type-cast-func.asm.comp MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00
vector-builtin-type-cast.asm.comp MSL: Rewrite how resource indices are fallback-assigned. 2019-06-21 12:54:08 +02:00