blob: bf711e789132156a958540385d65401fdb86b9fe [file] [log] [blame]
#version 310 es
struct atomic_compare_exchange_resultu32 {
uint old_value;
bool exchanged;
};
struct atomic_compare_exchange_resulti32 {
int old_value;
bool exchanged;
};
struct a_u32_block {
uint inner;
};
layout(binding = 0, std430) buffer a_u32_block_1 {
uint inner;
} a_u32;
struct a_i32_block {
int inner;
};
layout(binding = 1, std430) buffer a_i32_block_1 {
int inner;
} a_i32;
shared uint b_u32;
shared int b_i32;
void tint_symbol(uint local_invocation_index) {
if ((local_invocation_index < 1u)) {
atomicExchange(b_u32, 0u);
atomicExchange(b_i32, 0);
}
barrier();
{
uint value = 42u;
atomic_compare_exchange_resultu32 atomic_compare_result;
atomic_compare_result.old_value = atomicCompSwap(a_u32.inner, 0u, value);
atomic_compare_result.exchanged = atomic_compare_result.old_value == 0u;
atomic_compare_exchange_resultu32 r1 = atomic_compare_result;
atomic_compare_exchange_resultu32 atomic_compare_result_1;
atomic_compare_result_1.old_value = atomicCompSwap(a_u32.inner, 0u, value);
atomic_compare_result_1.exchanged = atomic_compare_result_1.old_value == 0u;
atomic_compare_exchange_resultu32 r2 = atomic_compare_result_1;
atomic_compare_exchange_resultu32 atomic_compare_result_2;
atomic_compare_result_2.old_value = atomicCompSwap(a_u32.inner, 0u, value);
atomic_compare_result_2.exchanged = atomic_compare_result_2.old_value == 0u;
atomic_compare_exchange_resultu32 r3 = atomic_compare_result_2;
}
{
int value = 42;
atomic_compare_exchange_resulti32 atomic_compare_result_3;
atomic_compare_result_3.old_value = atomicCompSwap(a_i32.inner, 0, value);
atomic_compare_result_3.exchanged = atomic_compare_result_3.old_value == 0;
atomic_compare_exchange_resulti32 r1 = atomic_compare_result_3;
atomic_compare_exchange_resulti32 atomic_compare_result_4;
atomic_compare_result_4.old_value = atomicCompSwap(a_i32.inner, 0, value);
atomic_compare_result_4.exchanged = atomic_compare_result_4.old_value == 0;
atomic_compare_exchange_resulti32 r2 = atomic_compare_result_4;
atomic_compare_exchange_resulti32 atomic_compare_result_5;
atomic_compare_result_5.old_value = atomicCompSwap(a_i32.inner, 0, value);
atomic_compare_result_5.exchanged = atomic_compare_result_5.old_value == 0;
atomic_compare_exchange_resulti32 r3 = atomic_compare_result_5;
}
{
uint value = 42u;
atomic_compare_exchange_resultu32 atomic_compare_result_6;
atomic_compare_result_6.old_value = atomicCompSwap(b_u32, 0u, value);
atomic_compare_result_6.exchanged = atomic_compare_result_6.old_value == 0u;
atomic_compare_exchange_resultu32 r1 = atomic_compare_result_6;
atomic_compare_exchange_resultu32 atomic_compare_result_7;
atomic_compare_result_7.old_value = atomicCompSwap(b_u32, 0u, value);
atomic_compare_result_7.exchanged = atomic_compare_result_7.old_value == 0u;
atomic_compare_exchange_resultu32 r2 = atomic_compare_result_7;
atomic_compare_exchange_resultu32 atomic_compare_result_8;
atomic_compare_result_8.old_value = atomicCompSwap(b_u32, 0u, value);
atomic_compare_result_8.exchanged = atomic_compare_result_8.old_value == 0u;
atomic_compare_exchange_resultu32 r3 = atomic_compare_result_8;
}
{
int value = 42;
atomic_compare_exchange_resulti32 atomic_compare_result_9;
atomic_compare_result_9.old_value = atomicCompSwap(b_i32, 0, value);
atomic_compare_result_9.exchanged = atomic_compare_result_9.old_value == 0;
atomic_compare_exchange_resulti32 r1 = atomic_compare_result_9;
atomic_compare_exchange_resulti32 atomic_compare_result_10;
atomic_compare_result_10.old_value = atomicCompSwap(b_i32, 0, value);
atomic_compare_result_10.exchanged = atomic_compare_result_10.old_value == 0;
atomic_compare_exchange_resulti32 r2 = atomic_compare_result_10;
atomic_compare_exchange_resulti32 atomic_compare_result_11;
atomic_compare_result_11.old_value = atomicCompSwap(b_i32, 0, value);
atomic_compare_result_11.exchanged = atomic_compare_result_11.old_value == 0;
atomic_compare_exchange_resulti32 r3 = atomic_compare_result_11;
}
}
layout(local_size_x = 16, local_size_y = 1, local_size_z = 1) in;
void main() {
tint_symbol(gl_LocalInvocationIndex);
return;
}