3 #extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
\r
4 #extension GL_EXT_buffer_reference2 : enable
\r
5 #extension GL_EXT_scalar_block_layout : enable
\r
7 layout(buffer_reference, buffer_reference_align = 8) buffer T1 {
\r
11 layout(buffer_reference, buffer_reference_align = 64) buffer T2 {
\r
15 const int s = int(uint64_t(T1(T2(uint64_t(3)))));
\r
17 const uint64_t t = uint64_t(true ? T2(uint64_t(10)) : T2(uint64_t(11)));
\r
20 #define sizeof(T) (uint64_t(T(uint64_t(0))+1))
\r
22 const uint64_t s2 = sizeof(T1);
\r
28 T1 a = T1(uint64_t(4)), b = T1(uint64_t(5));
\r
29 T1 c = true ? a : b;
\r
31 T1 e = true ? T1(uint64_t(6)) : T1(uint64_t(7));
\r
32 T1 f = a.y ? T1(uint64_t(8)) : T1(uint64_t(9));
\r
41 // Since we don't distinguish between "pointer" and "reference" type,
\r
42 // a reference type can have [] applied to it repeatedly and it has
\r
43 // the effect of adding up the indices.
\r
44 arr[i][i][i][i][i][i][i].x = 1;
\r
54 uint64_t y = sizeof(T1);
\r