Add conversion folding when the source is a constant.
[platform/upstream/glslang.git] / Test / constantUnaryConversion.comp
1 #version 450\r
2 \r
3 #extension GL_KHX_shader_explicit_arithmetic_types : require\r
4 \r
5 const bool bool_init = true;\r
6 const int8_t int8_t_init = int8_t(-1);\r
7 const int16_t int16_t_init = int16_t(-2);\r
8 const int32_t int32_t_init = int32_t(-3);\r
9 const int64_t int64_t_init = int64_t(-4);\r
10 const uint8_t uint8_t_init = uint8_t(1);\r
11 const uint16_t uint16_t_init = uint16_t(2);\r
12 const uint32_t uint32_t_init = uint32_t(3);\r
13 const uint64_t uint64_t_init = uint64_t(4);\r
14 const float16_t float16_t_init = float16_t(42.0);\r
15 const float32_t float32_t_init = float32_t(13.0);\r
16 const float64_t float64_t_init = float64_t(-4.0);\r
17 \r
18 #define TYPE_TO_TYPE(x, y) \\r
19     const x y##_to_##x = x(y##_init)\r
20 \r
21 #define TYPE_TO(x)              \\r
22     TYPE_TO_TYPE(x, bool);      \\r
23     TYPE_TO_TYPE(x, int8_t);    \\r
24     TYPE_TO_TYPE(x, int16_t);   \\r
25     TYPE_TO_TYPE(x, int32_t);   \\r
26     TYPE_TO_TYPE(x, int64_t);   \\r
27     TYPE_TO_TYPE(x, uint8_t);   \\r
28     TYPE_TO_TYPE(x, uint16_t);  \\r
29     TYPE_TO_TYPE(x, uint32_t);  \\r
30     TYPE_TO_TYPE(x, uint64_t);  \\r
31     TYPE_TO_TYPE(x, float16_t); \\r
32     TYPE_TO_TYPE(x, float32_t); \\r
33     TYPE_TO_TYPE(x, float64_t)\r
34 \r
35 TYPE_TO(bool);\r
36 TYPE_TO(int8_t);\r
37 TYPE_TO(int16_t);\r
38 TYPE_TO(int32_t);\r
39 TYPE_TO(int64_t);\r
40 TYPE_TO(uint8_t);\r
41 TYPE_TO(uint16_t);\r
42 TYPE_TO(uint32_t);\r
43 TYPE_TO(uint64_t);\r
44 TYPE_TO(float16_t);\r
45 TYPE_TO(float32_t);\r
46 TYPE_TO(float64_t);\r
47 \r
48 void main() {}\r