1#version 450 2 3#extension GL_EXT_shader_explicit_arithmetic_types : require 4 5const bool bool_init = true; 6const int8_t int8_t_init = int8_t(-1); 7const int16_t int16_t_init = int16_t(-2); 8const int32_t int32_t_init = int32_t(-3); 9const int64_t int64_t_init = int64_t(-4); 10const uint8_t uint8_t_init = uint8_t(1); 11const uint16_t uint16_t_init = uint16_t(2); 12const uint32_t uint32_t_init = uint32_t(3); 13const uint64_t uint64_t_init = uint64_t(4); 14const float16_t float16_t_init = float16_t(42.0); 15const float32_t float32_t_init = float32_t(13.0); 16const float64_t float64_t_init = float64_t(4.0); 17 18const float16_t neg_float16_t_init = float16_t(-42.0); 19const float32_t neg_float32_t_init = float32_t(-13.0); 20const float64_t neg_float64_t_init = float64_t(-4.0); 21 22#define TYPE_TO_TYPE(x, y) \ 23 const x y##_to_##x = x(y##_init) 24 25#define TYPE_TO_TYPE_PREFIX(prefix, x, y) \ 26 const x prefix##_##y##_to_##x = x(prefix##_##y##_init) 27 28#define TYPE_TO(x) \ 29 TYPE_TO_TYPE(x, bool); \ 30 TYPE_TO_TYPE(x, int8_t); \ 31 TYPE_TO_TYPE(x, int16_t); \ 32 TYPE_TO_TYPE(x, int32_t); \ 33 TYPE_TO_TYPE(x, int64_t); \ 34 TYPE_TO_TYPE(x, uint8_t); \ 35 TYPE_TO_TYPE(x, uint16_t); \ 36 TYPE_TO_TYPE(x, uint32_t); \ 37 TYPE_TO_TYPE(x, uint64_t); \ 38 TYPE_TO_TYPE(x, float16_t); \ 39 TYPE_TO_TYPE(x, float32_t); \ 40 TYPE_TO_TYPE(x, float64_t) 41 42TYPE_TO(bool); 43TYPE_TO(int8_t); 44TYPE_TO(int16_t); 45TYPE_TO(int32_t); 46TYPE_TO(int64_t); 47TYPE_TO(uint8_t); 48TYPE_TO(uint16_t); 49TYPE_TO(uint32_t); 50TYPE_TO(uint64_t); 51TYPE_TO(float16_t); 52TYPE_TO(float32_t); 53TYPE_TO(float64_t); 54 55#define NEG_FLOAT_TO(x) \ 56 TYPE_TO_TYPE_PREFIX(neg, x, float16_t); \ 57 TYPE_TO_TYPE_PREFIX(neg, x, float32_t); \ 58 TYPE_TO_TYPE_PREFIX(neg, x, float64_t) 59 60NEG_FLOAT_TO(bool); 61NEG_FLOAT_TO(int8_t); 62NEG_FLOAT_TO(int16_t); 63NEG_FLOAT_TO(int32_t); 64NEG_FLOAT_TO(int64_t); 65NEG_FLOAT_TO(float16_t); 66NEG_FLOAT_TO(float32_t); 67NEG_FLOAT_TO(float64_t); 68 69void main() {} 70