| #version 450 |
| |
| #extension GL_EXT_control_flow_attributes : enable |
| |
| bool cond; |
| |
| void f0() { |
| [[loop]] for (;;) { } |
| } |
| |
| void f1() { |
| [[dont_unroll]] while(true) { } |
| } |
| |
| void main() |
| { |
| [[unroll]] for (int i = 0; i < 8; ++i) { } |
| f0(); |
| [[dependency_infinite]] do { } while(true); |
| [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { } |
| [[flatten]] if (cond) { } else { } |
| [[branch]] if (cond) cond = false; |
| [[dont_flatten]] switch(3) { } // dropped |
| [[dont_flatten]] switch(3) { case 3: break; } |
| |
| // warnings on all these |
| [[unroll(2)]] for (int i = 0; i < 8; ++i) { } |
| [[dont_unroll(-2)]] while(true) { } |
| [[dependency_infinite(3)]] do { } while(true); |
| [[dependency_length]] for (int i = 0; i < 8; ++i) { } |
| [[flatten(3)]] if (cond) { } else { } |
| [[branch(5.2)]] if (cond) cond = false; |
| [[dont_flatten(3 + 7)]] switch(3) { case 3: break; } |
| |
| // other valid uses |
| [[ unroll, dont_unroll, dependency_length(2) ]] while(cond) { } |
| [ [ dont_flatten , branch ] ] switch(3) { case 3: break; } |
| [ |
| // attribute |
| [ |
| // here |
| flatten |
| ] |
| ] if (cond) { } else { } |
| [[ dependency_length(2), dependency_infinite ]] while(cond) { } |
| } |