| #version 450 core |
| #extension GL_EXT_long_vector : enable
|
| #extension GL_EXT_shader_explicit_arithmetic_types : enable
|
|
|
| layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; |
|
|
| void main() |
| {
|
| float f;
|
| vector<float, 5> f0, f1;
|
| uint32_t u; |
| vector<uint32_t, 5> u0, u1;
|
| bool b;
|
| vector<bool, 5> b0, b1;
|
|
|
| f0 = f0 + f1;
|
| f0 = f0 - f1;
|
| f0 = f0 * f1;
|
| f0 = f0 / f1;
|
| f0 = f0 + f;
|
| f0 = f0 - f;
|
| f0 = f0 * f;
|
| f0 = f0 / f;
|
| f0 = -f0;
|
|
|
| f0 += f1;
|
| f0 -= f1;
|
| f0 *= f1;
|
| f0 /= f1;
|
| f0 += f;
|
| f0 -= f;
|
| f0 *= f;
|
| f0 /= f;
|
|
|
| u0 = u0 + u1;
|
| u0 = u0 - u1;
|
| u0 = u0 * u1;
|
| u0 = u0 / u1;
|
| u0 = u0 % u1;
|
| u0 = u0 & u1;
|
| u0 = u0 | u1;
|
| u0 = u0 ^ u1;
|
| u0 = u0 << u1;
|
| u0 = u0 >> u1;
|
| u0 = u0 + u;
|
| u0 = u0 - u;
|
| u0 = u0 * u;
|
| u0 = u0 / u;
|
| u0 = u0 % u;
|
| u0 = u0 & u;
|
| u0 = u0 | u;
|
| u0 = u0 ^ u;
|
| u0 = u0 << u;
|
| u0 = u0 >> u;
|
|
|
| u0 += u1;
|
| u0 -= u1;
|
| u0 *= u1;
|
| u0 /= u1;
|
| u0 %= u1;
|
| u0 &= u1;
|
| u0 |= u1;
|
| u0 ^= u1;
|
| u0 <<= u1;
|
| u0 >>= u1;
|
| u0 += u;
|
| u0 -= u;
|
| u0 *= u;
|
| u0 /= u;
|
| u0 %= u;
|
| u0 &= u;
|
| u0 ^= u;
|
| u0 |= u;
|
| u0 <<= u;
|
| u0 >>= u;
|
|
|
| u0++;
|
| u0--;
|
| ++u0;
|
| --u0;
|
|
|
| b0 = equal(b0, b1);
|
| b0 = notEqual(b0, b1);
|
| b = any(b0);
|
| b = all(b0);
|
| b0 = not(b0);
|
|
|
| f0 = b ? f0 : f1;
|
| } |
|
|
| void foo()
|
| {
|
| float f;
|
| vector<float, 1> f0, f1;
|
| uint32_t u;
|
| vector<uint32_t, 1> u0, u1;
|
| bool b;
|
| vector<bool, 1> b0, b1;
|
|
|
| f0 = f0 + f1;
|
| f0 = f0 - f1;
|
| f0 = f0 * f1;
|
| f0 = f0 / f1;
|
| f0 = f0 + f;
|
| f0 = f0 - f;
|
| f0 = f0 * f;
|
| f0 = f0 / f;
|
| f0 = -f0;
|
|
|
| f0 += f1;
|
| f0 -= f1;
|
| f0 *= f1;
|
| f0 /= f1;
|
| f0 += f;
|
| f0 -= f;
|
| f0 *= f;
|
| f0 /= f;
|
|
|
| u0 = u0 + u1;
|
| u0 = u0 - u1;
|
| u0 = u0 * u1;
|
| u0 = u0 / u1;
|
| u0 = u0 % u1;
|
| u0 = u0 & u1;
|
| u0 = u0 | u1;
|
| u0 = u0 ^ u1;
|
| u0 = u0 << u1;
|
| u0 = u0 >> u1;
|
| u0 = u0 + u;
|
| u0 = u0 - u;
|
| u0 = u0 * u;
|
| u0 = u0 / u;
|
| u0 = u0 % u;
|
| u0 = u0 & u;
|
| u0 = u0 | u;
|
| u0 = u0 ^ u;
|
| u0 = u0 << u;
|
| u0 = u0 >> u;
|
|
|
| u0 += u1;
|
| u0 -= u1;
|
| u0 *= u1;
|
| u0 /= u1;
|
| u0 %= u1;
|
| u0 &= u1;
|
| u0 |= u1;
|
| u0 ^= u1;
|
| u0 <<= u1;
|
| u0 >>= u1;
|
| u0 += u;
|
| u0 -= u;
|
| u0 *= u;
|
| u0 /= u;
|
| u0 %= u;
|
| u0 &= u;
|
| u0 ^= u;
|
| u0 |= u;
|
| u0 <<= u;
|
| u0 >>= u;
|
|
|
| u0++;
|
| u0--;
|
| ++u0;
|
| --u0;
|
|
|
| b0 = equal(b0, b1);
|
| b0 = notEqual(b0, b1);
|
| b = any(b0);
|
| b = all(b0);
|
| b0 = not(b0);
|
|
|
| f0 = b ? f0 : f1;
|
| }
|