tree 06d7cfc98f09973980cac27c8168de366b06368e
parent c1281de6a9da45753b6b4d77e407199034d72bd2
author David Neto <dneto@google.com> 1764369043 -0500
committer GitHub <noreply@github.com> 1764369043 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJpKiKTCRC1aQ7uu5UhlAAAq58QAK40fopKCL2/L3zVobSFmWcT
 boGMRpSCfMipkk2remEAXSXEKocJMepnaFsvgGOKDuhDoqPtjdmb3x0PgHxJOsc3
 b8eP4PsnnH6cNH0g26VM7fe4TZNvk3S/UR3L1jC49z4oFQmE2GDEy4Fjl1ifAfKU
 g2qBJC/QGtqmabnpDo/OHmPW/Re6DVh+d/UYXQOCd1oQ3LExcL75/Kfy8rI8pgt0
 0kBOkt7uNd0WXJCIl+sIJd7R9zQ0UakoKC16lJOMA6oz/s9PQvU3llPhyN6ruAFh
 RA//Igajjp4mJI3m9JIlVEnxVNUBIeufGYIEmhk/KEN2KDYbc/aMFEHAqJ+IEx81
 Jk8fcy818w2ijC2246IgsgUBk+WCJZANYDDg3xPoDhJ/gG2kbIx8zh0CtX88uNnh
 rRvz8+jpPBxrn5b4bNzVGxI8QEcAQLzstZ2ILTWJfMTo0iPindj4Zxb9jnNBp9DE
 AYNbjMBsFuRoSkzutS8RX2DbBwegmvDIokATxFSGh3UCPU1HlKluG/EH7L6TatE4
 k9uzQ8KrCI70xc3I0qh1UerqcxG/Vzs0T9Be+TiCb9B/nj29fdfpRyYv7I/aF2+O
 ICIP4Q2TwCQMm0AONNvTOMOIJe5WUaVpjd2j4xLGUPzYPz6j4FkCyxDT9HFIZDpe
 As52Gqps5ZuOiumhJRA6
 =ZZsQ
 -----END PGP SIGNATURE-----
 

uniformity: test uniformity when a loop body only returns (#4477)

Consider: loop { s1 continuing { s2 } }

If the statement behaviour of s1 is exactly {Return}, then the statement
behaviour of the entire loop is {Return}. In particular, nonuniformity
effects do not leak out from s2 to the context after or outside of the
whole loop.

See the WGSL spec fix for https://github.com/gpuweb/gpuweb/issues/5100

Test three new statement scenarios, each where s1 starts with `return;`,
but varying where a collective operation is placed:
 - immediately after the return statement
 - in the continuing block of the same loop
 - immediately after the loop, where the continuing block in the loop
   has a break-if. This case requires the analysis to avoid using a
   Next behaviour from the overall loop.
 - immediately after the loop

Also test similar variants where we use `break` instead of `return`.

Also test loop constructs:
 - for with a condition: desugars to loop with initial `if !(cond) { break;}`
 - for without a condition: desugars to loop without that initial
   conditional break.
 - while loop

Fixed: #4476