yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
e291f7a0
main
1#version 450 2 3#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable 4#extension GL_EXT_buffer_reference2 : enable 5#extension GL_EXT_scalar_block_layout : enable 6 7layout (buffer_reference ,buffer_reference_align = 8 )buffer T1 { 8int x ; 9bool y ; 10}; 11layout (buffer_reference ,buffer_reference_align = 64 )buffer T2 { 12int x ; 13}; 14 15const int s = int (uint64_t (T1 (T2 (uint64_t (3 ))))); 16int x [s ]; 17const uint64_t t = uint64_t (true ?T2 (uint64_t (10 )) :T2 (uint64_t (11 ))); 18 19 20#define sizeof (T ) (uint64_t(T(uint64_t(0))+1)) 21 22const uint64_t s2 = sizeof (T1 ); 23uint buf [int (s2 )]; 24 25 26void main () 27{ 28T1 a = T1 (uint64_t (4 )),b = T1 (uint64_t (5 )); 29T1 c = true ?a :b ; 30T1 d = (a ,b ); 31T1 e = true ?T1 (uint64_t (6 )) :T1 (uint64_t (7 )); 32T1 f = a .y ?T1 (uint64_t (8 )) :T1 (uint64_t (9 )); 33 34f [3 ].x = 1 ; 35 (f + 5 ).x = 1 ; 36 37T1 arr [2 ]= {a ,f }; 38arr [1 ][7 ].x = 1 ; 39int i ; 40arr [i ][i ].x = 1 ; 41// Since we don't distinguish between "pointer" and "reference" type, 42// a reference type can have [] applied to it repeatedly and it has 43// the effect of adding up the indices. 44arr [i ][i ][i ][i ][i ][i ][i ].x = 1 ; 45 46T1 j ; 47j = j + 1 ; 48j = j - 2 ; 49j += 3 ; 50j -= 4 ; 51j = 5 + j ; 52T1 k = j + 6 ; 53int64_t x = k - j ; 54uint64_t y = sizeof (T1 ); 55k = k + (-1 ); 56 57T2 m ; 58m = m + 1 ; 59}