yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
0bb930fc
main
1#version 450 2 3#extension GL_EXT_shader_explicit_arithmetic_types : enable 4#extension GL_EXT_shader_explicit_arithmetic_types_int8 : require 5#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require 6#extension GL_EXT_shader_explicit_arithmetic_types_int32 : require 7#extension GL_EXT_shader_explicit_arithmetic_types_int64 : require 8#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require 9#extension GL_EXT_shader_explicit_arithmetic_types_float32 : require 10#extension GL_EXT_shader_explicit_arithmetic_types_float64 : require 11 12layout (binding = 0 )uniform Uniforms 13{ 14uint index ; 15}; 16 17layout (std140 ,binding = 1 )uniform Block 18{ 19int16_t i16 ; 20i16vec2 i16v2 ; 21i16vec3 i16v3 ; 22i16vec4 i16v4 ; 23uint16_t u16 ; 24u16vec2 u16v2 ; 25u16vec3 u16v3 ; 26u16vec4 u16v4 ; 27 28int32_t i32 ; 29i32vec2 i32v2 ; 30i32vec3 i32v3 ; 31i32vec4 i32v4 ; 32uint32_t u32 ; 33u32vec2 u32v2 ; 34u32vec3 u32v3 ; 35u32vec4 u32v4 ; 36}block ; 37 38void main () 39{ 40} 41 42void literal () 43{ 44const int64_t i64Const [3 ]= 45 { 46-0x1111111111111111l ,// Hex 47-1l ,// Dec 48040000000000l ,// Oct 49 }; 50 51int64_t i64 = i64Const [index ]; 52 53const uint64_t u64Const []= 54 { 550xFFFFFFFFFFFFFFFFul ,// Hex 564294967296UL ,// Dec 57077777777777ul ,// Oct 58 }; 59 60uint64_t u64 = u64Const [index ]; 61 62const int32_t i32Const [3 ]= 63 { 64-0x11111111 ,// Hex 65-1 ,// Dec 6604000000000 ,// Oct 67 }; 68 69int32_t i32 = i32Const [index ]; 70 71const uint32_t u32Const []= 72 { 730xFFFFFFFF ,// Hex 744294967295 ,// Dec 75017777777777 ,// Oct 76 }; 77 78uint32_t u32 = u32Const [index ]; 79 80const int16_t i16Const [3 ]= 81 { 82int16_t (-0x1111 ),// Hex 83int16_t (-1 ),// Dec 84int16_t (040000 ),// Oct 85 }; 86 87int16_t i16 = i16Const [index ]; 88 89const uint16_t u16Const []= 90 { 91uint16_t (0xFFFF ),// Hex 92uint16_t (65535 ),// Dec 93uint16_t (077777 ),// Oct 94 }; 95 96uint16_t u16 = u16Const [index ]; 97 98const int8_t i8Const [3 ]= 99 { 100int8_t (-0x11 ),// Hex 101int8_t (-1 ),// Dec 102int8_t (0400 ),// Oct 103 }; 104 105int8_t i8 = i8Const [index ]; 106 107const uint8_t u8Const []= 108 { 109uint8_t (0xFF ),// Hex 110uint8_t (255 ),// Dec 111uint8_t (0177 ),// Oct 112 }; 113 114uint8_t u8 = u8Const [index ]; 115} 116 117void typeCast8 () 118{ 119i8vec2 i8v ; 120u8vec2 u8v ; 121i16vec2 i16v ; 122u16vec2 u16v ; 123i32vec2 i32v ; 124u32vec2 u32v ; 125i64vec2 i64v ; 126u64vec2 u64v ; 127f16vec2 f16v ; 128f32vec2 f32v ; 129f64vec2 f64v ; 130bvec2 bv ; 131 132u8v = i8v ;// int8_t -> uint8_t 133i16v = i8v ;// int8_t -> int16_t 134i16v = u8v ;// uint8_t -> int16_t 135i32v = i8v ;// int8_t -> int32_t 136i32v = u8v ;// uint8_t -> int32_t 137u32v = i8v ;// int8_t -> uint32_t 138i64v = i8v ;// int8_t -> int64_t 139u64v = i8v ;// int8_t -> uint64_t 140u32v = u8v ;// uint8_t -> uint32_t 141i64v = u8v ;// uint8_t -> int64_t 142u64v = u8v ;// uint8_t -> uint64_t 143f16v = i8v ;// int8_t -> float16_t 144f32v = i8v ;// int8_t -> float32_t 145f64v = i8v ;// int8_t -> float64_t 146f16v = u8v ;// uint8_t -> float16_t 147f32v = u8v ;// uint8_t -> float32_t 148f64v = u8v ;// uint8_t -> float64_t 149 150i8v = i8vec2 (u8v );// uint8_t -> int8_t 151i16v = i16vec2 (i8v );// int8_t -> int16_t 152i16v = i16vec2 (u8v );// uint8_t -> int16_t 153i32v = i32vec2 (i8v );// int8_t -> int32_t 154i32v = i32vec2 (u8v );// uint8_t -> int32_t 155i64v = i64vec2 (i8v );// int8_t -> int64_t 156u64v = i64vec2 (i8v );// int8_t -> uint64_t 157u16v = u16vec2 (i8v );// int8_t -> uint16_t 158u16v = u16vec2 (u8v );// uint8_t -> uint16_t 159u32v = u32vec2 (u8v );// uint8_t -> uint32_t 160i64v = i64vec2 (u8v );// uint8_t -> int64_t 161u64v = i64vec2 (u8v );// uint8_t -> uint64_t 162f16v = f16vec2 (i8v );// int8_t -> float16_t 163f32v = f32vec2 (i8v );// int8_t -> float32_t 164f64v = f64vec2 (i8v );// int8_t -> float64_t 165f16v = f16vec2 (u8v );// uint8_t -> float16_t 166f32v = f32vec2 (u8v );// uint8_t -> float32_t 167f64v = f64vec2 (u8v );// uint8_t -> float64_t 168 169i8v = i8vec2 (bv );// bool -> int8 170u8v = u8vec2 (bv );// bool -> uint8 171bv = bvec2 (i8v );// int8 -> bool 172bv = bvec2 (u8v );// uint8 -> bool 173} 174 175void typeCast16 () 176{ 177i8vec2 i8v ; 178u8vec2 u8v ; 179i16vec2 i16v ; 180u16vec2 u16v ; 181i32vec2 i32v ; 182u32vec2 u32v ; 183i64vec2 i64v ; 184u64vec2 u64v ; 185f16vec2 f16v ; 186f32vec2 f32v ; 187f64vec2 f64v ; 188bvec2 bv ; 189 190i32v = i16v ;// int16_t -> int32_t 191i32v = u16v ;// uint16_t -> int32_t 192u16v = i16v ;// int16_t -> uint16_t 193u32v = i16v ;// int16_t -> uint32_t 194i64v = i16v ;// int16_t -> int64_t 195u64v = i16v ;// int16_t -> uint64_t 196u32v = u16v ;// uint16_t -> uint32_t 197i64v = u16v ;// uint16_t -> int64_t 198u64v = u16v ;// uint16_t -> uint64_t 199f16v = i16v ;// int16_t -> float16_t 200f32v = i16v ;// int16_t -> float32_t 201f64v = i16v ;// int16_t -> float64_t 202f16v = u16v ;// uint16_t -> float16_t 203f32v = u16v ;// uint16_t -> float32_t 204f64v = u16v ;// uint16_t -> float64_t 205 206i32v = i32vec2 (i16v );// int16_t -> int32_t 207i32v = i32vec2 (u16v );// uint16_t -> int32_t 208u16v = u16vec2 (i16v );// int16_t -> uint16_t 209u32v = u32vec2 (i16v );// int16_t -> uint32_t 210i64v = i64vec2 (i16v );// int16_t -> int64_t 211u64v = i64vec2 (i16v );// int16_t -> uint64_t 212u32v = u32vec2 (u16v );// uint16_t -> uint32_t 213i64v = i64vec2 (u16v );// uint16_t -> int64_t 214u64v = i64vec2 (u16v );// uint16_t -> uint64_t 215f16v = f16vec2 (i16v );// int16_t -> float16_t 216f32v = f32vec2 (i16v );// int16_t -> float32_t 217f64v = f64vec2 (i16v );// int16_t -> float64_t 218f16v = f16vec2 (u16v );// uint16_t -> float16_t 219f32v = f32vec2 (u16v );// uint16_t -> float32_t 220f64v = f64vec2 (u16v );// uint16_t -> float64_t 221 222i8v = i8vec2 (i16v );// int16_t -> int8_t 223i8v = i8vec2 (u16v );// uint16_t -> int8_t 224u8v = u8vec2 (i16v );// int16_t -> uint8_t 225u8v = u8vec2 (u16v );// uint16_t -> uint8_t 226i16v = u8vec2 (u16v );// uint16_t -> int16_t 227i16v = i16vec2 (bv );// bool -> int16 228u16v = u16vec2 (bv );// bool -> uint16 229bv = bvec2 (i16v );// int16 -> bool 230bv = bvec2 (u16v );// uint16 -> bool 231} 232 233void typeCast32 () 234{ 235i8vec2 i8v ; 236u8vec2 u8v ; 237i16vec2 i16v ; 238u16vec2 u16v ; 239i32vec2 i32v ; 240u32vec2 u32v ; 241i64vec2 i64v ; 242u64vec2 u64v ; 243f16vec2 f16v ; 244f32vec2 f32v ; 245f64vec2 f64v ; 246bvec2 bv ; 247 248u32v = i32v ;// int32_t -> uint32_t 249i64v = i32v ;// int32_t -> int64_t 250u64v = i32v ;// int32_t -> uint64_t 251i64v = u32v ;// uint32_t -> int64_t 252u64v = u32v ;// uint32_t -> uint64_t 253f32v = i32v ;// int32_t -> float32_t 254f64v = i32v ;// int32_t -> float64_t 255f32v = u32v ;// uint32_t -> float32_t 256f64v = u32v ;// uint32_t -> float64_t 257 258i8v = i8vec2 (i32v );// int32_t -> int8_t 259i8v = i8vec2 (u32v );// uint32_t -> int8_t 260i16v = i16vec2 (i32v );// int32_t -> int16_t 261i16v = i16vec2 (u32v );// uint32_t -> int16_t 262i32v = i32vec2 (i32v );// int32_t -> int32_t 263i32v = i32vec2 (u32v );// uint32_t -> int32_t 264i64v = i64vec2 (i32v );// int32_t -> int64_t 265i64v = i64vec2 (u32v );// uint32_t -> int64_t 266u8v = u8vec2 (i32v );// int32_t -> uint8_t 267u8v = u8vec2 (u32v );// uint32_t -> uint8_t 268u16v = u16vec2 (i32v );// int32_t -> uint16_t 269u16v = u16vec2 (u32v );// uint32_t -> uint16_t 270u32v = u32vec2 (i32v );// int32_t -> uint32_t 271u32v = u32vec2 (u32v );// uint32_t -> uint32_t 272u64v = u64vec2 (i32v );// int32_t -> uint64_t 273u64v = u64vec2 (u32v );// uint32_t -> uint64_t 274 275f16v = f16vec2 (i32v );// int32_t -> float16_t 276f32v = f32vec2 (i32v );// int32_t -> float32_t 277f64v = f64vec2 (i32v );// int32_t -> float64_t 278f16v = f16vec2 (u32v );// uint32_t -> float16_t 279f32v = f32vec2 (u32v );// uint32_t -> float32_t 280f64v = f64vec2 (u32v );// uint32_t -> float64_t 281 282i32v = i32vec2 (bv );// bool -> int32 283u32v = u32vec2 (bv );// bool -> uint32 284bv = bvec2 (i32v );// int32 -> bool 285bv = bvec2 (u32v );// uint32 -> bool 286} 287 288void typeCast64 () 289{ 290i8vec2 i8v ; 291u8vec2 u8v ; 292i16vec2 i16v ; 293u16vec2 u16v ; 294i32vec2 i32v ; 295u32vec2 u32v ; 296i64vec2 i64v ; 297u64vec2 u64v ; 298f16vec2 f16v ; 299f32vec2 f32v ; 300f64vec2 f64v ; 301bvec2 bv ; 302 303u64v = i64v ;// int64_t -> uint64_t 304f64v = i64v ;// int64_t -> float64_t 305f64v = u64v ;// uint64_t -> float64_t 306 307i8v = i8vec2 (i64v );// int64_t -> int8_t 308i8v = i8vec2 (u64v );// uint64_t -> int8_t 309i16v = i16vec2 (i64v );// int64_t -> int16_t 310i16v = i16vec2 (u64v );// uint64_t -> int16_t 311i32v = i32vec2 (i64v );// int64_t -> int32_t 312i32v = i32vec2 (u64v );// uint64_t -> int32_t 313i64v = i64vec2 (u64v );// uint64_t -> int64_t 314u8v = u8vec2 (i64v );// int64_t -> uint8_t 315u8v = u8vec2 (u64v );// uint64_t -> uint8_t 316u16v = u16vec2 (i64v );// int64_t -> uint16_t 317u16v = u16vec2 (u64v );// uint64_t -> uint16_t 318u32v = u32vec2 (i64v );// int64_t -> uint32_t 319u32v = u32vec2 (u64v );// uint64_t -> uint32_t 320u64v = u64vec2 (i64v );// int64_t -> uint64_t 321u64v = u64vec2 (u64v );// uint64_t -> uint64_t 322 323f16v = f16vec2 (i64v );// int64_t -> float16_t 324f32v = f32vec2 (i64v );// int64_t -> float32_t 325f64v = f64vec2 (i64v );// int64_t -> float64_t 326f16v = f16vec2 (u64v );// uint64_t -> float16_t 327f32v = f32vec2 (u64v );// uint64_t -> float32_t 328f64v = f64vec2 (u64v );// uint64_t -> float64_t 329 330i64v = i64vec2 (bv );// bool -> int64 331u64v = u64vec2 (bv );// bool -> uint64 332bv = bvec2 (i64v );// int64 -> bool 333bv = bvec2 (u64v );// uint64 -> bool 334}