Add suite of div by zero tests
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / data / vulkan / amber / crash_test / divbyzero_comp.amber
1 #!amber
2 # Copyright 2021 Google LLC
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 SHADER compute compute_shader GLSL
17 #version 450
18 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
19
20 layout(binding = 0) buffer block0
21 {
22     int data;
23 } ssbo_array[20];
24
25 void main()
26 {
27   // Zero constants
28   int ival = ssbo_array[0].data;
29   float val = float(ival);
30
31   // int div
32   ssbo_array[1].data = 7 / ival;
33   // float div
34   ssbo_array[2].data = int(7.0 / val);
35   // normalize float
36   ssbo_array[3].data = int(normalize(val));
37   // normalize vec2
38   ssbo_array[4].data = int(normalize(vec2(val))[ival]);
39   // normalize vec3
40   ssbo_array[5].data = int(normalize(vec3(val))[ival]);
41   // normalize vec4
42   ssbo_array[6].data = int(normalize(vec4(val))[ival]);
43   // integer mod
44   ssbo_array[7].data = 7 % ival;
45   // float mod
46   ssbo_array[8].data = int(mod(7.0, val));
47   // vec2 mod
48   ssbo_array[9].data = int(mod(vec2(7.0), vec2(val))[ival]);
49   // vec3 mod
50   ssbo_array[10].data = int(mod(vec3(7.0), vec3(val))[ival]);
51   // vec4 mod
52   ssbo_array[11].data = int(mod(vec4(7.0), vec4(val))[ival]);
53   // float smoothstep
54   ssbo_array[12].data = int(smoothstep(val, val, 0.3));
55   // vec2 smoothstep
56   ssbo_array[13].data = int(smoothstep(vec2(val), vec2(val), vec2(0.3))[ival]);
57   // vec3 smoothstep
58   ssbo_array[14].data = int(smoothstep(vec3(val), vec3(val), vec3(0.3))[ival]);
59   // vec4 smoothstep
60   ssbo_array[15].data = int(smoothstep(vec4(val), vec4(val), vec4(0.3))[ival]);
61   // float atan2
62   ssbo_array[16].data = int(atan(7.0, val));
63   // vec2 atan2
64   ssbo_array[17].data = int(atan(vec2(7.0), vec2(val))[ival]);
65   // vec3 atan2
66   ssbo_array[18].data = int(atan(vec3(7.0), vec3(val))[ival]);
67   // vec4 atan2
68   ssbo_array[19].data = int(atan(vec4(7.0), vec4(val))[ival]);
69
70   // Known good value
71   ssbo_array[0].data = 42;
72 }
73 END
74
75 BUFFER buf0 DATA_TYPE int32 DATA
76 0
77 END
78 BUFFER buf1 DATA_TYPE int32 DATA
79 0
80 END
81 BUFFER buf2 DATA_TYPE int32 DATA
82 0
83 END
84 BUFFER buf3 DATA_TYPE int32 DATA
85 0
86 END
87 BUFFER buf4 DATA_TYPE int32 DATA
88 0
89 END
90 BUFFER buf5 DATA_TYPE int32 DATA
91 0
92 END
93 BUFFER buf6 DATA_TYPE int32 DATA
94 0
95 END
96 BUFFER buf7 DATA_TYPE int32 DATA
97 0
98 END
99 BUFFER buf8 DATA_TYPE int32 DATA
100 0
101 END
102 BUFFER buf9 DATA_TYPE int32 DATA
103 0
104 END
105 BUFFER buf10 DATA_TYPE int32 DATA
106 0
107 END
108 BUFFER buf11 DATA_TYPE int32 DATA
109 0
110 END
111 BUFFER buf12 DATA_TYPE int32 DATA
112 0
113 END
114 BUFFER buf13 DATA_TYPE int32 DATA
115 0
116 END
117 BUFFER buf14 DATA_TYPE int32 DATA
118 0
119 END
120 BUFFER buf15 DATA_TYPE int32 DATA
121 0
122 END
123 BUFFER buf16 DATA_TYPE int32 DATA
124 0
125 END
126 BUFFER buf17 DATA_TYPE int32 DATA
127 0
128 END
129 BUFFER buf18 DATA_TYPE int32 DATA
130 0
131 END
132 BUFFER buf19 DATA_TYPE int32 DATA
133 0
134 END
135
136 PIPELINE compute pipeline
137   ATTACH compute_shader
138
139   BIND BUFFER_ARRAY buf0 buf1 buf2 buf3 buf4 buf5 buf6 buf7 buf8 buf9 buf10 buf11 buf12 buf13 buf14 buf15 buf16 buf17 buf18 buf19 AS storage DESCRIPTOR_SET 0 BINDING 0
140 END
141
142 RUN pipeline 1 1 1
143
144 EXPECT buf0 IDX 0 EQ 42