#version 310 es | |
precision highp float; | |
precision highp int; | |
struct atomic_compare_exchange_result_i32 { | |
int old_value; | |
bool exchanged; | |
}; | |
layout(binding = 0, std430) | |
buffer a_block_1_ssbo { | |
int inner; | |
} v; | |
bool continue_execution = true; | |
layout(location = 0) out int foo_loc0_Output; | |
int foo_inner() { | |
continue_execution = false; | |
int x = 0; | |
atomic_compare_exchange_result_i32 v_1 = atomic_compare_exchange_result_i32(0, false); | |
if (continue_execution) { | |
int v_2 = atomicCompSwap(v.inner, 0, 1); | |
v_1 = atomic_compare_exchange_result_i32(v_2, (v_2 == 0)); | |
} | |
atomic_compare_exchange_result_i32 result = v_1; | |
if (result.exchanged) { | |
x = result.old_value; | |
} | |
if (!(continue_execution)) { | |
discard; | |
} | |
return x; | |
} | |
void main() { | |
foo_loc0_Output = foo_inner(); | |
} |