diff --git a/vulkan/data/brick.png b/vulkan/data/brick.png new file mode 100644 index 0000000..2dbc654 Binary files /dev/null and b/vulkan/data/brick.png differ diff --git a/vulkan/data/device_group/sphere.png b/vulkan/data/device_group/sphere.png new file mode 100644 index 0000000..c638fea Binary files /dev/null and b/vulkan/data/device_group/sphere.png differ diff --git a/vulkan/data/device_group/spherefilled.png b/vulkan/data/device_group/spherefilled.png new file mode 100644 index 0000000..4bbfcef Binary files /dev/null and b/vulkan/data/device_group/spherefilled.png differ diff --git a/vulkan/data/geometry/line_strip.png b/vulkan/data/geometry/line_strip.png new file mode 100644 index 0000000..26e096e Binary files /dev/null and b/vulkan/data/geometry/line_strip.png differ diff --git a/vulkan/data/geometry/line_strip_adjacency.png b/vulkan/data/geometry/line_strip_adjacency.png new file mode 100644 index 0000000..fd4cae3 Binary files /dev/null and b/vulkan/data/geometry/line_strip_adjacency.png differ diff --git a/vulkan/data/geometry/line_strip_emit_0_end_0.png b/vulkan/data/geometry/line_strip_emit_0_end_0.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_0_end_0.png differ diff --git a/vulkan/data/geometry/line_strip_emit_0_end_1.png b/vulkan/data/geometry/line_strip_emit_0_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_0_end_1.png differ diff --git a/vulkan/data/geometry/line_strip_emit_0_end_2.png b/vulkan/data/geometry/line_strip_emit_0_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_0_end_2.png differ diff --git a/vulkan/data/geometry/line_strip_emit_1_end_1.png b/vulkan/data/geometry/line_strip_emit_1_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_1_end_1.png differ diff --git a/vulkan/data/geometry/line_strip_emit_1_end_2.png b/vulkan/data/geometry/line_strip_emit_1_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_1_end_2.png differ diff --git a/vulkan/data/geometry/line_strip_emit_2_end_1.png b/vulkan/data/geometry/line_strip_emit_2_end_1.png new file mode 100644 index 0000000..22e374d Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_2_end_1.png differ diff --git a/vulkan/data/geometry/line_strip_emit_2_end_2.png b/vulkan/data/geometry/line_strip_emit_2_end_2.png new file mode 100644 index 0000000..22e374d Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_2_end_2.png differ diff --git a/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png b/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png new file mode 100644 index 0000000..c983ed7 Binary files /dev/null and b/vulkan/data/geometry/line_strip_emit_2_end_2_emit_2_end_0.png differ diff --git a/vulkan/data/geometry/lines.png b/vulkan/data/geometry/lines.png new file mode 100644 index 0000000..1664be8 Binary files /dev/null and b/vulkan/data/geometry/lines.png differ diff --git a/vulkan/data/geometry/lines_adjacency.png b/vulkan/data/geometry/lines_adjacency.png new file mode 100644 index 0000000..9a39777 Binary files /dev/null and b/vulkan/data/geometry/lines_adjacency.png differ diff --git a/vulkan/data/geometry/lines_to_points.png b/vulkan/data/geometry/lines_to_points.png new file mode 100644 index 0000000..ada60c7 Binary files /dev/null and b/vulkan/data/geometry/lines_to_points.png differ diff --git a/vulkan/data/geometry/lines_to_triangles.png b/vulkan/data/geometry/lines_to_triangles.png new file mode 100644 index 0000000..f6ab4dd Binary files /dev/null and b/vulkan/data/geometry/lines_to_triangles.png differ diff --git a/vulkan/data/geometry/output_0_and_128.png b/vulkan/data/geometry/output_0_and_128.png new file mode 100644 index 0000000..860a6cb Binary files /dev/null and b/vulkan/data/geometry/output_0_and_128.png differ diff --git a/vulkan/data/geometry/output_10.png b/vulkan/data/geometry/output_10.png new file mode 100644 index 0000000..26c7c04 Binary files /dev/null and b/vulkan/data/geometry/output_10.png differ diff --git a/vulkan/data/geometry/output_100_and_10.png b/vulkan/data/geometry/output_100_and_10.png new file mode 100644 index 0000000..806ab0e Binary files /dev/null and b/vulkan/data/geometry/output_100_and_10.png differ diff --git a/vulkan/data/geometry/output_10_and_100.png b/vulkan/data/geometry/output_10_and_100.png new file mode 100644 index 0000000..09cd801 Binary files /dev/null and b/vulkan/data/geometry/output_10_and_100.png differ diff --git a/vulkan/data/geometry/output_128.png b/vulkan/data/geometry/output_128.png new file mode 100644 index 0000000..c29ccc0 Binary files /dev/null and b/vulkan/data/geometry/output_128.png differ diff --git a/vulkan/data/geometry/output_128_and_0.png b/vulkan/data/geometry/output_128_and_0.png new file mode 100644 index 0000000..35aa909 Binary files /dev/null and b/vulkan/data/geometry/output_128_and_0.png differ diff --git a/vulkan/data/geometry/output_max.png b/vulkan/data/geometry/output_max.png new file mode 100644 index 0000000..c29ccc0 Binary files /dev/null and b/vulkan/data/geometry/output_max.png differ diff --git a/vulkan/data/geometry/output_vary_by_attribute.png b/vulkan/data/geometry/output_vary_by_attribute.png new file mode 100644 index 0000000..e3d6953 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_attribute.png differ diff --git a/vulkan/data/geometry/output_vary_by_attribute_instancing.png b/vulkan/data/geometry/output_vary_by_attribute_instancing.png new file mode 100644 index 0000000..d08fb34 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_attribute_instancing.png differ diff --git a/vulkan/data/geometry/output_vary_by_texture.png b/vulkan/data/geometry/output_vary_by_texture.png new file mode 100644 index 0000000..0e655b7 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_texture.png differ diff --git a/vulkan/data/geometry/output_vary_by_texture_instancing.png b/vulkan/data/geometry/output_vary_by_texture_instancing.png new file mode 100644 index 0000000..b33b647 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_texture_instancing.png differ diff --git a/vulkan/data/geometry/output_vary_by_uniform.png b/vulkan/data/geometry/output_vary_by_uniform.png new file mode 100644 index 0000000..0e655b7 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_uniform.png differ diff --git a/vulkan/data/geometry/output_vary_by_uniform_instancing.png b/vulkan/data/geometry/output_vary_by_uniform_instancing.png new file mode 100644 index 0000000..b33b647 Binary files /dev/null and b/vulkan/data/geometry/output_vary_by_uniform_instancing.png differ diff --git a/vulkan/data/geometry/point_size.png b/vulkan/data/geometry/point_size.png new file mode 100644 index 0000000..cdb848c Binary files /dev/null and b/vulkan/data/geometry/point_size.png differ diff --git a/vulkan/data/geometry/points.png b/vulkan/data/geometry/points.png new file mode 100644 index 0000000..c1a7d47 Binary files /dev/null and b/vulkan/data/geometry/points.png differ diff --git a/vulkan/data/geometry/points_emit_0_end_0.png b/vulkan/data/geometry/points_emit_0_end_0.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/points_emit_0_end_0.png differ diff --git a/vulkan/data/geometry/points_emit_0_end_1.png b/vulkan/data/geometry/points_emit_0_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/points_emit_0_end_1.png differ diff --git a/vulkan/data/geometry/points_emit_0_end_2.png b/vulkan/data/geometry/points_emit_0_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/points_emit_0_end_2.png differ diff --git a/vulkan/data/geometry/points_emit_1_end_1.png b/vulkan/data/geometry/points_emit_1_end_1.png new file mode 100644 index 0000000..c50c0fd Binary files /dev/null and b/vulkan/data/geometry/points_emit_1_end_1.png differ diff --git a/vulkan/data/geometry/points_emit_1_end_2.png b/vulkan/data/geometry/points_emit_1_end_2.png new file mode 100644 index 0000000..c50c0fd Binary files /dev/null and b/vulkan/data/geometry/points_emit_1_end_2.png differ diff --git a/vulkan/data/geometry/points_to_lines.png b/vulkan/data/geometry/points_to_lines.png new file mode 100644 index 0000000..40460f8 Binary files /dev/null and b/vulkan/data/geometry/points_to_lines.png differ diff --git a/vulkan/data/geometry/points_to_triangles.png b/vulkan/data/geometry/points_to_triangles.png new file mode 100644 index 0000000..69caa8e Binary files /dev/null and b/vulkan/data/geometry/points_to_triangles.png differ diff --git a/vulkan/data/geometry/primitive_id.png b/vulkan/data/geometry/primitive_id.png new file mode 100644 index 0000000..ddb9442 Binary files /dev/null and b/vulkan/data/geometry/primitive_id.png differ diff --git a/vulkan/data/geometry/primitive_id_in.png b/vulkan/data/geometry/primitive_id_in.png new file mode 100644 index 0000000..ca37392 Binary files /dev/null and b/vulkan/data/geometry/primitive_id_in.png differ diff --git a/vulkan/data/geometry/primitive_id_in_restarted.png b/vulkan/data/geometry/primitive_id_in_restarted.png new file mode 100644 index 0000000..5dd4dc2 Binary files /dev/null and b/vulkan/data/geometry/primitive_id_in_restarted.png differ diff --git a/vulkan/data/geometry/triangle_fan.png b/vulkan/data/geometry/triangle_fan.png new file mode 100644 index 0000000..720b717 Binary files /dev/null and b/vulkan/data/geometry/triangle_fan.png differ diff --git a/vulkan/data/geometry/triangle_strip.png b/vulkan/data/geometry/triangle_strip.png new file mode 100644 index 0000000..c4fa315 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_0.png b/vulkan/data/geometry/triangle_strip_emit_0_end_0.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_0_end_0.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_1.png b/vulkan/data/geometry/triangle_strip_emit_0_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_0_end_1.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_0_end_2.png b/vulkan/data/geometry/triangle_strip_emit_0_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_0_end_2.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_1_end_1.png b/vulkan/data/geometry/triangle_strip_emit_1_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_1_end_1.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_1_end_2.png b/vulkan/data/geometry/triangle_strip_emit_1_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_1_end_2.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_2_end_1.png b/vulkan/data/geometry/triangle_strip_emit_2_end_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_2_end_1.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_2_end_2.png b/vulkan/data/geometry/triangle_strip_emit_2_end_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_2_end_2.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_1.png b/vulkan/data/geometry/triangle_strip_emit_3_end_1.png new file mode 100644 index 0000000..1faf7ca Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_3_end_1.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_2.png b/vulkan/data/geometry/triangle_strip_emit_3_end_2.png new file mode 100644 index 0000000..1faf7ca Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_3_end_2.png differ diff --git a/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png b/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png new file mode 100644 index 0000000..b493c28 Binary files /dev/null and b/vulkan/data/geometry/triangle_strip_emit_3_end_2_emit_3_end_0.png differ diff --git a/vulkan/data/geometry/triangles.png b/vulkan/data/geometry/triangles.png new file mode 100644 index 0000000..ebfe79a Binary files /dev/null and b/vulkan/data/geometry/triangles.png differ diff --git a/vulkan/data/geometry/triangles_adjacency.png b/vulkan/data/geometry/triangles_adjacency.png new file mode 100644 index 0000000..14e87ed Binary files /dev/null and b/vulkan/data/geometry/triangles_adjacency.png differ diff --git a/vulkan/data/geometry/triangles_to_lines.png b/vulkan/data/geometry/triangles_to_lines.png new file mode 100644 index 0000000..6a43f3d Binary files /dev/null and b/vulkan/data/geometry/triangles_to_lines.png differ diff --git a/vulkan/data/geometry/triangles_to_points.png b/vulkan/data/geometry/triangles_to_points.png new file mode 100644 index 0000000..281a37c Binary files /dev/null and b/vulkan/data/geometry/triangles_to_points.png differ diff --git a/vulkan/data/geometry/vertex_count_0.png b/vulkan/data/geometry/vertex_count_0.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_0.png differ diff --git a/vulkan/data/geometry/vertex_count_1.png b/vulkan/data/geometry/vertex_count_1.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_1.png differ diff --git a/vulkan/data/geometry/vertex_count_10.png b/vulkan/data/geometry/vertex_count_10.png new file mode 100644 index 0000000..9cac87e Binary files /dev/null and b/vulkan/data/geometry/vertex_count_10.png differ diff --git a/vulkan/data/geometry/vertex_count_11.png b/vulkan/data/geometry/vertex_count_11.png new file mode 100644 index 0000000..9cac87e Binary files /dev/null and b/vulkan/data/geometry/vertex_count_11.png differ diff --git a/vulkan/data/geometry/vertex_count_12.png b/vulkan/data/geometry/vertex_count_12.png new file mode 100644 index 0000000..9a627f1 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_12.png differ diff --git a/vulkan/data/geometry/vertex_count_2.png b/vulkan/data/geometry/vertex_count_2.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_2.png differ diff --git a/vulkan/data/geometry/vertex_count_3.png b/vulkan/data/geometry/vertex_count_3.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_3.png differ diff --git a/vulkan/data/geometry/vertex_count_4.png b/vulkan/data/geometry/vertex_count_4.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_4.png differ diff --git a/vulkan/data/geometry/vertex_count_5.png b/vulkan/data/geometry/vertex_count_5.png new file mode 100644 index 0000000..fc45c50 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_5.png differ diff --git a/vulkan/data/geometry/vertex_count_6.png b/vulkan/data/geometry/vertex_count_6.png new file mode 100644 index 0000000..09a4b81 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_6.png differ diff --git a/vulkan/data/geometry/vertex_count_7.png b/vulkan/data/geometry/vertex_count_7.png new file mode 100644 index 0000000..09a4b81 Binary files /dev/null and b/vulkan/data/geometry/vertex_count_7.png differ diff --git a/vulkan/data/geometry/vertex_count_8.png b/vulkan/data/geometry/vertex_count_8.png new file mode 100644 index 0000000..ab83eec Binary files /dev/null and b/vulkan/data/geometry/vertex_count_8.png differ diff --git a/vulkan/data/geometry/vertex_count_9.png b/vulkan/data/geometry/vertex_count_9.png new file mode 100644 index 0000000..ab83eec Binary files /dev/null and b/vulkan/data/geometry/vertex_count_9.png differ diff --git a/vulkan/data/geometry/vertex_no_op_geometry_out_1.png b/vulkan/data/geometry/vertex_no_op_geometry_out_1.png new file mode 100644 index 0000000..3b8f7db Binary files /dev/null and b/vulkan/data/geometry/vertex_no_op_geometry_out_1.png differ diff --git a/vulkan/data/geometry/vertex_out_0_geometry_out_1.png b/vulkan/data/geometry/vertex_out_0_geometry_out_1.png new file mode 100644 index 0000000..f071c17 Binary files /dev/null and b/vulkan/data/geometry/vertex_out_0_geometry_out_1.png differ diff --git a/vulkan/data/geometry/vertex_out_0_geometry_out_2.png b/vulkan/data/geometry/vertex_out_0_geometry_out_2.png new file mode 100644 index 0000000..f071c17 Binary files /dev/null and b/vulkan/data/geometry/vertex_out_0_geometry_out_2.png differ diff --git a/vulkan/data/geometry/vertex_out_1_geometry_out_0.png b/vulkan/data/geometry/vertex_out_1_geometry_out_0.png new file mode 100644 index 0000000..f071c17 Binary files /dev/null and b/vulkan/data/geometry/vertex_out_1_geometry_out_0.png differ diff --git a/vulkan/data/geometry/vertex_out_1_geometry_out_2.png b/vulkan/data/geometry/vertex_out_1_geometry_out_2.png new file mode 100644 index 0000000..43eee1c Binary files /dev/null and b/vulkan/data/geometry/vertex_out_1_geometry_out_2.png differ diff --git a/vulkan/data/tessellation/barrier_ref.png b/vulkan/data/tessellation/barrier_ref.png new file mode 100644 index 0000000..1f68aae Binary files /dev/null and b/vulkan/data/tessellation/barrier_ref.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png new file mode 100644 index 0000000..8340b25 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png new file mode 100644 index 0000000..af13309 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png new file mode 100644 index 0000000..edcb04f Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_equal_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000..e7752a4 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000..bfc84fb Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000..b205d3d Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_even_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000..8340b25 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000..8a2f165 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000..f3faa84 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_quads_fractional_odd_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png new file mode 100644 index 0000000..d6b5428 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png new file mode 100644 index 0000000..1832754 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png new file mode 100644 index 0000000..d1c1c99 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_equal_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000..9308abf Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000..2fdc5df Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000..29a85e0 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_even_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000..d6b5428 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000..853a31c Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000..58f3352 Binary files /dev/null and b/vulkan/data/tessellation/fill_cover_triangles_fractional_odd_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png new file mode 100644 index 0000000..d240932 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png new file mode 100644 index 0000000..87d5764 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png new file mode 100644 index 0000000..61c801d Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_equal_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000..a9065f6 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000..2b1f010 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000..7f37cd1 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_even_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000..d240932 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000..f8ed000 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000..e218794 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_quads_fractional_odd_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png new file mode 100644 index 0000000..89c3533 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png new file mode 100644 index 0000000..fd94847 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png new file mode 100644 index 0000000..a2e7044 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_equal_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000..9336230 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000..6a58a2a Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000..342e109 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_even_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000..89c3533 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000..56d0fce Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000..a2e7044 Binary files /dev/null and b/vulkan/data/tessellation/fill_overlap_triangles_fractional_odd_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/gl_position_ref.png b/vulkan/data/tessellation/gl_position_ref.png new file mode 100644 index 0000000..e9a9c57 Binary files /dev/null and b/vulkan/data/tessellation/gl_position_ref.png differ diff --git a/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png b/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png new file mode 100644 index 0000000..c7b6e82 Binary files /dev/null and b/vulkan/data/tessellation/isolines_equal_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png b/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png new file mode 100644 index 0000000..110b3cc Binary files /dev/null and b/vulkan/data/tessellation/isolines_equal_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png b/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png new file mode 100644 index 0000000..9744722 Binary files /dev/null and b/vulkan/data/tessellation/isolines_equal_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png new file mode 100644 index 0000000..70cb8ea Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png new file mode 100644 index 0000000..1659c51 Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png new file mode 100644 index 0000000..9106ff5 Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_even_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png new file mode 100644 index 0000000..c7b6e82 Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_0.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png new file mode 100644 index 0000000..a90a547 Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_1.png differ diff --git a/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png new file mode 100644 index 0000000..62e87e3 Binary files /dev/null and b/vulkan/data/tessellation/isolines_fractional_odd_spacing_ref_2.png differ diff --git a/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png b/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png new file mode 100644 index 0000000..adf9cf7 Binary files /dev/null and b/vulkan/data/tessellation/patch_vertices_10_in_5_out_ref.png differ diff --git a/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png b/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png new file mode 100644 index 0000000..5f296ee Binary files /dev/null and b/vulkan/data/tessellation/patch_vertices_5_in_10_out_ref.png differ diff --git a/vulkan/data/tessellation/primitive_id_tcs_ref.png b/vulkan/data/tessellation/primitive_id_tcs_ref.png new file mode 100644 index 0000000..011fc6c Binary files /dev/null and b/vulkan/data/tessellation/primitive_id_tcs_ref.png differ diff --git a/vulkan/data/tessellation/primitive_id_tes_ref.png b/vulkan/data/tessellation/primitive_id_tes_ref.png new file mode 100644 index 0000000..011fc6c Binary files /dev/null and b/vulkan/data/tessellation/primitive_id_tes_ref.png differ diff --git a/vulkan/data/tessellation/user_defined_io_isolines_ref.png b/vulkan/data/tessellation/user_defined_io_isolines_ref.png new file mode 100644 index 0000000..310c9d8 Binary files /dev/null and b/vulkan/data/tessellation/user_defined_io_isolines_ref.png differ diff --git a/vulkan/data/tessellation/user_defined_io_quads_ref.png b/vulkan/data/tessellation/user_defined_io_quads_ref.png new file mode 100644 index 0000000..02bf1d5 Binary files /dev/null and b/vulkan/data/tessellation/user_defined_io_quads_ref.png differ diff --git a/vulkan/data/tessellation/user_defined_io_triangles_ref.png b/vulkan/data/tessellation/user_defined_io_triangles_ref.png new file mode 100644 index 0000000..ce98970 Binary files /dev/null and b/vulkan/data/tessellation/user_defined_io_triangles_ref.png differ diff --git a/vulkan/glsl/440/linkage.test b/vulkan/glsl/440/linkage.test new file mode 100644 index 0000000..7b855f4 --- /dev/null +++ b/vulkan/glsl/440/linkage.test @@ -0,0 +1,2607 @@ + +# Varying tests +group varying "Varying linkage" + group component "Component qualifier" + group vert_in "Vertex shader input" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Read vertex input (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 0) out vec2 var0; + + void main() + { + vec2 in0 = vec2(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_unused + version 440 core + desc "Read vertex input (vec2) as float float. Read unused fourth component." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec2 var0; + + void main() + { + vec2 in0 = vec2(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Read vertex input (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_float_unused + version 440 core + desc "Read vertex input (vec3) as float float float. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1, in0_2); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2 + version 440 core + desc "Read vertex input (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_unused + version 440 core + desc "Read vertex input (vec3) as float vec2. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float + version 440 core + desc "Read vertex input (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_unused + version 440 core + desc "Read vertex input (vec3) as vec2 float. Read unused fourth component." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec3 var0; + + void main() + { + vec3 in0 = vec3(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Read vertex input (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in float in0_2; + layout(location = 1, component = 3) in float in0_3; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2, in0_3); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Read vertex input (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in float in0_1; + layout(location = 1, component = 2) in vec2 in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Read vertex input (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec2 in0_1; + layout(location = 1, component = 3) in float in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec3 + version 440 core + desc "Read vertex input (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in float in0_0; + layout(location = 1, component = 1) in vec3 in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Read vertex input (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in float in0_1; + layout(location = 1, component = 3) in float in0_2; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Read vertex input (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec2 in0_0; + layout(location = 1, component = 2) in vec2 in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec3_float + version 440 core + desc "Read vertex input (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in vec3 in0_0; + layout(location = 1, component = 3) in float in0_1; + layout(location = 0) out vec4 var0; + + void main() + { + vec4 in0 = vec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Read vertex input (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 0) out ivec2 var0; + + void main() + { + ivec2 in0 = ivec2(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_unused + version 440 core + desc "Read vertex input (ivec2) as int int. Read unused fourth component." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 3) in int in0_3; + layout(location = 0) out ivec2 var0; + + void main() + { + ivec2 in0 = ivec2(in0_0, in0_1); + var0 = in0_3 * in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Read vertex input (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 2) in int in0_2; + layout(location = 1, component = 3) in int in0_3; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2, in0_3); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Read vertex input (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in int in0_1; + layout(location = 1, component = 2) in ivec2 in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Read vertex input (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in ivec2 in0_1; + layout(location = 1, component = 3) in int in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Read vertex input (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in int in0_0; + layout(location = 1, component = 1) in ivec3 in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Read vertex input (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec2 in0_0; + layout(location = 1, component = 2) in int in0_1; + layout(location = 1, component = 3) in int in0_2; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1, in0_2); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Read vertex input (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec2 in0_0; + layout(location = 1, component = 2) in ivec2 in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec3_int + version 440 core + desc "Read vertex input (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1, component = 0) in ivec3 in0_0; + layout(location = 1, component = 3) in int in0_1; + layout(location = 0) out ivec4 var0; + + void main() + { + ivec4 in0 = ivec4(in0_0, in0_1); + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + end + group vert_out_frag_in "Vertex shader output and fragment shader input" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Write vertex output and read fragment input (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec2 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0) out vec2 dEQP_FragColor; + + void main() + { + vec2 var0 = vec2(var0_0, var0_1); + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Write vertex output and read fragment input (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out float var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in float var0_2; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1, var0_2); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec2 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec2 var0_1; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float + version 440 core + desc "Write vertex output and read fragment input (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out float var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in float var0_1; + layout(location = 0) out vec3 dEQP_FragColor; + + void main() + { + vec3 var0 = vec3(var0_0, var0_1); + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor = out0; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out float var0_2; + layout(location = 0, component = 3) out float var0_3; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + var0_3 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in float var0_2; + layout(location = 0, component = 3) in float var0_3; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2, var0_3); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out float var0_1; + layout(location = 0, component = 2) out vec2 var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in float var0_1; + layout(location = 0, component = 2) in vec2 var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec2 var0_1; + layout(location = 0, component = 3) out float var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec2 var0_1; + layout(location = 0, component = 3) in float var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_float_vec3 + version 440 core + desc "Write vertex output and read fragment input (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out float var0_0; + layout(location = 0, component = 1) out vec3 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yzw + in0.yzw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in float var0_0; + layout(location = 0, component = 1) in vec3 var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out float var0_1; + layout(location = 0, component = 3) out float var0_2; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in float var0_1; + layout(location = 0, component = 3) in float var0_2; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1, var0_2); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec2 var0_0; + layout(location = 0, component = 2) out vec2 var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec2 var0_0; + layout(location = 0, component = 2) in vec2 var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + case as_vec3_float + version 440 core + desc "Write vertex output and read fragment input (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0, component = 0) out vec3 var0_0; + layout(location = 0, component = 3) out float var0_1; + + void main() + { + var0_0 = in0.xyz + in0.xyz; + var0_1 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) in vec3 var0_0; + layout(location = 0, component = 3) in float var0_1; + layout(location = 0) out vec4 dEQP_FragColor; + + void main() + { + vec4 var0 = vec4(var0_0, var0_1); + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor = out0; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec2 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0) out ivec2 dEQP_FragColor; + + void main() + { + ivec2 var0 = ivec2(var0_0, var0_1); + ivec2 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + layout(location = 0, component = 2) out int var0_2; + layout(location = 0, component = 3) out int var0_3; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.z + in0.z; + var0_3 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0, component = 2) flat in int var0_2; + layout(location = 0, component = 3) flat in int var0_3; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2, var0_3); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out int var0_1; + layout(location = 0, component = 2) out ivec2 var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.y + in0.y; + var0_2 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in int var0_1; + layout(location = 0, component = 2) flat in ivec2 var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out ivec2 var0_1; + layout(location = 0, component = 3) out int var0_2; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yz + in0.yz; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in ivec2 var0_1; + layout(location = 0, component = 3) flat in int var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out int var0_0; + layout(location = 0, component = 1) out ivec3 var0_1; + + void main() + { + var0_0 = in0.x + in0.x; + var0_1 = in0.yzw + in0.yzw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in int var0_0; + layout(location = 0, component = 1) flat in ivec3 var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec2 var0_0; + layout(location = 0, component = 2) out int var0_1; + layout(location = 0, component = 3) out int var0_2; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.z + in0.z; + var0_2 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec2 var0_0; + layout(location = 0, component = 2) flat in int var0_1; + layout(location = 0, component = 3) flat in int var0_2; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1, var0_2); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec2 var0_0; + layout(location = 0, component = 2) out ivec2 var0_1; + + void main() + { + var0_0 = in0.xy + in0.xy; + var0_1 = in0.zw + in0.zw; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec2 var0_0; + layout(location = 0, component = 2) flat in ivec2 var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + case as_ivec3_int + version 440 core + desc "Write vertex output and read fragment input (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0, component = 0) out ivec3 var0_0; + layout(location = 0, component = 3) out int var0_1; + + void main() + { + var0_0 = in0.xyz + in0.xyz; + var0_1 = in0.w + in0.w; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0, component = 0) flat in ivec3 var0_0; + layout(location = 0, component = 3) flat in int var0_1; + layout(location = 0) out ivec4 dEQP_FragColor; + + void main() + { + ivec4 var0 = ivec4(var0_0, var0_1); + ivec4 out0 = var0; + dEQP_FragColor = out0; + } + "" + end + end + end + group frag_out "Fragment shader output" + group vec2 "vec2" + case as_float_float + version 440 core + desc "Write fragment output (vec2) as float float." + output_color vec2 + values + { + input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ]; + output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec2 in0; + layout(location = 0) out vec2 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec2 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + + void main() + { + vec2 out0 = var0; + out0 /= vec2(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + } + "" + end + end + group vec3 "vec3" + case as_float_float_float + version 440 core + desc "Write fragment output (vec3) as float float float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out float dEQP_FragColor_2; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + } + "" + end + case as_float_vec2 + version 440 core + desc "Write fragment output (vec3) as float vec2." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec2 dEQP_FragColor_1; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + } + "" + end + case as_vec2_float + version 440 core + desc "Write fragment output (vec3) as vec2 float." + output_color vec3 + values + { + input vec3 in0 = [ vec3(6.0, 8.0, 7.0) | vec3(14.0, 10.0, 15.0) | vec3(9.0, 5.0, 4.0) | vec3(7.0, 3.0, 1.0) ]; + output vec3 out0 = [ vec3(12.0, 16.0, 14.0) | vec3(28.0, 20.0, 30.0) | vec3(18.0, 10.0, 8.0) | vec3(14.0, 6.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec3 in0; + layout(location = 0) out vec3 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec3 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out float dEQP_FragColor_1; + + void main() + { + vec3 out0 = var0; + out0 /= vec3(31.0, 63.0, 31.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + } + "" + end + end + group vec4 "vec4" + case as_float_float_float_float + version 440 core + desc "Write fragment output (vec4) as float float float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out float dEQP_FragColor_2; + layout(location = 0, component = 3) out float dEQP_FragColor_3; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + dEQP_FragColor_3 = out0.w; + } + "" + end + case as_float_float_vec2 + version 440 core + desc "Write fragment output (vec4) as float float vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out float dEQP_FragColor_1; + layout(location = 0, component = 2) out vec2 dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.zw; + } + "" + end + case as_float_vec2_float + version 440 core + desc "Write fragment output (vec4) as float vec2 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec2 dEQP_FragColor_1; + layout(location = 0, component = 3) out float dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_float_vec3 + version 440 core + desc "Write fragment output (vec4) as float vec3." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out float dEQP_FragColor_0; + layout(location = 0, component = 1) out vec3 dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yzw; + } + "" + end + case as_vec2_float_float + version 440 core + desc "Write fragment output (vec4) as vec2 float float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out float dEQP_FragColor_1; + layout(location = 0, component = 3) out float dEQP_FragColor_2; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_vec2_vec2 + version 440 core + desc "Write fragment output (vec4) as vec2 vec2." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out vec2 dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.zw; + } + "" + end + case as_vec3_float + version 440 core + desc "Write fragment output (vec4) as vec3 float." + output_color vec4 + values + { + input vec4 in0 = [ vec4(13.0, 2.0, 11.0, 1.0) | vec4(4.0, 13.0, 8.0, 3.0) | vec4(7.0, 5.0, 1.0, 12.0) | vec4(14.0, 15.0, 11.0, 1.0) ]; + output vec4 out0 = [ vec4(26.0, 4.0, 22.0, 2.0) | vec4(8.0, 26.0, 16.0, 6.0) | vec4(14.0, 10.0, 2.0, 24.0) | vec4(28.0, 30.0, 22.0, 2.0) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in vec4 in0; + layout(location = 0) out vec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 var0; + layout(location = 0, component = 0) out vec3 dEQP_FragColor_0; + layout(location = 0, component = 3) out float dEQP_FragColor_1; + + void main() + { + vec4 out0 = var0; + out0 /= vec4(255.0); + dEQP_FragColor_0 = out0.xyz; + dEQP_FragColor_1 = out0.w; + } + "" + end + end + group ivec2 "ivec2" + case as_int_int + version 440 core + desc "Write fragment output (ivec2) as int int." + output_color ivec2 + values + { + input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ]; + output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec2 in0; + layout(location = 0) out ivec2 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec2 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + + void main() + { + ivec2 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + } + "" + end + end + group ivec4 "ivec4" + case as_int_int_int_int + version 440 core + desc "Write fragment output (ivec4) as int int int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + layout(location = 0, component = 2) out int dEQP_FragColor_2; + layout(location = 0, component = 3) out int dEQP_FragColor_3; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.z; + dEQP_FragColor_3 = out0.w; + } + "" + end + case as_int_int_ivec2 + version 440 core + desc "Write fragment output (ivec4) as int int ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out int dEQP_FragColor_1; + layout(location = 0, component = 2) out ivec2 dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.y; + dEQP_FragColor_2 = out0.zw; + } + "" + end + case as_int_ivec2_int + version 440 core + desc "Write fragment output (ivec4) as int ivec2 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out ivec2 dEQP_FragColor_1; + layout(location = 0, component = 3) out int dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yz; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_int_ivec3 + version 440 core + desc "Write fragment output (ivec4) as int ivec3." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out int dEQP_FragColor_0; + layout(location = 0, component = 1) out ivec3 dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.x; + dEQP_FragColor_1 = out0.yzw; + } + "" + end + case as_ivec2_int_int + version 440 core + desc "Write fragment output (ivec4) as ivec2 int int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out int dEQP_FragColor_1; + layout(location = 0, component = 3) out int dEQP_FragColor_2; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.z; + dEQP_FragColor_2 = out0.w; + } + "" + end + case as_ivec2_ivec2 + version 440 core + desc "Write fragment output (ivec4) as ivec2 ivec2." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0; + layout(location = 0, component = 2) out ivec2 dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xy; + dEQP_FragColor_1 = out0.zw; + } + "" + end + case as_ivec3_int + version 440 core + desc "Write fragment output (ivec4) as ivec3 int." + output_color ivec4 + values + { + input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ]; + output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ]; + } + vertex "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) in vec4 dEQP_Position; + layout(location = 1) in ivec4 in0; + layout(location = 0) out ivec4 var0; + + void main() + { + var0 = in0 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 440 core + precision highp float; + precision highp int; + layout(location = 0) flat in ivec4 var0; + layout(location = 0, component = 0) out ivec3 dEQP_FragColor_0; + layout(location = 0, component = 3) out int dEQP_FragColor_1; + + void main() + { + ivec4 out0 = var0; + dEQP_FragColor_0 = out0.xyz; + dEQP_FragColor_1 = out0.w; + } + "" + end + end + end + end +end diff --git a/vulkan/glsl/es310/arrays.test b/vulkan/glsl/es310/arrays.test new file mode 100644 index 0000000..01d5059 --- /dev/null +++ b/vulkan/glsl/es310/arrays.test @@ -0,0 +1,1812 @@ +#X1. Type: float[5] // An array type with 5 elements +#X2. Return value: float[5] func() { ... } // Function with a 5-element array return value +#X3. Array constructor: float[3] (1.0, 2.0, 5.5) // 3-element array with given elements +# // Fails with array of matrices! +#X4. As unnamed parameter: void func(float[5]); +#X5. Variable declaration: float[5] a; // Equivalent to float a[5]; (?) +#X6. Empty brackets: float x[] = float[] (1.0, 2.0, 3.0); // Size of x is 3 +# float y[] = float[3] (1.0, 2.0, 3.0); // Size of y is 3 (equivalent) +# float z[] = y; // Size of z is 3 +#X7. Testing that 2-dimensional arrays don't work: float a[5][3]; // Illegal +# float[5] a[3]; // Illegal +#X8. Testing that array declaration with dynamic variables as array size won't work. +#X9. Testing length() operator: z.length(); // Returns 3 for z defined before +#X10. Test C/C++ style {}-constructor +#X11. Test struct arrays +#X12. Test array element access at initialization with const/dynamic values + +group constructor "Array constructors" + + case float3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[3] x; + x = float[3] (in0.z, in0.x, in0.y); + out0 = vec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case float4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 0.2) | vec4(7.4, -1.0, 2.0, -1.3) | vec4(3.0, 1.6, -2.0, 0.5) ]; + output vec4 out0 = [ vec4(2.0, 0.5, 0.2, 1.0) | vec4(2.0, 7.4, -1.3, -1.0) | vec4(-2.0, 3.0, 0.5, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[4] x; + x = float[4] (in0.z, in0.x, in0.w, in0.y); + out0 = vec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case int3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[3] x; + x = int[3] (in0.z, in0.x, in0.y); + out0 = ivec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case int4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, 0) | ivec4(7, -1, 2, -1) | ivec4(3, 1, -2, 0) ]; + output ivec4 out0 = [ ivec4(2, 0, 0, 1) | ivec4(2, 7, -1, -1) | ivec4(-2, 3, 0, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[4] x; + x = int[4] (in0.z, in0.x, in0.w, in0.y); + out0 = ivec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case bool3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(false, true, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[3] x; + x = bool[3] (in0.z, in0.x, in0.y); + out0 = bvec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case bool4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, false) ]; + output bvec4 out0 = [ bvec4(false, true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[4] x; + x = bool[4] (in0.z, in0.x, in0.y, in0.w); + out0 = bvec4(x[0], x[1], x[2], x[3]); + ${OUTPUT} + } + "" + end + + case struct3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(2.0, -0.5, -1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + + + void main() + { + ${SETUP} + + struct test + { + float f; + vec3 v; + }; + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] x = test[3] (a, b, c); + + out0 = vec3(x[0].f, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + "" + end + + case struct4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 1.5) ]; + output vec4 out0 = [ vec4(2.0, -0.5, -1.0, -1.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + + void main() + { + ${SETUP} + + + struct test + { + float f; + vec3 v; + }; + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + test d = test(-in0.w, vec3(-in0.w, -in0.x, -in0.z)); + + test[4] x = test[4] (a, b, c, d); + + out0 = vec4(x[0].f, x[1].v.y, x[2].v.x, x[3].v.x); + ${OUTPUT} + } + "" + end + + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(7.4, -2.0, -1.0) | vec3(3.0, 2.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + vec3[3] x; + x = vec3[3] ( vec3(in0.x, in0.y, in0.z) , + vec3(-in0.y, -in0.z, -in0.x), + vec3(in0.z, in0.x, in0.y) ); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(5, -2, 1) | ivec3(7, -2, -1) | ivec3(3, 2, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + ivec3[3] x; + x = ivec3[3] ( ivec3(in0.x, in0.y, in0.z) , + ivec3(-in0.y, -in0.z, -in0.x), + ivec3(in0.z, in0.x, in0.y) ); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + + bvec3[3] x; + x = bvec3[3] ( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x), + bvec3(in0.z, in0.x, in0.y) ); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[3] a = mat3[3] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y) , + mat3( in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + +end # type + +group return "Arrays as return value" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, -0.5, 1.0) | vec3(2.0, -7.4, -1.0) | vec3(-2.0, -3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float[3] func(vec3 a) + { + return float[3] (a.z, -a.x, a.y); + } + + void main() + { + ${SETUP} + float[3] x = func(in0); + out0 = vec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(4, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, -4, 1) | ivec3(2, -7, -1) | ivec3(-2, -3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + int[3] func(ivec3 a) + { + return int[3] (a.z, -a.x, a.y); + } + + void main() + { + ${SETUP} + int[3] x = func(in0); + out0 = ivec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bool[3] func(bvec3 a) + { + return bool[3] (a.z, a.x, a.y); + } + + void main() + { + ${SETUP} + bool[3] x = func(in0); + out0 = bvec3(x[0], x[1], x[2]); + ${OUTPUT} + } + "" + end + + + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec3[3] func(vec3[3] a) + { + return vec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + test[3] func(test[3] a) + { + return test[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] t = test[3] (a, b, c); + test[3] x = func(t); + + out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; + output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + ivec3[3] func(ivec3[3] a) + { + return ivec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bvec3[3] func(bvec3[3] a) + { + return bvec3[3] (a[1], a[2], a[0]); + } + + void main() + { + ${SETUP} + bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + x = func(x); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y); + a[2] = mat3(in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + +end # return + +group unnamed_parameter "Array type as unnamed parameter of a function prototype" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float[3] func(float[3]); + + void main() + { + ${SETUP} + float[3] a = float[3] (in0.x, in0.y, in0.z); + float[3] b = func(a); + out0 = vec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + float[3] func(float[3] a) + { + return float[3] (a[2], a[0], a[1]); + } + + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + int[3] func(int[3]); + + void main() + { + ${SETUP} + int[3] a = int[3] (in0.x, in0.y, in0.z); + int[3] b = func(a); + out0 = ivec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + int[3] func(int[3] a) + { + return int[3] (a[2], a[0], a[1]); + } + + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bool[3] func(bool[3]); + + void main() + { + ${SETUP} + bool[3] a = bool[3] (in0.x, in0.y, in0.z); + bool[3] b = func(a); + out0 = bvec3(b[0], b[1], b[2]); + ${OUTPUT} + } + + bool[3] func(bool[3] a) + { + return bool[3] (a[2], a[0], a[1]); + } + + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + test[3] func(test[3]); + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[3] t = test[3] (a, b, c); + test[3] x = func(t); + out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x); + ${OUTPUT} + } + + test[3] func(test[3] a) + { + return test[3] (a[1], a[2], a[0]); + } + + "" + end + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec3[3] func(vec3[3]); + + void main() + { + ${SETUP} + vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = vec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + vec3[3] func(vec3[3] a) + { + return vec3[3] (a[1], a[2], a[0]); + } + "" + end + + case int_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ]; + output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + ivec3[3] func(ivec3[3]); + + void main() + { + ${SETUP} + ivec3[3] x = ivec3[3]( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + x = func(x); + out0 = ivec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + ivec3[3] func(ivec3[3] a) + { + return ivec3[3] (a[1], a[2], a[0]); + } + "" + end + + case bool_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + bvec3[3] func(bvec3[3]); + + void main() + { + ${SETUP} + bvec3[3] x = bvec3[3]( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + x = func(x); + out0 = bvec3(x[0].x, x[1].y, x[2].z); + ${OUTPUT} + } + + bvec3[3] func(bvec3[3] a) + { + return bvec3[3] (a[1], a[2], a[0]); + } + + "" + end + + case float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + + case int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y); + a[2] = mat3(-in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + + case bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + mat3[3] func(mat3[3]); + void main() + { + ${SETUP} + mat3[3] a, b; + a[0] = mat3(in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z); + a[1] = mat3(in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y); + a[2] = mat3(in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x); + + b = func(a); + + mat3 b0 = b[0]; + mat3 b1 = b[1]; + mat3 b2 = b[2]; + + float ret0 = b0[0][0]; + float ret1 = b1[1][1]; + float ret2 = b2[2][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + + mat3[3] func(mat3[3] x) + { + mat3[3] r; + r[0] = x[1]; + r[1] = x[2]; + r[2] = x[0]; + return r; + } + "" + end + +end # unnamed_parameter + +group declaration "Declaring arrays" + + case implicit_size_float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ]; + output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[] x = float[] (in0.z, in0.x, in0.y); + float[] y = x; + + out0 = vec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ]; + output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[] x = int[] (in0.z, in0.x, in0.y); + int[] y = x; + + out0 = ivec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, true, true) ]; + output bvec3 out0 = [ bvec3(true, false, true) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[] x = bool[] (in0.z, in0.x, in0.y); + bool[] y = x; + + out0 = bvec3(y[0], y[1], y[2]); + ${OUTPUT} + } + "" + end + + case implicit_size_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-1.0, -0.5, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[] x = test[] (c, b, a); + test[] y = x; + + out0 = vec3(y[0].v.x, y[1].v.y, y[2].v.z); + ${OUTPUT} + } + "" + end + + case implicit_size_float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ]; + output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(-0.5, 1.0, 11.2) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + vec3[] x = vec3[] ( vec3(in0.x, in0.y, -in0.z) , + vec3(in0.y, -in0.z, in0.x) , + vec3(-in0.z, in0.x, in0.y) ); + vec3[] y = x; + out0 = vec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_int_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(5, 11, -1) ]; + output ivec3 out0 = [ ivec3(0, -2, 1) | ivec3(5, 1, 11) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + ivec3[] x = ivec3[] ( ivec3(in0.x, in0.y, -in0.z) , + ivec3(in0.y, -in0.z, in0.x) , + ivec3(-in0.z, in0.x, in0.y) ); + ivec3[] y = x; + out0 = ivec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_bool_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bvec3[] x = bvec3[] ( bvec3(in0.x, in0.y, in0.z) , + bvec3(in0.y, in0.z, in0.x) , + bvec3(in0.z, in0.x, in0.y) ); + bvec3[] y = x; + out0 = bvec3(y[0].x, y[1].y, y[2].z); + ${OUTPUT} + } + "" + end + + case implicit_size_float_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ]; + output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = vec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case implicit_size_int_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ]; + output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y, + in0.z, in0.x, -in0.y) , + mat3( -in0.z, -in0.z, in0.z, + -in0.y, -in0.y, in0.y, + -in0.x, -in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = ivec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + case implicit_size_bool_mat3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output bvec3 out0 = [ bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + mat3[] a = mat3[] ( mat3( in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z, + in0.x, in0.y, in0.z) , + mat3( in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y, + in0.z, in0.x, in0.y) , + mat3( in0.z, in0.z, in0.z, + in0.y, in0.y, in0.y, + in0.x, in0.x, in0.x) ); + + mat3 a0 = a[0]; + mat3 a1 = a[1]; + mat3 a2 = a[2]; + + float ret0 = a0[2][0]; + float ret1 = a1[0][2]; + float ret2 = a2[1][2]; + + out0 = bvec3(ret0, ret1, ret2); + ${OUTPUT} + } + "" + end + + + case constant_expression_array_size + version 310 es + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + const int a = 4; + + void main () + { + const int b = 5; + float[a] array1; + float[b] array2; + float[array1.length()] array3; + float[a+b] array4; + ${OUTPUT} + } + "" + end + + case constant_expression_array_access + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + const int a = 3; + + void main () + { + ${SETUP} + const int b = 2; + float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [a]; + float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [b+2]; + float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [5]; + out0 = vec3(x, y, z); + ${OUTPUT} + } + "" + end + + case dynamic_expression_array_access + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + input ivec2 in1 = ivec2(3, 2); + output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x]; + float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.y+2]; + float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x+in1.y]; + out0 = vec3(x, y, z); + ${OUTPUT} + } + "" + end + + case multiple_declarations_single_statement_explicit + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output vec3 out0 = [ vec3(2.0, -1.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + float[] x = float[6] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), + y = float[2] (in0.x, -in0.y); + out0 = vec3(x[2], y[1], x[0]); + ${OUTPUT} + } + "" + end + + case multiple_declarations_single_statement_implicit + version 310 es + values + { + input ivec3 in0 = [ ivec3(5, 1, 2) ]; + output ivec3 out0 = [ ivec3(2, -1, 5) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main () + { + ${SETUP} + int[] x = int[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x), + y = int[] (in0.x, -in0.y); + out0 = ivec3(x[2], y[1], x[0]); + ${OUTPUT} + } + "" + end + +end # declaration + +group length "Array length method" + + case float + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + float[] x = float[3] (in0.z, in0.x, in0.y); + float[] y = float[] (in0.z, in0.x, in0.y, in0.x, in0.y); + float[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 1, 2) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + int[] x = int[3] (in0.z, in0.x, in0.y); + int[] y = int[] (in0.z, in0.x, in0.y, in0.x, in0.y); + int[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, true) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp int; + precision highp float; + ${DECLARATIONS} + + void main() + { + ${SETUP} + bool[] x = bool[3] (in0.z, in0.x, in0.y); + bool[] y = bool[] (in0.z, in0.x, in0.y, in0.x, in0.y); + bool[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + + case struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ]; + output ivec3 out0 = [ ivec3(3, 5, 13) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct test + { + float f; + vec3 v; + }; + + void main() + { + ${SETUP} + + test a = test(in0.z, vec3(in0.x, in0.y, in0.z)); + test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y)); + test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x)); + + test[] x = test[3] (a, b, c); + test[] y = test[] (c, a, b, b, a); + test[13] z; + + out0 = ivec3(x.length(), y.length(), z.length()); + ${OUTPUT} + } + "" + end + +end # length diff --git a/vulkan/glsl/es310/conditionals.test b/vulkan/glsl/es310/conditionals.test new file mode 100644 index 0000000..c0b2d60 --- /dev/null +++ b/vulkan/glsl/es310/conditionals.test @@ -0,0 +1,223 @@ +group if "If Statements" + + case single_statement + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + if (in0 >= 1.0) + out0 = 1.0; + ${OUTPUT} + } + "" + end + + case compound_statement + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (in0 >= 1.0) + { + out0 = 1.0; + out1 = 0.0; + } + ${OUTPUT} + } + "" + end + + case sequence_statements + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (in0 >= 1.0) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case sequence_condition + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (false, in0 >= 1.0) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case complex_condition + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + output float out1 = [ 1.0 | 0.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + out1 = 1.0; + if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0)) + out0 = 1.0, out1 = 0.0; + ${OUTPUT} + } + "" + end + + case if_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 1.0) + out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + + case if_elseif + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0.0; + if (in0 >= 2.0) + out0 = 2.0; + else if (in0 >= 1.0) + out0 = 1.0; + ${OUTPUT} + } + "" + end + + case if_elseif_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 2.0) + out0 = 2.0; + else if (in0 >= 1.0) + out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + + case mixed_if_elseif_else + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + if (in0 >= 2.0) + { + out0 = 2.0; + } + else if (in0 >= 1.0) + out0 = 2.0, out0 = 1.0; + else + out0 = 0.0; + ${OUTPUT} + } + "" + end + +end # if diff --git a/vulkan/glsl/es310/constant_expressions.test b/vulkan/glsl/es310/constant_expressions.test new file mode 100644 index 0000000..f80361e --- /dev/null +++ b/vulkan/glsl/es310/constant_expressions.test @@ -0,0 +1,483 @@ +group trivial "Trivial expressions" + + case float + version 310 es + values { output float out0 = 5.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 5.0; + out0 = a; + ${OUTPUT} + } + "" + end + + case int + version 310 es + values { output int out0 = 5; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a = 5; + out0 = a; + ${OUTPUT} + } + "" + end + + case bool + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const bool a = true; + out0 = a; + ${OUTPUT} + } + "" + end + + case cast + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = float(int(bool(true))); + out0 = a; + ${OUTPUT} + } + "" + end + +end # trivial + +group operators "Operators" + + case math_float + version 310 es + values { output float out0 = 2.19; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 6.0/3.5 + 1.8*2.6 - 4.2; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_vec + version 310 es + values { output float out0 = 15.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_int + version 310 es + values { output int out0 = 7; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = 25%7 + 2*3 - 9/3; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_ivec + version 310 es + values { output int out0 = 21; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const ivec3 a = ivec2(25%7, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_mat + version 310 es + values { output float out0 = 8.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const mat3 a = mat3(3.0) * mat3(4.0); + const mat4 b = mat4(a[1][1])*2.0; + const mat2 c = mat2(b[0][0]) / 3.0; + out0 = c[0][0]+c[1][0]; + ${OUTPUT} + } + "" + end + + case bitwise + version 310 es + values { output int out0 = 678332; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = (((0xABBA<<4) ^ 0xCAFE) | (0xDCBA & (0xABCD>>2))) ^ (~0xDEAD & 0xBEEF); + out0 = a; + ${OUTPUT} + } + "" + end + + case logical + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (!false || false) && (true ^^ false); + out0 = a; + ${OUTPUT} + } + "" + end + + case compare + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1)); + out0 = a; + ${OUTPUT} + } + "" + end + + case selection + version 310 es + values { output float out0 = 5.3; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = false ? 0.0 : (true ? 5.3 : 1.0); + out0 = a; + ${OUTPUT} + } + "" + end + +end # operators + +group complex_types "Arrays & Structs" + + case struct + version 310 es + values { output float out0 = 260.922; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 a; + int b; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + out0 = length(s.a.xy)*float(s.b); + ${OUTPUT} + } + "" + end + + case nested_struct + version 310 es + values { output float out0 = 965.9; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 v; + int i; + }; + + struct T + { + S s; + bool b; + int i; + }; + + struct U + { + S s; + T t; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + const T t = T(s, false, 3); + const U u = U(s, t); + const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6)); + out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3 + ${OUTPUT} + } + "" + end + + case array_size + version 310 es + values { output int out0 = 1; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[max(-1, 1)] = int[1](1); + out0 = a[0]; + ${OUTPUT} + } + "" + end + + case array_length + version 310 es + values { output int out0 = 2; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[1] = int[1](1); + out0 = a.length() + a[0]; + ${OUTPUT} + } + "" + end + + case array + version 310 es + values { output float out0 = 4.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a[1+2+5] = float[8](0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0); + const float f = a[1+2+4]; + out0 = f + float(a.length()-8); + ${OUTPUT} + } + "" + end + +end # complex_types + +group other "Other operations" + + case switch_case + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int _0 = 0; + const int _1 = 1; + const int _2 = 2; + const int _3 = 3; + const int _4 = 4; + + switch(int(in0)) + { + case _0: + out0 = 0; + break; + case _1: + out0 = 1; + break; + case _2: + out0 = 2; + break; + case _3: + out0 = 3; + break; + case _4: + out0 = 4; + break; + case 5: + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end + + case nested_builtin_funcs + version 310 es + values { output float out0 = 3.05; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/); + out0 = a; + ${OUTPUT} + } + "" + end + + case complex + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct T + { + vec4 v; + }; + + struct S + { + T t; + int i; + bool b; + }; + + void main() + { + const T t = T(vec4(1.0)); + const S s = S(t, 42, true); + const int _0 = int(sin(0.0)); + const int _1 = int(1.0); + const int _2 = 2 + int(float(_0>_1)); + const int _3 = min(gl_MaxVertexAttribs, 16)/4 - 1; + const int _4 = min(gl_MaxDrawBuffers, 4); + const ivec4 nums = ivec4(0, 1, 2, 3); + + switch(int(in0)) + { + case int(float(_0)): + out0 = ((true!=false) && (!false)) ? 0 : 25; + break; + case ivec3(_1).x: + out0 = 3*18/9-5; + break; + case nums[_2]: + out0 = int(length(vec4(1.0))+0.001); + break; + case _3: + out0 = 3; + break; + case clamp(_4, 1, 6): + out0 = (s.i-2)/10; + break; + case max(3, 5): + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end +end diff --git a/vulkan/glsl/es310/constants.test b/vulkan/glsl/es310/constants.test new file mode 100644 index 0000000..82c57c1 --- /dev/null +++ b/vulkan/glsl/es310/constants.test @@ -0,0 +1,838 @@ +case float_input + version 310 es + values + { + input float in0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ]; + output float out0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 | -1.123 | -0.75 | 512.0 | -72.13 | -199.91 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = in0; + ${OUTPUT} + } + "" +end + +case float_uniform + version 310 es + values + { + uniform float uni0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ]; + output float out0 = [ 1.123 | 0.75 | -512.0 | -72.13 | 199.91 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = uni0; + ${OUTPUT} + } + "" +end + +case float_0 + version 310 es + values { output float out0 = 1.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = +1.123; + ${OUTPUT} + } + "" +end + +case float_1 + version 310 es + values { output float out0 = -1.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.123; + ${OUTPUT} + } + "" +end + +case float_2 + version 310 es + values { output float out0 = 123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 123.; + ${OUTPUT} + } + "" +end + +case float_3 + version 310 es + values { output float out0 = 0.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = .123; + ${OUTPUT} + } + "" +end + +case float_4 + version 310 es + values { output float out0 = 123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1.23e+2; + ${OUTPUT} + } + "" +end + +case float_5 + version 310 es + values { output float out0 = -123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.23E+2; + ${OUTPUT} + } + "" +end + +case float_6 + version 310 es + values { output float out0 = -123.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -1.23e2; + ${OUTPUT} + } + "" +end + +case float_7 + version 310 es + values { output float out0 = 0.123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1.23e-1; + ${OUTPUT} + } + "" +end + +case float_8 + version 310 es + values { output float out0 = 1000.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 1e3; + ${OUTPUT} + } + "" +end + +case float_f_suffix_0 + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main () + { + ${SETUP} + float value = 1.0f; + out0 = value; + ${OUTPUT} + } + "" +end + +case float_f_suffix_1 + version 310 es + values { output float out0 = 1.0; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main () + { + ${SETUP} + float value = 1.0F; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_0 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 123; + ${OUTPUT} + } + "" +end + +case int_1 + version 310 es + values { output int out0 = -321; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = -321; + ${OUTPUT} + } + "" +end + +case int_2 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0x7B; + ${OUTPUT} + } + "" +end + +case int_3 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0X7b; + ${OUTPUT} + } + "" +end + +case int_4 + version 310 es + values { output int out0 = 123; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = 0173; + ${OUTPUT} + } + "" +end + +case bool_0 + version 310 es + values { output bool out0 = true; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = true; + ${OUTPUT} + } + "" +end + +case bool_1 + version 310 es + values { output bool out0 = false; } + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + out0 = false; + ${OUTPUT} + } + "" +end + +case const_float_global + version 310 es + values { output float out0 = 1000.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 1000.0; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_main + version 310 es + values { output float out0 = -1000.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant = -1000.0; + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_function + version 310 es + values { output float out0 = -0.012; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + float func() + { + const float theConstant = -0.012; + return theConstant; + } + void main() + { + out0 = func(); + ${OUTPUT} + } + "" +end + +case const_float_scope + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_1 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant = 100.0; + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_2 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + void main() + { + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_3 + version 310 es + values { output float out0 = 1.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_scope_shawdowing_4 + version 310 es + values { output float out0 = 2.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = 100.0; + float func() + { + const float theConstant = 2.0; + return theConstant; + } + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = func(); + } + ${OUTPUT} + } + "" +end + +case const_float_operations_with_const + version 310 es + values { output float out0 = 21.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theGlobalConstant = 10.0; + float func() + { + const float theConstant = 2.0; + return theConstant; + } + void main() + { + const float theConstant = -100.0; + { + const float theConstant = 1.0; + out0 = func() * theGlobalConstant + theConstant; + } + ${OUTPUT} + } + "" +end + +case const_float_assignment_1 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant1 = 10.0; + const float theConstant2 = theConstant1; + out0 = theConstant2; + ${OUTPUT} + } + "" +end + +case const_float_assignment_2 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + void main() + { + const float theConstant1 = 10.0; + { + const float theConstant2 = theConstant1; + out0 = theConstant2; + } + ${OUTPUT} + } + "" +end + +case const_float_assignment_3 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant1 = 10.0; + void main() + { + const float theConstant2 = theConstant1; + out0 = theConstant2; + ${OUTPUT} + } + "" +end + +case const_float_assignment_4 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant1 = 10.0; + float func() + { + const float theConstant2 = theConstant1; + return theConstant2; + } + void main() + { + out0 = func(); + ${OUTPUT} + } + "" +end + +case const_float_from_int + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = float(10); + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec2 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec2(1.0, 10.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec3 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec3(1.0, 10.0, 20.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case const_float_from_vec4 + version 310 es + values { output float out0 = 10.0; } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + const float theConstant = vec4(1.0, 10.0, 20.0, -10.0).y; + void main() + { + out0 = theConstant; + ${OUTPUT} + } + "" +end + +case int_decimal + version 310 es + values { output int out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 7; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_octal + version 310 es + values { output int out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 017; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_hexadecimal_0 + version 310 es + values { output int out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 0x2f; + out0 = value; + ${OUTPUT} + } + "" +end + +case int_hexadecimal_1 + version 310 es + values { output int out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + int value = 0X2f; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_0 + version 310 es + values { output uint out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 7u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_1 + version 310 es + values { output uint out0 = 7; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 7U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_2 + version 310 es + values { output uint out0 = 0; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_decimal_3 + version 310 es + values { output uint out0 = 0; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_octal_0 + version 310 es + values { output uint out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 017u; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_octal_1 + version 310 es + values { output uint out0 = 15; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 017U; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_hexadecimal_0 + version 310 es + values { output uint out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0x2fU; + out0 = value; + ${OUTPUT} + } + "" +end + +case uint_hexadecimal_1 + version 310 es + values { output uint out0 = 47; } + both "" + #version 310 es + ${DECLARATIONS} + void main () + { + ${SETUP} + uint value = 0X2fu; + out0 = value; + ${OUTPUT} + } + "" +end diff --git a/vulkan/glsl/es310/conversions.test b/vulkan/glsl/es310/conversions.test new file mode 100644 index 0000000..9f3239a --- /dev/null +++ b/vulkan/glsl/es310/conversions.test @@ -0,0 +1,13186 @@ +# WARNING: This file is auto-generated. Do NOT modify it manually, but rather +# modify the generating script file. Otherwise changes will be lost! + +group scalar_to_scalar "Scalar to Scalar Conversions" + + case float_to_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case float_to_int + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 0 | -8 | -20 | 36 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case float_to_bool + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bool out0 = [ false | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case int_to_float + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output float out0 = [ 0.0 | 1.0 | 2.0 | 5.0 | 8.0 | 11.0 | -12.0 | -66.0 | -192.0 | 255.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case int_to_int + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output int out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case int_to_bool + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bool out0 = [ false | true | true | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uint_to_float + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output float out0 = [ 0.0 | 2.0 | 3.0 | 8.0 | 9.0 | 12.0 | 10.0 | 45.0 | 193.0 | 255.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uint_to_int + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output int out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bool + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bool out0 = [ false | true | true | true | true | true | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bool_to_float + version 310 es + values + { + input bool in0 = [ true | false ]; + output float out0 = [ 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bool_to_int + version 310 es + values + { + input bool in0 = [ true | false ]; + output int out0 = [ 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case float_to_uint + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uint out0 = [ 0 | 1 | 2 | 3 | 0 | 8 | 20 | 36 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case int_to_uint + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uint out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uint + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uint out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uint + version 310 es + values + { + input bool in0 = [ true | false ]; + output uint out0 = [ 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_scalar +group scalar_to_vector "Scalar to Vector Conversions" + + case float_to_vec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(3.5, 3.5) | vec2(-0.5, -0.5) | vec2(-8.25, -8.25) | vec2(-20.125, -20.125) | vec2(36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_vec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(3.5, 3.5, 3.5) | vec3(-0.5, -0.5, -0.5) | vec3(-8.25, -8.25, -8.25) | vec3(-20.125, -20.125, -20.125) | vec3(36.8125, 36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_vec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.5, 3.5, 3.5, 3.5) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-8.25, -8.25, -8.25, -8.25) | vec4(-20.125, -20.125, -20.125, -20.125) | vec4(36.8125, 36.8125, 36.8125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(3, 3) | ivec2(0, 0) | ivec2(-8, -8) | ivec2(-20, -20) | ivec2(36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(0, 0, 0) | ivec3(-8, -8, -8) | ivec3(-20, -20, -20) | ivec3(36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_ivec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(0, 0, 0, 0) | ivec4(-8, -8, -8, -8) | ivec4(-20, -20, -20, -20) | ivec4(36, 36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_bvec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(5.0, 5.0) | vec2(8.0, 8.0) | vec2(11.0, 11.0) | vec2(-12.0, -12.0) | vec2(-66.0, -66.0) | vec2(-192.0, -192.0) | vec2(255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(5.0, 5.0, 5.0) | vec3(8.0, 8.0, 8.0) | vec3(11.0, 11.0, 11.0) | vec3(-12.0, -12.0, -12.0) | vec3(-66.0, -66.0, -66.0) | vec3(-192.0, -192.0, -192.0) | vec3(255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_vec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(5.0, 5.0, 5.0, 5.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(11.0, 11.0, 11.0, 11.0) | vec4(-12.0, -12.0, -12.0, -12.0) | vec4(-66.0, -66.0, -66.0, -66.0) | vec4(-192.0, -192.0, -192.0, -192.0) | vec4(255.0, 255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(5, 5) | ivec2(8, 8) | ivec2(11, 11) | ivec2(-12, -12) | ivec2(-66, -66) | ivec2(-192, -192) | ivec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(5, 5, 5) | ivec3(8, 8, 8) | ivec3(11, 11, 11) | ivec3(-12, -12, -12) | ivec3(-66, -66, -66) | ivec3(-192, -192, -192) | ivec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_ivec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(5, 5, 5, 5) | ivec4(8, 8, 8, 8) | ivec4(11, 11, 11, 11) | ivec4(-12, -12, -12, -12) | ivec4(-66, -66, -66, -66) | ivec4(-192, -192, -192, -192) | ivec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_bvec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(2.0, 2.0) | vec2(3.0, 3.0) | vec2(8.0, 8.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(10.0, 10.0) | vec2(45.0, 45.0) | vec2(193.0, 193.0) | vec2(255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(2.0, 2.0, 2.0) | vec3(3.0, 3.0, 3.0) | vec3(8.0, 8.0, 8.0) | vec3(9.0, 9.0, 9.0) | vec3(12.0, 12.0, 12.0) | vec3(10.0, 10.0, 10.0) | vec3(45.0, 45.0, 45.0) | vec3(193.0, 193.0, 193.0) | vec3(255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_vec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.0, 3.0, 3.0, 3.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(12.0, 12.0, 12.0, 12.0) | vec4(10.0, 10.0, 10.0, 10.0) | vec4(45.0, 45.0, 45.0, 45.0) | vec4(193.0, 193.0, 193.0, 193.0) | vec4(255.0, 255.0, 255.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(2, 2) | ivec2(3, 3) | ivec2(8, 8) | ivec2(9, 9) | ivec2(12, 12) | ivec2(10, 10) | ivec2(45, 45) | ivec2(193, 193) | ivec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(8, 8, 8) | ivec3(9, 9, 9) | ivec3(12, 12, 12) | ivec3(10, 10, 10) | ivec3(45, 45, 45) | ivec3(193, 193, 193) | ivec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_ivec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(8, 8, 8, 8) | ivec4(9, 9, 9, 9) | ivec4(12, 12, 12, 12) | ivec4(10, 10, 10, 10) | ivec4(45, 45, 45, 45) | ivec4(193, 193, 193, 193) | ivec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_bvec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(3, 3) | uvec2(0, 0) | uvec2(8, 8) | uvec2(20, 20) | uvec2(36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(0, 0, 0) | uvec3(8, 8, 8) | uvec3(20, 20, 20) | uvec3(36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case float_to_uvec4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(0, 0, 0, 0) | uvec4(8, 8, 8, 8) | uvec4(20, 20, 20, 20) | uvec4(36, 36, 36, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(5, 5) | uvec2(8, 8) | uvec2(11, 11) | uvec2(12, 12) | uvec2(66, 66) | uvec2(192, 192) | uvec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(5, 5, 5) | uvec3(8, 8, 8) | uvec3(11, 11, 11) | uvec3(12, 12, 12) | uvec3(66, 66, 66) | uvec3(192, 192, 192) | uvec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case int_to_uvec4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(5, 5, 5, 5) | uvec4(8, 8, 8, 8) | uvec4(11, 11, 11, 11) | uvec4(12, 12, 12, 12) | uvec4(66, 66, 66, 66) | uvec4(192, 192, 192, 192) | uvec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(2, 2) | uvec2(3, 3) | uvec2(8, 8) | uvec2(9, 9) | uvec2(12, 12) | uvec2(10, 10) | uvec2(45, 45) | uvec2(193, 193) | uvec2(255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(8, 8, 8) | uvec3(9, 9, 9) | uvec3(12, 12, 12) | uvec3(10, 10, 10) | uvec3(45, 45, 45) | uvec3(193, 193, 193) | uvec3(255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_uvec4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(8, 8, 8, 8) | uvec4(9, 9, 9, 9) | uvec4(12, 12, 12, 12) | uvec4(10, 10, 10, 10) | uvec4(45, 45, 45, 45) | uvec4(193, 193, 193, 193) | uvec4(255, 255, 255, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_vector +group vector_to_scalar "Vector to Scalar Conversions" + + case vec2_to_float + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_int + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_bool + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_float + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_int + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bool + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_int + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bool + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bool out0 = [ false | true | true | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_float + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_int + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_bool + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_float + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_int + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bool + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_float + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bool + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_float + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_int + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_bool + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_float + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_int + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bool + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_float + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_int + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bool + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bool out0 = [ false | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_float + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_int + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_bool + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_float + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_int + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bool + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_float + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = float(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_int + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output int out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = int(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bool(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_uint + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uint + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uint + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_uint + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uint + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uint + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_uint + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uint + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uint + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uint out0 = [ 0 | 1 | 0 | 32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_uint + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uint + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uint + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uint out0 = [ 1 | 0 | 0 | 1 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uint(in0); + ${OUTPUT} + } + "" + end + +end # vector_to_scalar + +group vector_to_vector "Vector to Vector Conversions" + + case vec4_to_vec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_vec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_vec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_ivec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec4 out0 = [ bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_bvec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, -2.0, -4.0, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_vec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_ivec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_bvec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 2.0, 4.0, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_vec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_ivec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_bvec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 1.0) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(0.0, 1.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_vec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 1) | ivec4(0, 0, 0, 1) | ivec4(0, 1, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_ivec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_bvec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec3 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case vec4_to_uvec2 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec4_to_uvec2 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec3 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec4_to_uvec2 + version 310 es + values + { + input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec4 out0 = [ uvec4(1, 0, 0, 1) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec3 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec4_to_uvec2 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_vec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_ivec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_ivec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bvec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_bvec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_vec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_vec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_ivec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bvec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_bvec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_vec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_vec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_ivec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_ivec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_bvec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_vec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_vec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_ivec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_ivec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_bvec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uvec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case vec3_to_uvec2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uvec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case ivec3_to_uvec2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case uvec3_to_uvec2 + version 310 es + values + { + input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0); + ${OUTPUT} + } + "" + end + + case bvec3_to_uvec2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_vec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_ivec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_bvec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_vec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_ivec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_bvec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_vec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_ivec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_bvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_vec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_ivec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_bvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0); + ${OUTPUT} + } + "" + end + + case vec2_to_uvec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case ivec2_to_uvec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case uvec2_to_uvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + case bvec2_to_uvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0); + ${OUTPUT} + } + "" + end + + +end # vector_to_vector +group scalar_to_matrix "Scalar to Matrix Conversions" + + case float_to_mat4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5) | mat4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25) | mat4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125) | mat4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat4x3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0) | mat4x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0) | mat4x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0) | mat4x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat4x2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0) | mat4x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0) | mat4x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3x4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat3x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat3x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0) | mat3x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5) | mat3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5) | mat3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25) | mat3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125) | mat3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat3x2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0) | mat3x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0) | mat3x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0) | mat3x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2x4 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0) | mat2x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2x3 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0) | mat2x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0) | mat2x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0) | mat2x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0) | mat2x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case float_to_mat2 + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.5, 0.0, 0.0, 3.5) | mat2(-0.5, 0.0, 0.0, -0.5) | mat2(-8.25, 0.0, 0.0, -8.25) | mat2(-20.125, 0.0, 0.0, -20.125) | mat2(36.8125, 0.0, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0) | mat4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0) | mat4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0) | mat4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4x3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0) | mat4x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0) | mat4x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0) | mat4x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat4x2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3x4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat3x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat3x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat3x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0) | mat3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0) | mat3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0) | mat3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat3x2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat3x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat3x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat3x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2x4 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat2x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat2x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat2x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2x3 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat2x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat2x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat2x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case int_to_mat2 + version 310 es + values + { + input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(5.0, 0.0, 0.0, 5.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(11.0, 0.0, 0.0, 11.0) | mat2(-12.0, 0.0, 0.0, -12.0) | mat2(-66.0, 0.0, 0.0, -66.0) | mat2(-192.0, 0.0, 0.0, -192.0) | mat2(255.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0) | mat4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0) | mat4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0) | mat4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0) | mat4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4x3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0) | mat4x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0) | mat4x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0) | mat4x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0) | mat4x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat4x2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3x4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat3x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat3x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat3x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat3x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0) | mat3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0) | mat3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0) | mat3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0) | mat3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat3x2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat3x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat3x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat3x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat3x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2x4 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat2x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat2x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat2x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat2x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2x3 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat2x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat2x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat2x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat2x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case uint_to_mat2 + version 310 es + values + { + input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ]; + output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.0, 0.0, 0.0, 3.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(9.0, 0.0, 0.0, 9.0) | mat2(12.0, 0.0, 0.0, 12.0) | mat2(10.0, 0.0, 0.0, 10.0) | mat2(45.0, 0.0, 0.0, 45.0) | mat2(193.0, 0.0, 0.0, 193.0) | mat2(255.0, 0.0, 0.0, 255.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat4x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3x4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2x4 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case bool_to_mat2 + version 310 es + values + { + input bool in0 = [ true | false ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + +end # scalar_to_matrix +group matrix_to_matrix "Matrix to Matrix Conversions" + + case mat4_to_mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat4x3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat4x2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3x4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat3x2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2x4 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2x3 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4_to_mat2 + version 310 es + values + { + input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 9.975, -6.542, 0.015625, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat4x2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3x4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat3x2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2x4 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x3_to_mat2 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 9.975, -6.542, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4x3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 9.975, -6.542, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat4x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3x4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat3x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2x4 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2x3 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat4x2_to_mat2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4x3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat4x2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat3x2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2x3 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x4_to_mat2 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4x3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat4x2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3x4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat3x2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2x4 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2x3 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3_to_mat2 + version 310 es + values + { + input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4x3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat4x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3x4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat3x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2x4 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2x3 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat3x2_to_mat2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4x3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat4x2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat3x2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2x3 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x4_to_mat2 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat4x2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3x4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat3x2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2x4 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2x3_to_mat2 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4x3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat4x2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0) | mat4x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3x4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0) | mat3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat3x2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0) | mat3x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0) | mat3x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2x4 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0) | mat2x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0) | mat2x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2x3 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0) | mat2x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0) | mat2x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0); + ${OUTPUT} + } + "" + end + + case mat2_to_mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0); + ${OUTPUT} + } + "" + end + + +end # matrix_to_matrix +group vector_combine "Vector Combine Constructors" + + case vec2_vec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(-0.5, -2.25, -32.0, 64.0) | vec4(-32.0, 64.0, 1.0, 1.25) | vec4(1.0, 1.25, 0.0, 0.5) | vec4(0.0, 0.5, -0.5, -2.25) | vec4(-0.75, -0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output ivec4 out0 = [ ivec4(0, -2, -32, 64) | ivec4(-32, 64, 1, 1) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_vec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 1.0, 0.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(0.0, 1.0, 0.0, 1.0) | vec4(0.0, 0.0, 1.0, 1.0) | vec4(1.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_ivec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output ivec4 out0 = [ ivec4(0, 0, 1, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 1, 0, 1) | ivec4(0, 0, 1, 1) | ivec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_bvec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, false, false, false) | bvec4(false, true, false, true) | bvec4(false, false, true, true) | bvec4(true, true, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_vec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output vec4 out0 = [ vec4(1.0, 0.0, 3.5, 3.5) | vec4(0.0, 36.8125, 36.8125, 36.8125) | vec4(-0.5, -8.25, -8.25, 1.0) | vec4(-8.25, 2.0, 1.0, -8.25) | vec4(3.5, 3.5, 2.0, 2.0) | vec4(-20.125, 1.0, 0.0, 0.0) | vec4(36.8125, -20.125, -20.125, -0.5) | vec4(2.0, -0.5, -0.5, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_ivec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output ivec4 out0 = [ ivec4(1, 0, 3, 3) | ivec4(0, 36, 36, 36) | ivec4(0, -8, -8, 1) | ivec4(-8, 2, 1, -8) | ivec4(3, 3, 2, 2) | ivec4(-20, 1, 0, 0) | ivec4(36, -20, -20, 0) | ivec4(2, 0, 0, -20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_bvec4 + version 310 es + values + { + input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ]; + input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ]; + input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ]; + input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_vec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output vec4 out0 = [ vec4(-12.0, 2.0, 11.0, -192.0) | vec4(-66.0, 5.0, 255.0, -66.0) | vec4(2.0, -66.0, 5.0, 8.0) | vec4(5.0, 11.0, 8.0, -12.0) | vec4(8.0, -192.0, 2.0, 1.0) | vec4(-192.0, 8.0, -192.0, 2.0) | vec4(255.0, -12.0, -12.0, 0.0) | vec4(1.0, 1.0, -66.0, 255.0) | vec4(0.0, 255.0, 1.0, 5.0) | vec4(11.0, 0.0, 0.0, 11.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_ivec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output ivec4 out0 = [ ivec4(-12, 2, 11, -192) | ivec4(-66, 5, 255, -66) | ivec4(2, -66, 5, 8) | ivec4(5, 11, 8, -12) | ivec4(8, -192, 2, 1) | ivec4(-192, 8, -192, 2) | ivec4(255, -12, -12, 0) | ivec4(1, 1, -66, 255) | ivec4(0, 255, 1, 5) | ivec4(11, 0, 0, 11) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_bvec4 + version 310 es + values + { + input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ]; + input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ]; + input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ]; + input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_vec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output vec4 out0 = [ vec4(193.0, 12.0, 9.0, 3.0) | vec4(3.0, 45.0, 8.0, 9.0) | vec4(255.0, 193.0, 12.0, 12.0) | vec4(8.0, 2.0, 2.0, 2.0) | vec4(10.0, 8.0, 255.0, 255.0) | vec4(9.0, 255.0, 45.0, 193.0) | vec4(2.0, 0.0, 3.0, 0.0) | vec4(12.0, 3.0, 0.0, 10.0) | vec4(0.0, 9.0, 193.0, 45.0) | vec4(45.0, 10.0, 10.0, 8.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_ivec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output ivec4 out0 = [ ivec4(193, 12, 9, 3) | ivec4(3, 45, 8, 9) | ivec4(255, 193, 12, 12) | ivec4(8, 2, 2, 2) | ivec4(10, 8, 255, 255) | ivec4(9, 255, 45, 193) | ivec4(2, 0, 3, 0) | ivec4(12, 3, 0, 10) | ivec4(0, 9, 193, 45) | ivec4(45, 10, 10, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_bvec4 + version 310 es + values + { + input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ]; + input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ]; + input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ]; + input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, true, false) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output vec4 out0 = [ vec4(1.0, 1.0, 0.0, 0.0) | vec4(0.0, 0.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output ivec4 out0 = [ ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(false, false, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_vec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output vec4 out0 = [ vec4(1.0, 36.8125, -66.0, 1.0) | vec4(1.0, 0.0, 2.0, 1.0) | vec4(0.0, -8.25, 255.0, 0.0) | vec4(0.0, 1.0, 11.0, 0.0) | vec4(0.0, -0.5, 1.0, 1.0) | vec4(1.0, 0.0, 8.0, 1.0) | vec4(0.0, 2.0, -192.0, 0.0) | vec4(0.0, -20.125, -12.0, 1.0) | vec4(1.0, 3.5, 0.0, 0.0) | vec4(1.0, 1.0, 5.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output ivec4 out0 = [ ivec4(1, 36, -66, 1) | ivec4(1, 0, 2, 1) | ivec4(0, -8, 255, 0) | ivec4(0, 1, 11, 0) | ivec4(0, 0, 1, 1) | ivec4(1, 0, 8, 1) | ivec4(0, 2, -192, 0) | ivec4(0, -20, -12, 1) | ivec4(1, 3, 0, 0) | ivec4(1, 1, 5, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | false | true | false | false | true | true ]; + input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ]; + input bool in3 = [ true | true | false | false | true | true | false | true | false | false ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(-0.75, -0.0322580645161, 0.0, -2.0) | vec4(-0.5, -2.25, 0.0, 0.0) | vec4(-32.0, 64.0, -32.0, 64.0) | vec4(1.0, 1.25, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, 64) | ivec4(1, 1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output bvec4 out0 = [ bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_vec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output vec4 out0 = [ vec4(-0.75, -0.0322580645161, 0.0, 1.0) | vec4(-32.0, 64.0, 0.0, 0.0) | vec4(1.0, 1.25, 0.0, 0.0) | vec4(0.0, 0.5, 1.0, 1.0) | vec4(-0.5, -2.25, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_ivec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 1) | ivec4(-32, 64, 0, 0) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) | ivec4(0, -2, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_bvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ]; + output bvec4 out0 = [ bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, false, false) | bvec4(false, true, true, true) | bvec4(true, true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_vec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, -0.5) | vec4(0.0, 0.0, 0.0, 3.5) | vec4(0.0, 1.0, 0.0, 2.0) | vec4(1.0, 1.0, 1.0, 0.0) | vec4(0.0, 0.0, 0.0, -8.25) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(1.0, 0.0, 0.0, 36.8125) | vec4(0.0, 1.0, 0.0, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_ivec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(0, 0, 0, 3) | ivec4(0, 1, 0, 2) | ivec4(1, 1, 1, 0) | ivec4(0, 0, 0, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 0, 0, 36) | ivec4(0, 1, 0, -20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_bvec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, true) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_vec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output vec4 out0 = [ vec4(-32.0, 64.0, -51.0, -0.5) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.0) | vec4(1.0, 1.25, 1.125, 3.5) | vec4(-0.5, -2.25, -4.875, -20.125) | vec4(0.0, 0.5, 0.75, 2.0) | vec4(-0.5, -2.25, -4.875, -8.25) | vec4(0.0, 0.5, 0.75, 1.0) | vec4(1.0, 1.25, 1.125, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_ivec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output ivec4 out0 = [ ivec4(-32, 64, -51, 0) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 3) | ivec4(0, -2, -4, -20) | ivec4(0, 0, 0, 2) | ivec4(0, -2, -4, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 1, 1, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_bvec4 + version 310 es + values + { + input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_vec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output vec4 out0 = [ vec4(-12.0, 0.0, -2.0, 1.0) | vec4(11.0, -32.0, 64.0, 11.0) | vec4(8.0, 0.0, 0.0, 2.0) | vec4(255.0, 0.0, -2.0, -66.0) | vec4(0.0, 1.0, 1.0, -192.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(-66.0, -32.0, 64.0, -12.0) | vec4(2.0, 1.0, 1.0, 255.0) | vec4(-192.0, 0.0, 0.0, 5.0) | vec4(5.0, 0.0, 0.0, 8.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_ivec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output ivec4 out0 = [ ivec4(-12, 0, -2, 1) | ivec4(11, -32, 64, 11) | ivec4(8, 0, 0, 2) | ivec4(255, 0, -2, -66) | ivec4(0, 1, 1, -192) | ivec4(1, 0, 0, 0) | ivec4(-66, -32, 64, -12) | ivec4(2, 1, 1, 255) | ivec4(-192, 0, 0, 5) | ivec4(5, 0, 0, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_bvec4 + version 310 es + values + { + input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ]; + input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_vec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, -32.0, 64.0) | vec4(0.0, 2.0, 0.0, 0.0) | vec4(0.0, 3.5, 0.0, 0.0) | vec4(1.0, -20.125, 0.0, -2.0) | vec4(1.0, -0.5, 0.0, -2.0) | vec4(1.0, 36.8125, 0.0, 0.0) | vec4(0.0, -8.25, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_ivec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, -32, 64) | ivec4(0, 2, 0, 0) | ivec4(0, 3, 0, 0) | ivec4(1, -20, 0, -2) | ivec4(1, 0, 0, -2) | ivec4(1, 36, 0, 0) | ivec4(0, -8, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_bvec4 + version 310 es + values + { + input bool in0 = [ true | false | false | false | true | true | true | false ]; + input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, true, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(false, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_vec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 0.0) | vec4(-20.125, 0.0, 0.0, 0.0) | vec4(-8.25, 1.0, 1.0, 1.0) | vec4(-0.5, 0.0, 2.0, 4.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 1.0, 1.0, 1.0) | vec4(3.5, 0.0, 2.0, 4.0) | vec4(36.8125, 32.0, 64.0, 51.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_ivec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(-20, 0, 0, 0) | ivec4(-8, 1, 1, 1) | ivec4(0, 0, 2, 4) | ivec4(0, 0, 0, 0) | ivec4(2, 1, 1, 1) | ivec4(3, 0, 2, 4) | ivec4(36, 32, 64, 51) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_bvec4 + version 310 es + values + { + input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ]; + output bvec4 out0 = [ bvec4(true, false, false, false) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_vec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output vec4 out0 = [ vec4(1.0, 0.0, 2.0, 0.0) | vec4(-192.0, 1.0, 1.0, 0.0) | vec4(-66.0, 0.0, 0.0, 1.0) | vec4(-12.0, 0.0, 2.0, 1.0) | vec4(0.0, 32.0, 64.0, 1.0) | vec4(2.0, 0.0, 0.0, 1.0) | vec4(11.0, 32.0, 64.0, 1.0) | vec4(8.0, 0.0, 0.0, 0.0) | vec4(255.0, 1.0, 1.0, 0.0) | vec4(5.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_ivec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output ivec4 out0 = [ ivec4(1, 0, 2, 0) | ivec4(-192, 1, 1, 0) | ivec4(-66, 0, 0, 1) | ivec4(-12, 0, 2, 1) | ivec4(0, 32, 64, 1) | ivec4(2, 0, 0, 1) | ivec4(11, 32, 64, 1) | ivec4(8, 0, 0, 0) | ivec4(255, 1, 1, 0) | ivec4(5, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_bvec4 + version 310 es + values + { + input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + input bool in2 = [ false | false | true | true | true | true | true | false | false | false ]; + output bvec4 out0 = [ bvec4(true, false, true, false) | bvec4(true, true, true, false) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, false) | bvec4(true, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_vec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) | vec2(0.5, 2.25) | vec2(1.0, 1.25) ]; + input vec2 in1 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.0, 0.5) | vec2(0.75, 0.0322580645161) ]; + output uvec4 out0 = [ uvec4(32, 64, 0, 2) | uvec4(0, 0, 1, 1) | uvec4(0, 0, 32, 64) | uvec4(0, 2, 0, 0) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_uvec4 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) ]; + input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) ]; + output uvec4 out0 = [ uvec4(1, 0, 1, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_uvec4 + version 310 es + values + { + input float in0 = [ 2.0 | 36.8125 | 0.0 | 20.125 | 1.0 | 0.5 | 8.25 | 3.5 ]; + input float in1 = [ 1.0 | 8.25 | 2.0 | 20.125 | 36.8125 | 0.0 | 0.5 | 3.5 ]; + input float in2 = [ 0.0 | 8.25 | 2.0 | 1.0 | 36.8125 | 20.125 | 0.5 | 3.5 ]; + input float in3 = [ 1.0 | 8.25 | 0.0 | 2.0 | 20.125 | 3.5 | 0.5 | 36.8125 ]; + output uvec4 out0 = [ uvec4(2, 1, 0, 1) | uvec4(36, 8, 8, 8) | uvec4(0, 2, 2, 0) | uvec4(20, 20, 1, 2) | uvec4(1, 36, 36, 20) | uvec4(0, 0, 20, 3) | uvec4(8, 0, 0, 0) | uvec4(3, 3, 3, 36) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_uvec4 + version 310 es + values + { + input int in0 = [ 192 | 2 | 12 | 11 | 0 | 8 | 5 | 66 | 1 | 255 ]; + input int in1 = [ 66 | 12 | 5 | 1 | 0 | 192 | 8 | 255 | 11 | 2 ]; + input int in2 = [ 192 | 5 | 1 | 66 | 255 | 11 | 8 | 12 | 2 | 0 ]; + input int in3 = [ 255 | 5 | 11 | 12 | 2 | 1 | 66 | 0 | 8 | 192 ]; + output uvec4 out0 = [ uvec4(192, 66, 192, 255) | uvec4(2, 12, 5, 5) | uvec4(12, 5, 1, 11) | uvec4(11, 1, 66, 12) | uvec4(0, 0, 255, 2) | uvec4(8, 192, 11, 1) | uvec4(5, 8, 8, 66) | uvec4(66, 255, 12, 0) | uvec4(1, 11, 2, 8) | uvec4(255, 2, 0, 192) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_uvec4 + version 310 es + values + { + input uint in0 = [ 255 | 8 | 3 | 193 | 45 | 2 | 0 | 12 | 9 | 10 ]; + input uint in1 = [ 255 | 45 | 0 | 12 | 2 | 10 | 8 | 9 | 193 | 3 ]; + input uint in2 = [ 3 | 0 | 2 | 9 | 12 | 10 | 255 | 45 | 193 | 8 ]; + input uint in3 = [ 2 | 255 | 10 | 193 | 8 | 12 | 3 | 9 | 0 | 45 ]; + output uvec4 out0 = [ uvec4(255, 255, 3, 2) | uvec4(8, 45, 0, 255) | uvec4(3, 0, 2, 10) | uvec4(193, 12, 9, 193) | uvec4(45, 2, 12, 8) | uvec4(2, 10, 10, 12) | uvec4(0, 8, 255, 3) | uvec4(12, 9, 45, 9) | uvec4(9, 193, 193, 0) | uvec4(10, 3, 8, 45) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ false | true ]; + input bool in1 = [ false | true ]; + input bool in2 = [ true | false ]; + input bool in3 = [ true | false ]; + output uvec4 out0 = [ uvec4(0, 0, 1, 1) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | false | false | true | false | true | true | true | false | false ]; + input float in1 = [ 20.125 | 0.0 | 1.0 | 3.5 | 1.0 | 0.0 | 0.5 | 8.25 | 2.0 | 36.8125 ]; + input int in2 = [ 66 | 192 | 1 | 2 | 5 | 11 | 8 | 12 | 255 | 0 ]; + input bool in3 = [ true | true | true | true | false | true | false | false | false | false ]; + output uvec4 out0 = [ uvec4(1, 20, 66, 1) | uvec4(0, 0, 192, 1) | uvec4(0, 1, 1, 1) | uvec4(1, 3, 2, 1) | uvec4(0, 1, 5, 0) | uvec4(1, 0, 11, 1) | uvec4(1, 0, 8, 0) | uvec4(1, 8, 12, 0) | uvec4(0, 2, 255, 0) | uvec4(0, 36, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) | ivec2(0, 0) ]; + output uvec4 out0 = [ uvec4(0, 2, 1, 1) | uvec4(1, 1, 0, 2) | uvec4(32, 64, 32, 64) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_uvec4 + version 310 es + values + { + input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.5, 2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, true) ]; + output uvec4 out0 = [ uvec4(32, 64, 0, 0) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(1, 1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_uvec4 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, false, false) ]; + input float in1 = [ 2.0 | 0.0 | 36.8125 | 0.5 | 1.0 | 8.25 | 3.5 | 20.125 ]; + output uvec4 out0 = [ uvec4(1, 0, 0, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 1, 0, 36) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 8) | uvec4(1, 0, 0, 3) | uvec4(0, 0, 0, 20) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_uvec4 + version 310 es + values + { + input vec3 in0 = [ vec3(0.5, 2.25, 4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(1.0, 1.25, 1.125) | vec3(0.75, 0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) ]; + input float in1 = [ 8.25 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.5 | 20.125 | 3.5 ]; + output uvec4 out0 = [ uvec4(0, 2, 4, 8) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 4, 36) | uvec4(32, 64, 51, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 20) | uvec4(0, 0, 0, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_uvec4 + version 310 es + values + { + input int in0 = [ 8 | 1 | 11 | 192 | 255 | 12 | 66 | 2 | 0 | 5 ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(32, 64) | ivec2(0, 2) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(32, 64) | ivec2(0, 0) ]; + input int in2 = [ 2 | 192 | 12 | 0 | 8 | 1 | 66 | 255 | 11 | 5 ]; + output uvec4 out0 = [ uvec4(8, 1, 1, 2) | uvec4(1, 0, 0, 192) | uvec4(11, 1, 1, 12) | uvec4(192, 32, 64, 0) | uvec4(255, 0, 2, 8) | uvec4(12, 0, 2, 1) | uvec4(66, 0, 0, 66) | uvec4(2, 0, 0, 255) | uvec4(0, 32, 64, 11) | uvec4(5, 0, 0, 5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_uvec4 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | false | true ]; + input float in1 = [ 8.25 | 0.5 | 2.0 | 20.125 | 0.0 | 36.8125 | 3.5 | 1.0 ]; + input ivec2 in2 = [ ivec2(32, 64) | ivec2(1, 1) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) ]; + output uvec4 out0 = [ uvec4(1, 8, 32, 64) | uvec4(1, 0, 1, 1) | uvec4(0, 2, 0, 2) | uvec4(0, 20, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(0, 36, 0, 2) | uvec4(0, 3, 1, 1) | uvec4(1, 1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_uvec4 + version 310 es + values + { + input float in0 = [ 8.25 | 20.125 | 1.0 | 0.5 | 3.5 | 2.0 | 36.8125 | 0.0 ]; + input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 2, 4) | uvec3(1, 1, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ]; + output uvec4 out0 = [ uvec4(8, 0, 0, 0) | uvec4(20, 0, 0, 0) | uvec4(1, 0, 2, 4) | uvec4(0, 32, 64, 51) | uvec4(3, 0, 2, 4) | uvec4(2, 1, 1, 1) | uvec4(36, 1, 1, 1) | uvec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_uvec4 + version 310 es + values + { + input int in0 = [ 2 | 1 | 11 | 66 | 192 | 12 | 8 | 255 | 0 | 5 ]; + input uvec2 in1 = [ uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) ]; + input bool in2 = [ true | false | false | false | false | true | true | true | false | true ]; + output uvec4 out0 = [ uvec4(2, 1, 1, 1) | uvec4(1, 0, 0, 0) | uvec4(11, 0, 0, 0) | uvec4(66, 0, 2, 0) | uvec4(192, 0, 0, 0) | uvec4(12, 0, 2, 1) | uvec4(8, 32, 64, 1) | uvec4(255, 1, 1, 1) | uvec4(0, 32, 64, 0) | uvec4(5, 0, 0, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_vec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output vec3 out0 = [ vec3(-0.5, 2.0, 1.0) | vec3(1.0, -20.125, 3.5) | vec3(3.5, 3.5, 2.0) | vec3(-8.25, 36.8125, -8.25) | vec3(36.8125, -8.25, -20.125) | vec3(0.0, 1.0, -0.5) | vec3(2.0, -0.5, 36.8125) | vec3(-20.125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_ivec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output ivec3 out0 = [ ivec3(0, 2, 1) | ivec3(1, -20, 3) | ivec3(3, 3, 2) | ivec3(-8, 36, -8) | ivec3(36, -8, -20) | ivec3(0, 1, 0) | ivec3(2, 0, 36) | ivec3(-20, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_float_float_to_bvec3 + version 310 es + values + { + input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ]; + input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ]; + input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_vec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output vec3 out0 = [ vec3(-192.0, 5.0, -192.0) | vec3(5.0, 1.0, 1.0) | vec3(-12.0, 8.0, 2.0) | vec3(0.0, 0.0, 5.0) | vec3(11.0, 2.0, -12.0) | vec3(8.0, -192.0, 8.0) | vec3(1.0, -12.0, 11.0) | vec3(-66.0, 255.0, 0.0) | vec3(255.0, -66.0, 255.0) | vec3(2.0, 11.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_ivec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output ivec3 out0 = [ ivec3(-192, 5, -192) | ivec3(5, 1, 1) | ivec3(-12, 8, 2) | ivec3(0, 0, 5) | ivec3(11, 2, -12) | ivec3(8, -192, 8) | ivec3(1, -12, 11) | ivec3(-66, 255, 0) | ivec3(255, -66, 255) | ivec3(2, 11, -66) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_bvec3 + version 310 es + values + { + input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ]; + input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ]; + input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_vec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output vec3 out0 = [ vec3(8.0, 193.0, 12.0) | vec3(45.0, 2.0, 2.0) | vec3(2.0, 9.0, 193.0) | vec3(3.0, 8.0, 255.0) | vec3(255.0, 0.0, 8.0) | vec3(193.0, 255.0, 10.0) | vec3(12.0, 45.0, 45.0) | vec3(0.0, 3.0, 0.0) | vec3(9.0, 10.0, 3.0) | vec3(10.0, 12.0, 9.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_ivec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output ivec3 out0 = [ ivec3(8, 193, 12) | ivec3(45, 2, 2) | ivec3(2, 9, 193) | ivec3(3, 8, 255) | ivec3(255, 0, 8) | ivec3(193, 255, 10) | ivec3(12, 45, 45) | ivec3(0, 3, 0) | ivec3(9, 10, 3) | ivec3(10, 12, 9) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_bvec3 + version 310 es + values + { + input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ]; + input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ]; + input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_vec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_vec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output vec3 out0 = [ vec3(1.0, 0.0, 8.0) | vec3(1.0, 36.8125, -192.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, -8.25, 2.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 3.5, -12.0) | vec3(1.0, 1.0, 11.0) | vec3(0.0, -0.5, 255.0) | vec3(0.0, -20.125, 5.0) | vec3(1.0, 2.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output ivec3 out0 = [ ivec3(1, 0, 8) | ivec3(1, 36, -192) | ivec3(0, 0, -66) | ivec3(0, -8, 2) | ivec3(1, 1, 1) | ivec3(0, 3, -12) | ivec3(1, 1, 11) | ivec3(0, 0, 255) | ivec3(0, -20, 5) | ivec3(1, 2, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | false | true | false | false | true ]; + input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ]; + input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_vec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output vec3 out0 = [ vec3(1.0, 1.25, 0.0) | vec3(-0.75, -0.0322580645161, 1.0) | vec3(-32.0, 64.0, 1.0) | vec3(-0.5, -2.25, 1.0) | vec3(0.0, 0.5, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_ivec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output ivec3 out0 = [ ivec3(1, 1, 0) | ivec3(0, 0, 1) | ivec3(-32, 64, 1) | ivec3(0, -2, 1) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_bvec3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ]; + input bool in1 = [ false | true | true | true | false ]; + output bvec3 out0 = [ bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_vec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output vec3 out0 = [ vec3(1.0, 0.0, -20.125) | vec3(0.0, 1.0, 2.0) | vec3(0.0, 1.0, 36.8125) | vec3(1.0, 0.0, 1.0) | vec3(0.0, 0.0, 3.5) | vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, -8.25) | vec3(0.0, 0.0, -0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_ivec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output ivec3 out0 = [ ivec3(1, 0, -20) | ivec3(0, 1, 2) | ivec3(0, 1, 36) | ivec3(1, 0, 1) | ivec3(0, 0, 3) | ivec3(0, 0, 0) | ivec3(1, 1, -8) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_bvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_vec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, 0.0, 255.0) | vec3(1.0, 0.0, 8.0) | vec3(0.0, 0.0, -192.0) | vec3(0.0, 1.0, 2.0) | vec3(1.0, 0.0, 5.0) | vec3(0.0, 1.0, 11.0) | vec3(0.0, 0.0, -12.0) | vec3(1.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_ivec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, -66) | ivec3(0, 0, 255) | ivec3(1, 0, 8) | ivec3(0, 0, -192) | ivec3(0, 1, 2) | ivec3(1, 0, 5) | ivec3(0, 1, 11) | ivec3(0, 0, -12) | ivec3(1, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_bvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ]; + input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, false, true) | bvec3(true, true, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_vec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output vec3 out0 = [ vec3(1.0, 0.0, -2.0) | vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 1.0) | vec3(1.0, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_ivec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output ivec3 out0 = [ ivec3(1, 0, -2) | ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 1) | ivec3(1, -32, 64) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_bvec3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_vec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output vec3 out0 = [ vec3(-20.125, 0.0, 0.0) | vec3(36.8125, 0.0, 2.0) | vec3(-8.25, 32.0, 64.0) | vec3(2.0, 0.0, 0.0) | vec3(-0.5, 0.0, 2.0) | vec3(0.0, 0.0, 0.0) | vec3(3.5, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_ivec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output ivec3 out0 = [ ivec3(-20, 0, 0) | ivec3(36, 0, 2) | ivec3(-8, 32, 64) | ivec3(2, 0, 0) | ivec3(0, 0, 2) | ivec3(0, 0, 0) | ivec3(3, 1, 1) | ivec3(1, 1, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_bvec3 + version 310 es + values + { + input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(true, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_to_uvec3 + version 310 es + values + { + input float in0 = [ 8.25 | 20.125 | 2.0 | 3.5 | 0.5 | 36.8125 | 1.0 | 0.0 ]; + input float in1 = [ 1.0 | 0.0 | 3.5 | 36.8125 | 8.25 | 2.0 | 0.5 | 20.125 ]; + input float in2 = [ 20.125 | 0.5 | 8.25 | 36.8125 | 1.0 | 0.0 | 3.5 | 2.0 ]; + output uvec3 out0 = [ uvec3(8, 1, 20) | uvec3(20, 0, 0) | uvec3(2, 3, 8) | uvec3(3, 36, 36) | uvec3(0, 8, 1) | uvec3(36, 2, 0) | uvec3(1, 0, 3) | uvec3(0, 20, 2) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case int_int_int_to_uvec3 + version 310 es + values + { + input int in0 = [ 1 | 255 | 192 | 2 | 5 | 12 | 0 | 11 | 8 | 66 ]; + input int in1 = [ 192 | 66 | 5 | 8 | 11 | 1 | 0 | 255 | 12 | 2 ]; + input int in2 = [ 192 | 5 | 1 | 11 | 66 | 8 | 12 | 0 | 2 | 255 ]; + output uvec3 out0 = [ uvec3(1, 192, 192) | uvec3(255, 66, 5) | uvec3(192, 5, 1) | uvec3(2, 8, 11) | uvec3(5, 11, 66) | uvec3(12, 1, 8) | uvec3(0, 0, 12) | uvec3(11, 255, 0) | uvec3(8, 12, 2) | uvec3(66, 2, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_to_uvec3 + version 310 es + values + { + input uint in0 = [ 193 | 9 | 45 | 255 | 2 | 0 | 10 | 8 | 12 | 3 ]; + input uint in1 = [ 3 | 45 | 2 | 9 | 10 | 0 | 8 | 12 | 255 | 193 ]; + input uint in2 = [ 2 | 3 | 9 | 10 | 255 | 8 | 12 | 0 | 193 | 45 ]; + output uvec3 out0 = [ uvec3(193, 3, 2) | uvec3(9, 45, 3) | uvec3(45, 2, 9) | uvec3(255, 9, 10) | uvec3(2, 10, 255) | uvec3(0, 0, 8) | uvec3(10, 8, 12) | uvec3(8, 12, 0) | uvec3(12, 255, 193) | uvec3(3, 193, 45) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_to_uvec3 + version 310 es + values + { + input bool in0 = [ false | true ]; + input bool in1 = [ false | true ]; + input bool in2 = [ true | false ]; + output uvec3 out0 = [ uvec3(0, 0, 1) | uvec3(1, 1, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_int_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false | true | false | false | true | false | true | true | false ]; + input float in1 = [ 36.8125 | 20.125 | 1.0 | 0.0 | 3.5 | 1.0 | 2.0 | 0.5 | 0.0 | 8.25 ]; + input int in2 = [ 1 | 0 | 8 | 66 | 2 | 11 | 192 | 5 | 12 | 255 ]; + output uvec3 out0 = [ uvec3(1, 36, 1) | uvec3(0, 20, 0) | uvec3(1, 1, 8) | uvec3(0, 0, 66) | uvec3(0, 3, 2) | uvec3(1, 1, 11) | uvec3(0, 2, 192) | uvec3(1, 0, 5) | uvec3(1, 0, 12) | uvec3(0, 8, 255) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_bool_to_uvec3 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(32.0, 64.0) | vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(0.75, 0.0322580645161) ]; + input bool in1 = [ false | false | true | true | true ]; + output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(32, 64, 0) | uvec3(0, 2, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_float_to_uvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) ]; + input float in1 = [ 8.25 | 36.8125 | 20.125 | 2.0 | 0.0 | 1.0 | 0.5 | 3.5 ]; + output uvec3 out0 = [ uvec3(1, 1, 8) | uvec3(1, 0, 36) | uvec3(0, 1, 20) | uvec3(0, 0, 2) | uvec3(1, 0, 0) | uvec3(0, 1, 1) | uvec3(0, 0, 0) | uvec3(0, 0, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_int_to_uvec3 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) ]; + input int in1 = [ 255 | 1 | 2 | 5 | 0 | 11 | 192 | 12 | 8 | 66 ]; + output uvec3 out0 = [ uvec3(1, 1, 255) | uvec3(0, 1, 1) | uvec3(0, 0, 2) | uvec3(1, 1, 5) | uvec3(0, 0, 0) | uvec3(1, 0, 11) | uvec3(0, 0, 192) | uvec3(0, 0, 12) | uvec3(0, 1, 8) | uvec3(1, 0, 66) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_ivec2_to_uvec3 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(32, 64) ]; + output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 2) | uvec3(1, 1, 1) | uvec3(1, 0, 0) | uvec3(0, 32, 64) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_uvec2_to_uvec3 + version 310 es + values + { + input float in0 = [ 2.0 | 8.25 | 20.125 | 3.5 | 0.0 | 0.5 | 36.8125 | 1.0 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ]; + output uvec3 out0 = [ uvec3(2, 0, 2) | uvec3(8, 1, 1) | uvec3(20, 32, 64) | uvec3(3, 0, 0) | uvec3(0, 0, 2) | uvec3(0, 0, 0) | uvec3(36, 1, 1) | uvec3(1, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_vec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output vec2 out0 = [ vec2(-0.5, 1.0) | vec2(-20.125, -20.125) | vec2(1.0, 0.0) | vec2(2.0, 3.5) | vec2(3.5, -8.25) | vec2(36.8125, 36.8125) | vec2(-8.25, -0.5) | vec2(0.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_ivec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output ivec2 out0 = [ ivec2(0, 1) | ivec2(-20, -20) | ivec2(1, 0) | ivec2(2, 3) | ivec2(3, -8) | ivec2(36, 36) | ivec2(-8, 0) | ivec2(0, 2) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_bvec2 + version 310 es + values + { + input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ]; + input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_vec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output vec2 out0 = [ vec2(2.0, -192.0) | vec2(-66.0, 8.0) | vec2(0.0, 1.0) | vec2(5.0, 0.0) | vec2(-12.0, 5.0) | vec2(8.0, -66.0) | vec2(-192.0, 2.0) | vec2(1.0, 255.0) | vec2(11.0, 11.0) | vec2(255.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_ivec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output ivec2 out0 = [ ivec2(2, -192) | ivec2(-66, 8) | ivec2(0, 1) | ivec2(5, 0) | ivec2(-12, 5) | ivec2(8, -66) | ivec2(-192, 2) | ivec2(1, 255) | ivec2(11, 11) | ivec2(255, -12) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_bvec2 + version 310 es + values + { + input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ]; + input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_vec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output vec2 out0 = [ vec2(9.0, 8.0) | vec2(12.0, 9.0) | vec2(0.0, 45.0) | vec2(255.0, 2.0) | vec2(8.0, 12.0) | vec2(45.0, 193.0) | vec2(3.0, 255.0) | vec2(2.0, 0.0) | vec2(10.0, 3.0) | vec2(193.0, 10.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_ivec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output ivec2 out0 = [ ivec2(9, 8) | ivec2(12, 9) | ivec2(0, 45) | ivec2(255, 2) | ivec2(8, 12) | ivec2(45, 193) | ivec2(3, 255) | ivec2(2, 0) | ivec2(10, 3) | ivec2(193, 10) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_bvec2 + version 310 es + values + { + input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ]; + input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_vec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_ivec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_bvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_vec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output vec2 out0 = [ vec2(0.0, -66.0) | vec2(3.5, 1.0) | vec2(0.0, 255.0) | vec2(2.0, -192.0) | vec2(-8.25, 8.0) | vec2(36.8125, 2.0) | vec2(-20.125, 0.0) | vec2(1.0, 5.0) | vec2(1.0, -12.0) | vec2(-0.5, 11.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_ivec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output ivec2 out0 = [ ivec2(0, -66) | ivec2(3, 1) | ivec2(0, 255) | ivec2(2, -192) | ivec2(-8, 8) | ivec2(36, 2) | ivec2(-20, 0) | ivec2(1, 5) | ivec2(1, -12) | ivec2(0, 11) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_bvec2 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ]; + input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_vec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output vec2 out0 = [ vec2(2.0, 0.0) | vec2(3.5, 1.0) | vec2(1.0, 1.0) | vec2(-20.125, 0.0) | vec2(-8.25, 0.0) | vec2(0.0, 1.0) | vec2(-0.5, 0.0) | vec2(36.8125, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_ivec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output ivec2 out0 = [ ivec2(2, 0) | ivec2(3, 1) | ivec2(1, 1) | ivec2(-20, 0) | ivec2(-8, 0) | ivec2(0, 1) | ivec2(0, 0) | ivec2(36, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_bvec2 + version 310 es + values + { + input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ]; + input bool in1 = [ false | true | true | false | false | true | false | true ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_vec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output vec2 out0 = [ vec2(255.0, 1.0) | vec2(2.0, 0.0) | vec2(-12.0, 0.0) | vec2(1.0, 0.0) | vec2(-192.0, 1.0) | vec2(5.0, 0.0) | vec2(8.0, 1.0) | vec2(0.0, 0.0) | vec2(-66.0, 1.0) | vec2(11.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_ivec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output ivec2 out0 = [ ivec2(255, 1) | ivec2(2, 0) | ivec2(-12, 0) | ivec2(1, 0) | ivec2(-192, 1) | ivec2(5, 0) | ivec2(8, 1) | ivec2(0, 0) | ivec2(-66, 1) | ivec2(11, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_bvec2 + version 310 es + values + { + input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ]; + input bool in1 = [ true | false | false | false | true | false | true | false | true | true ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(true, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_vec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output vec2 out0 = [ vec2(-66.0, 193.0) | vec2(1.0, 0.0) | vec2(-192.0, 2.0) | vec2(-12.0, 10.0) | vec2(5.0, 255.0) | vec2(255.0, 12.0) | vec2(11.0, 45.0) | vec2(0.0, 8.0) | vec2(2.0, 9.0) | vec2(8.0, 3.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_ivec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output ivec2 out0 = [ ivec2(-66, 193) | ivec2(1, 0) | ivec2(-192, 2) | ivec2(-12, 10) | ivec2(5, 255) | ivec2(255, 12) | ivec2(11, 45) | ivec2(0, 8) | ivec2(2, 9) | ivec2(8, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_bvec2 + version 310 es + values + { + input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ]; + input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_vec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output vec2 out0 = [ vec2(12.0, -20.125) | vec2(0.0, 0.0) | vec2(8.0, 3.5) | vec2(193.0, -8.25) | vec2(3.0, 0.0) | vec2(10.0, 1.0) | vec2(9.0, 2.0) | vec2(2.0, 36.8125) | vec2(45.0, -0.5) | vec2(255.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = vec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_ivec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output ivec2 out0 = [ ivec2(12, -20) | ivec2(0, 0) | ivec2(8, 3) | ivec2(193, -8) | ivec2(3, 0) | ivec2(10, 1) | ivec2(9, 2) | ivec2(2, 36) | ivec2(45, 0) | ivec2(255, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = ivec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_bvec2 + version 310 es + values + { + input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = bvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_to_uvec2 + version 310 es + values + { + input float in0 = [ 8.25 | 36.8125 | 1.0 | 0.5 | 20.125 | 0.0 | 2.0 | 3.5 ]; + input float in1 = [ 0.5 | 36.8125 | 0.0 | 2.0 | 8.25 | 20.125 | 1.0 | 3.5 ]; + output uvec2 out0 = [ uvec2(8, 0) | uvec2(36, 36) | uvec2(1, 0) | uvec2(0, 2) | uvec2(20, 8) | uvec2(0, 20) | uvec2(2, 1) | uvec2(3, 3) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_int_to_uvec2 + version 310 es + values + { + input int in0 = [ 0 | 12 | 8 | 11 | 255 | 66 | 192 | 2 | 5 | 1 ]; + input int in1 = [ 11 | 12 | 2 | 5 | 66 | 192 | 255 | 0 | 1 | 8 ]; + output uvec2 out0 = [ uvec2(0, 11) | uvec2(12, 12) | uvec2(8, 2) | uvec2(11, 5) | uvec2(255, 66) | uvec2(66, 192) | uvec2(192, 255) | uvec2(2, 0) | uvec2(5, 1) | uvec2(1, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_uint_to_uvec2 + version 310 es + values + { + input uint in0 = [ 3 | 9 | 10 | 193 | 8 | 0 | 255 | 45 | 2 | 12 ]; + input uint in1 = [ 0 | 2 | 12 | 3 | 10 | 9 | 45 | 193 | 255 | 8 ]; + output uvec2 out0 = [ uvec2(3, 0) | uvec2(9, 2) | uvec2(10, 12) | uvec2(193, 3) | uvec2(8, 10) | uvec2(0, 9) | uvec2(255, 45) | uvec2(45, 193) | uvec2(2, 255) | uvec2(12, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case bool_bool_to_uvec2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_int_to_uvec2 + version 310 es + values + { + input float in0 = [ 8.25 | 1.0 | 0.5 | 3.5 | 2.0 | 0.0 | 36.8125 | 1.0 | 0.0 | 20.125 ]; + input int in1 = [ 0 | 255 | 12 | 5 | 192 | 2 | 66 | 11 | 1 | 8 ]; + output uvec2 out0 = [ uvec2(8, 0) | uvec2(1, 255) | uvec2(0, 12) | uvec2(3, 5) | uvec2(2, 192) | uvec2(0, 2) | uvec2(36, 66) | uvec2(1, 11) | uvec2(0, 1) | uvec2(20, 8) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_bool_to_uvec2 + version 310 es + values + { + input float in0 = [ 3.5 | 1.0 | 8.25 | 0.5 | 2.0 | 36.8125 | 0.0 | 20.125 ]; + input bool in1 = [ true | false | true | false | true | false | false | true ]; + output uvec2 out0 = [ uvec2(3, 1) | uvec2(1, 0) | uvec2(8, 1) | uvec2(0, 0) | uvec2(2, 1) | uvec2(36, 0) | uvec2(0, 0) | uvec2(20, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_bool_to_uvec2 + version 310 es + values + { + input int in0 = [ 12 | 11 | 0 | 5 | 8 | 255 | 2 | 1 | 66 | 192 ]; + input bool in1 = [ true | true | false | false | false | true | false | false | true | true ]; + output uvec2 out0 = [ uvec2(12, 1) | uvec2(11, 1) | uvec2(0, 0) | uvec2(5, 0) | uvec2(8, 0) | uvec2(255, 1) | uvec2(2, 0) | uvec2(1, 0) | uvec2(66, 1) | uvec2(192, 1) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uint_to_uvec2 + version 310 es + values + { + input int in0 = [ 8 | 5 | 1 | 0 | 11 | 12 | 192 | 66 | 255 | 2 ]; + input uint in1 = [ 8 | 10 | 45 | 255 | 9 | 193 | 2 | 3 | 0 | 12 ]; + output uvec2 out0 = [ uvec2(8, 8) | uvec2(5, 10) | uvec2(1, 45) | uvec2(0, 255) | uvec2(11, 9) | uvec2(12, 193) | uvec2(192, 2) | uvec2(66, 3) | uvec2(255, 0) | uvec2(2, 12) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + case uint_float_to_uvec2 + version 310 es + values + { + input uint in0 = [ 9 | 45 | 8 | 3 | 10 | 2 | 193 | 12 | 255 | 0 ]; + input float in1 = [ 3.5 | 20.125 | 2.0 | 0.0 | 1.0 | 36.8125 | 8.25 | 1.0 | 0.0 | 0.5 ]; + output uvec2 out0 = [ uvec2(9, 3) | uvec2(45, 20) | uvec2(8, 2) | uvec2(3, 0) | uvec2(10, 1) | uvec2(2, 36) | uvec2(193, 8) | uvec2(12, 1) | uvec2(255, 0) | uvec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = uvec2(in0, in1); + ${OUTPUT} + } + "" + end + + +end # vector_combine +group matrix_combine "Matrix Combine Constructors" + + case vec2_vec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input vec2 in1 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) ]; + output mat2 out0 = [ mat2(1.0, 1.25, 0.0, 0.5) | mat2(-32.0, 64.0, 1.0, 1.25) | mat2(-0.5, -2.25, -0.75, -0.0322580645161) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, -0.5, -2.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec2_bvec2_to_mat2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, true) ]; + output mat2 out0 = [ mat2(0.0, 1.0, 0.0, 0.0) | mat2(1.0, 1.0, 1.0, 0.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 1.0, 1.0) | mat2(0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_to_mat2 + version 310 es + values + { + input float in0 = [ -8.25 | 3.5 | 36.8125 | 2.0 | -20.125 | 1.0 | -0.5 | 0.0 ]; + input float in1 = [ 3.5 | -20.125 | 1.0 | 0.0 | -8.25 | 2.0 | 36.8125 | -0.5 ]; + input float in2 = [ 36.8125 | 3.5 | 0.0 | -20.125 | -0.5 | -8.25 | 1.0 | 2.0 ]; + input float in3 = [ -0.5 | 0.0 | -8.25 | -20.125 | 2.0 | 3.5 | 1.0 | 36.8125 ]; + output mat2 out0 = [ mat2(-8.25, 3.5, 36.8125, -0.5) | mat2(3.5, -20.125, 3.5, 0.0) | mat2(36.8125, 1.0, 0.0, -8.25) | mat2(2.0, 0.0, -20.125, -20.125) | mat2(-20.125, -8.25, -0.5, 2.0) | mat2(1.0, 2.0, -8.25, 3.5) | mat2(-0.5, 36.8125, 1.0, 1.0) | mat2(0.0, -0.5, 2.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case int_int_int_int_to_mat2 + version 310 es + values + { + input int in0 = [ 2 | 1 | -192 | 11 | -66 | 255 | 0 | 8 | -12 | 5 ]; + input int in1 = [ 11 | 255 | 5 | -66 | 8 | 2 | 0 | -12 | 1 | -192 ]; + input int in2 = [ 11 | 1 | -12 | 255 | 5 | 0 | 8 | -192 | 2 | -66 ]; + input int in3 = [ 2 | 1 | 0 | 8 | 255 | -66 | -192 | 11 | 5 | -12 ]; + output mat2 out0 = [ mat2(2.0, 11.0, 11.0, 2.0) | mat2(1.0, 255.0, 1.0, 1.0) | mat2(-192.0, 5.0, -12.0, 0.0) | mat2(11.0, -66.0, 255.0, 8.0) | mat2(-66.0, 8.0, 5.0, 255.0) | mat2(255.0, 2.0, 0.0, -66.0) | mat2(0.0, 0.0, 8.0, -192.0) | mat2(8.0, -12.0, -192.0, 11.0) | mat2(-12.0, 1.0, 2.0, 5.0) | mat2(5.0, -192.0, -66.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case uint_uint_uint_uint_to_mat2 + version 310 es + values + { + input uint in0 = [ 193 | 9 | 12 | 45 | 10 | 2 | 8 | 3 | 255 | 0 ]; + input uint in1 = [ 0 | 255 | 12 | 193 | 3 | 2 | 45 | 9 | 8 | 10 ]; + input uint in2 = [ 3 | 9 | 10 | 2 | 12 | 193 | 255 | 0 | 8 | 45 ]; + input uint in3 = [ 45 | 12 | 9 | 3 | 2 | 255 | 10 | 8 | 193 | 0 ]; + output mat2 out0 = [ mat2(193.0, 0.0, 3.0, 45.0) | mat2(9.0, 255.0, 9.0, 12.0) | mat2(12.0, 12.0, 10.0, 9.0) | mat2(45.0, 193.0, 2.0, 3.0) | mat2(10.0, 3.0, 12.0, 2.0) | mat2(2.0, 2.0, 193.0, 255.0) | mat2(8.0, 45.0, 255.0, 10.0) | mat2(3.0, 9.0, 0.0, 8.0) | mat2(255.0, 8.0, 8.0, 193.0) | mat2(0.0, 10.0, 45.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_to_mat2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ true | false ]; + input bool in2 = [ true | false ]; + input bool in3 = [ false | true ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 0.0) | mat2(0.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_to_mat2 + version 310 es + values + { + input bool in0 = [ false | true | false | true | true | false | true | true | false | false ]; + input float in1 = [ 2.0 | -0.5 | 0.0 | 1.0 | 1.0 | 36.8125 | 3.5 | 0.0 | -8.25 | -20.125 ]; + input int in2 = [ 0 | -12 | 8 | -192 | 1 | -66 | 5 | 11 | 2 | 255 ]; + input bool in3 = [ true | false | true | false | true | false | false | true | true | false ]; + output mat2 out0 = [ mat2(0.0, 2.0, 0.0, 1.0) | mat2(1.0, -0.5, -12.0, 0.0) | mat2(0.0, 0.0, 8.0, 1.0) | mat2(1.0, 1.0, -192.0, 0.0) | mat2(1.0, 1.0, 1.0, 1.0) | mat2(0.0, 36.8125, -66.0, 0.0) | mat2(1.0, 3.5, 5.0, 0.0) | mat2(1.0, 0.0, 11.0, 1.0) | mat2(0.0, -8.25, 2.0, 1.0) | mat2(0.0, -20.125, 255.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ]; + output mat2 out0 = [ mat2(1.0, 1.25, 0.0, -2.0) | mat2(-32.0, 64.0, 0.0, 0.0) | mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec2_to_mat2 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ]; + output mat2 out0 = [ mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-32.0, 64.0, 1.0, 0.0) | mat2(1.0, 1.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, 0.0, 1.0) | mat2(0.0, 0.5, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_to_mat2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in1 = [ 36.8125 | -8.25 | 1.0 | -0.5 | 2.0 | -20.125 | 0.0 | 3.5 ]; + output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 36.8125) | mat2(0.0, 1.0, 0.0, -8.25) | mat2(0.0, 0.0, 0.0, 1.0) | mat2(1.0, 1.0, 1.0, -0.5) | mat2(1.0, 0.0, 0.0, 2.0) | mat2(0.0, 1.0, 0.0, -20.125) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 0.0, 3.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec3_float_to_mat2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input float in1 = [ -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 | -8.25 | 2.0 | 1.0 ]; + output mat2 out0 = [ mat2(1.0, 1.25, 1.125, -0.5) | mat2(-0.5, -2.25, -4.875, -20.125) | mat2(-0.5, -2.25, -4.875, 0.0) | mat2(1.0, 1.25, 1.125, 36.8125) | mat2(0.0, 0.5, 0.75, 3.5) | mat2(-32.0, 64.0, -51.0, -8.25) | mat2(0.0, 0.5, 0.75, 2.0) | mat2(-0.75, -0.0322580645161, 0.0526315789474, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_ivec2_int_to_mat2 + version 310 es + values + { + input int in0 = [ 8 | -192 | 2 | 0 | -66 | 255 | 5 | 1 | -12 | 11 ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(1, 1) ]; + input int in2 = [ 2 | 1 | -12 | 0 | 11 | 8 | 255 | -192 | 5 | -66 ]; + output mat2 out0 = [ mat2(8.0, 0.0, -2.0, 2.0) | mat2(-192.0, 0.0, 0.0, 1.0) | mat2(2.0, -32.0, 64.0, -12.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-66.0, 0.0, 0.0, 11.0) | mat2(255.0, -32.0, 64.0, 8.0) | mat2(5.0, 0.0, 0.0, 255.0) | mat2(1.0, 0.0, -2.0, -192.0) | mat2(-12.0, 1.0, 1.0, 5.0) | mat2(11.0, 1.0, 1.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case bool_float_ivec2_to_mat2 + version 310 es + values + { + input bool in0 = [ true | true | true | false | false | true | false | false ]; + input float in1 = [ 1.0 | -0.5 | -20.125 | 36.8125 | 2.0 | 0.0 | -8.25 | 3.5 ]; + input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 0.0, 0.0) | mat2(1.0, -0.5, 0.0, 0.0) | mat2(1.0, -20.125, 1.0, 1.0) | mat2(0.0, 36.8125, 0.0, 0.0) | mat2(0.0, 2.0, 1.0, 1.0) | mat2(1.0, 0.0, 0.0, -2.0) | mat2(0.0, -8.25, -32.0, 64.0) | mat2(0.0, 3.5, 0.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case float_uvec3_to_mat2 + version 310 es + values + { + input float in0 = [ 36.8125 | 2.0 | -0.5 | 0.0 | -20.125 | 1.0 | 3.5 | -8.25 ]; + input uvec3 in1 = [ uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(32, 64, 51) | uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) ]; + output mat2 out0 = [ mat2(36.8125, 1.0, 1.0, 1.0) | mat2(2.0, 0.0, 2.0, 4.0) | mat2(-0.5, 0.0, 2.0, 4.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-20.125, 32.0, 64.0, 51.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(3.5, 0.0, 0.0, 0.0) | mat2(-8.25, 1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1); + ${OUTPUT} + } + "" + end + + case int_uvec2_bool_to_mat2 + version 310 es + values + { + input int in0 = [ 1 | -66 | 5 | -192 | 11 | 0 | 8 | 2 | -12 | 255 ]; + input uvec2 in1 = [ uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 0) | uvec2(32, 64) ]; + input bool in2 = [ true | false | true | false | false | false | true | true | true | false ]; + output mat2 out0 = [ mat2(1.0, 0.0, 2.0, 1.0) | mat2(-66.0, 32.0, 64.0, 0.0) | mat2(5.0, 1.0, 1.0, 1.0) | mat2(-192.0, 0.0, 0.0, 0.0) | mat2(11.0, 0.0, 0.0, 0.0) | mat2(0.0, 1.0, 1.0, 0.0) | mat2(8.0, 0.0, 2.0, 1.0) | mat2(2.0, 0.0, 0.0, 1.0) | mat2(-12.0, 0.0, 0.0, 1.0) | mat2(255.0, 32.0, 64.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) ]; + input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875) | mat2x3(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125) | mat2x3(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_bvec3_to_mat2x3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ]; + input bvec3 in1 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_float_float_to_mat2x3 + version 310 es + values + { + input float in0 = [ 1.0 | -8.25 | -20.125 | 36.8125 | -0.5 | 2.0 | 3.5 | 0.0 ]; + input float in1 = [ -0.5 | -20.125 | 36.8125 | -8.25 | 2.0 | 1.0 | 3.5 | 0.0 ]; + input float in2 = [ 3.5 | 1.0 | 36.8125 | -20.125 | -8.25 | -0.5 | 2.0 | 0.0 ]; + input float in3 = [ 1.0 | -8.25 | 0.0 | -20.125 | 2.0 | 3.5 | -0.5 | 36.8125 ]; + input float in4 = [ 1.0 | 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 ]; + input float in5 = [ 2.0 | -20.125 | -8.25 | -0.5 | 3.5 | 1.0 | 36.8125 | 0.0 ]; + output mat2x3 out0 = [ mat2x3(1.0, -0.5, 3.5, 1.0, 1.0, 2.0) | mat2x3(-8.25, -20.125, 1.0, -8.25, 0.0, -20.125) | mat2x3(-20.125, 36.8125, 36.8125, 0.0, 3.5, -8.25) | mat2x3(36.8125, -8.25, -20.125, -20.125, 2.0, -0.5) | mat2x3(-0.5, 2.0, -8.25, 2.0, -8.25, 3.5) | mat2x3(2.0, 1.0, -0.5, 3.5, -20.125, 1.0) | mat2x3(3.5, 3.5, 2.0, -0.5, -0.5, 36.8125) | mat2x3(0.0, 0.0, 0.0, 36.8125, 36.8125, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case int_int_int_int_int_int_to_mat2x3 + version 310 es + values + { + input int in0 = [ 2 | 8 | -192 | 0 | 5 | -12 | 1 | 255 | -66 | 11 ]; + input int in1 = [ 1 | -192 | 8 | 0 | -12 | 2 | 11 | 255 | -66 | 5 ]; + input int in2 = [ -192 | 2 | -66 | 8 | 11 | 255 | 0 | 5 | -12 | 1 ]; + input int in3 = [ 2 | 11 | 255 | 0 | -66 | -12 | 5 | -192 | 8 | 1 ]; + input int in4 = [ 8 | 0 | -12 | -192 | 2 | -66 | 1 | 255 | 5 | 11 ]; + input int in5 = [ 0 | 11 | 5 | 8 | -12 | 255 | -192 | 2 | 1 | -66 ]; + output mat2x3 out0 = [ mat2x3(2.0, 1.0, -192.0, 2.0, 8.0, 0.0) | mat2x3(8.0, -192.0, 2.0, 11.0, 0.0, 11.0) | mat2x3(-192.0, 8.0, -66.0, 255.0, -12.0, 5.0) | mat2x3(0.0, 0.0, 8.0, 0.0, -192.0, 8.0) | mat2x3(5.0, -12.0, 11.0, -66.0, 2.0, -12.0) | mat2x3(-12.0, 2.0, 255.0, -12.0, -66.0, 255.0) | mat2x3(1.0, 11.0, 0.0, 5.0, 1.0, -192.0) | mat2x3(255.0, 255.0, 5.0, -192.0, 255.0, 2.0) | mat2x3(-66.0, -66.0, -12.0, 8.0, 5.0, 1.0) | mat2x3(11.0, 5.0, 1.0, 1.0, 11.0, -66.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_bool_bool_to_mat2x3 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ false | true ]; + input bool in2 = [ false | true ]; + input bool in3 = [ true | false ]; + input bool in4 = [ true | false ]; + input bool in5 = [ true | false ]; + output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 1.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_float_int_to_mat2x3 + version 310 es + values + { + input bool in0 = [ false | true | false | true | false | true | false | true | true | false ]; + input float in1 = [ 0.0 | -8.25 | 2.0 | -20.125 | 3.5 | 0.0 | -0.5 | 36.8125 | 1.0 | 1.0 ]; + input int in2 = [ -66 | -12 | 2 | 8 | 255 | 11 | -192 | 1 | 5 | 0 ]; + input bool in3 = [ true | false | true | false | false | true | true | false | true | false ]; + input float in4 = [ 1.0 | 0.0 | -8.25 | 1.0 | 3.5 | -20.125 | -0.5 | 0.0 | 2.0 | 36.8125 ]; + input int in5 = [ 255 | -192 | 1 | 2 | -12 | -66 | 8 | 0 | 11 | 5 ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, -66.0, 1.0, 1.0, 255.0) | mat2x3(1.0, -8.25, -12.0, 0.0, 0.0, -192.0) | mat2x3(0.0, 2.0, 2.0, 1.0, -8.25, 1.0) | mat2x3(1.0, -20.125, 8.0, 0.0, 1.0, 2.0) | mat2x3(0.0, 3.5, 255.0, 0.0, 3.5, -12.0) | mat2x3(1.0, 0.0, 11.0, 1.0, -20.125, -66.0) | mat2x3(0.0, -0.5, -192.0, 1.0, -0.5, 8.0) | mat2x3(1.0, 36.8125, 1.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 1.0, 5.0, 1.0, 2.0, 11.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 36.8125, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_ivec3_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ]; + output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, 1.0, 1.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -32.0, 64.0, -51.0) | mat2x3(-32.0, 64.0, -51.0, 0.0, -2.0, -4.0) | mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec4_to_mat2x3 + version 310 es + values + { + input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ]; + input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output mat2x3 out0 = [ mat2x3(-32.0, 64.0, 1.0, 0.0, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.0, 1.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, 0.0, 0.0, 0.0, 1.0) | mat2x3(1.0, 1.25, 1.0, 1.0, 1.0, 1.0) | mat2x3(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_ivec2_to_mat2x3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) ]; + input float in1 = [ 1.0 | -8.25 | 36.8125 | 2.0 | 3.5 | -0.5 | -20.125 | 0.0 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x3(1.0, 1.0, 1.0, 36.8125, -32.0, 64.0) | mat2x3(1.0, 0.0, 0.0, 2.0, 0.0, -2.0) | mat2x3(0.0, 0.0, 0.0, 3.5, 1.0, 1.0) | mat2x3(0.0, 1.0, 0.0, -0.5, 0.0, -2.0) | mat2x3(1.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_float_bvec2_to_mat2x3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input float in1 = [ 0.0 | 36.8125 | 3.5 | -0.5 | -8.25 | 2.0 | 1.0 | -20.125 ]; + input bvec2 in2 = [ bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + output mat2x3 out0 = [ mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, -4.875, 36.8125, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.75, 3.5, 1.0, 0.0) | mat2x3(1.0, 1.25, 1.125, -0.5, 0.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -8.25, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 2.0, 1.0, 0.0) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.25, 1.125, -20.125, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec2_to_mat2x4 + version 310 es + values + { + input vec3 in0 = [ vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) ]; + input vec3 in1 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input vec2 in2 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + output mat2x4 out0 = [ mat2x4(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -0.75, -0.0322580645161) | mat2x4(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875, -32.0, 64.0) | mat2x4(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25) | mat2x4(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 0.0, 0.5) | mat2x4(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125, -0.5, -2.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec2_to_mat2x4 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) ]; + output mat2x4 out0 = [ mat2x4(0.0, -2.0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, -2.0) | mat2x4(1.0, 1.0, 1.0, 0.0, -2.0, -4.0, 1.0, 1.0) | mat2x4(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 0.0, 0.0) | mat2x4(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_to_mat2x4 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ]; + input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) ]; + input float in2 = [ -8.25 | -0.5 | 3.5 | 36.8125 | 0.0 | 0.0 | 2.0 | -20.125 | 1.0 | 1.0 ]; + input float in3 = [ 1.0 | 2.0 | -0.5 | 3.5 | 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | -20.125 ]; + input int in4 = [ 255 | 8 | 11 | -12 | -192 | 0 | 2 | 1 | -66 | 5 ]; + input bool in5 = [ true | false | false | true | false | true | true | false | true | false ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.5, 1.0, 1.0, -8.25, 1.0, 255.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, -2.0, -0.5, 2.0, 8.0, 0.0) | mat2x4(-0.5, -2.25, -32.0, 64.0, 3.5, -0.5, 11.0, 0.0) | mat2x4(0.0, 0.5, 0.0, -2.0, 36.8125, 3.5, -12.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, 0.0, 0.0, 36.8125, -192.0, 0.0) | mat2x4(1.0, 1.25, 0.0, 0.0, 0.0, -8.25, 0.0, 1.0) | mat2x4(-0.75, -0.0322580645161, -32.0, 64.0, 2.0, 1.0, 2.0, 1.0) | mat2x4(1.0, 1.25, 0.0, 0.0, -20.125, 0.0, 1.0, 0.0) | mat2x4(-0.5, -2.25, 0.0, 0.0, 1.0, 0.0, -66.0, 1.0) | mat2x4(-0.75, -0.0322580645161, 1.0, 1.0, 1.0, -20.125, 5.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_to_mat2x4 + version 310 es + values + { + input bool in0 = [ false | true | false | true | true | true | false | false | false | true ]; + input float in1 = [ 0.0 | -0.5 | -20.125 | -8.25 | 0.0 | 2.0 | 3.5 | 1.0 | 1.0 | 36.8125 ]; + input int in2 = [ 2 | 1 | 255 | 8 | -66 | 0 | -12 | 5 | -192 | 11 ]; + input vec2 in3 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ]; + input bool in4 = [ true | false | false | true | false | false | true | true | true | false ]; + input bvec2 in5 = [ bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) ]; + output mat2x4 out0 = [ mat2x4(0.0, 0.0, 2.0, -32.0, 64.0, 1.0, 1.0, 0.0) | mat2x4(1.0, -0.5, 1.0, -0.5, -2.25, 0.0, 1.0, 1.0) | mat2x4(0.0, -20.125, 255.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(1.0, -8.25, 8.0, -0.75, -0.0322580645161, 1.0, 1.0, 1.0) | mat2x4(1.0, 0.0, -66.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat2x4(1.0, 2.0, 0.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(0.0, 3.5, -12.0, -32.0, 64.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, 5.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, -192.0, 0.0, 0.5, 1.0, 0.0, 0.0) | mat2x4(1.0, 36.8125, 11.0, -0.75, -0.0322580645161, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_to_mat2x4 + version 310 es + values + { + input bool in0 = [ true | true | true | false | false | false | false | false | true | true ]; + input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) ]; + input int in2 = [ 8 | 1 | 5 | -66 | -192 | 11 | 255 | 0 | -12 | 2 ]; + input vec4 in3 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) ]; + output mat2x4 out0 = [ mat2x4(1.0, 1.0, 1.0, 8.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 0.0, 0.0, 1.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 1.0, 0.0, 5.0, -32.0, 64.0, -51.0, 24.0) | mat2x4(0.0, 0.0, 0.0, -66.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(0.0, 1.0, 0.0, 11.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 0.0, 1.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(0.0, 0.0, 0.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(1.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_to_mat2x4 + version 310 es + values + { + input float in0 = [ 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | 36.8125 | 1.0 | -0.5 ]; + input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ]; + input ivec2 in2 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ]; + input bool in3 = [ true | true | false | true | false | false | false | true ]; + output mat2x4 out0 = [ mat2x4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat2x4(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0) | mat2x4(-8.25, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x4(-20.125, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat2x4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec3_vec3_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ]; + input vec3 in1 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ]; + output mat3x2 out0 = [ mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125) | mat3x2(-0.5, -2.25, -4.875, -0.75, -0.0322580645161, 0.0526315789474) | mat3x2(0.0, 0.5, 0.75, -32.0, 64.0, -51.0) | mat3x2(-32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.5, 0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_bvec3_to_mat3x2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + input bvec3 in1 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 0.0, 1.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case float_float_float_float_float_float_to_mat3x2 + version 310 es + values + { + input float in0 = [ -8.25 | 36.8125 | -20.125 | -0.5 | 3.5 | 1.0 | 2.0 | 0.0 ]; + input float in1 = [ 2.0 | 3.5 | -20.125 | 36.8125 | 1.0 | 0.0 | -8.25 | -0.5 ]; + input float in2 = [ -0.5 | 2.0 | 1.0 | 0.0 | -8.25 | 36.8125 | -20.125 | 3.5 ]; + input float in3 = [ 36.8125 | 0.0 | 1.0 | -0.5 | 2.0 | 3.5 | -20.125 | -8.25 ]; + input float in4 = [ 36.8125 | 2.0 | 0.0 | -0.5 | 3.5 | -20.125 | -8.25 | 1.0 ]; + input float in5 = [ 0.0 | 36.8125 | -20.125 | -0.5 | 3.5 | 2.0 | 1.0 | -8.25 ]; + output mat3x2 out0 = [ mat3x2(-8.25, 2.0, -0.5, 36.8125, 36.8125, 0.0) | mat3x2(36.8125, 3.5, 2.0, 0.0, 2.0, 36.8125) | mat3x2(-20.125, -20.125, 1.0, 1.0, 0.0, -20.125) | mat3x2(-0.5, 36.8125, 0.0, -0.5, -0.5, -0.5) | mat3x2(3.5, 1.0, -8.25, 2.0, 3.5, 3.5) | mat3x2(1.0, 0.0, 36.8125, 3.5, -20.125, 2.0) | mat3x2(2.0, -8.25, -20.125, -20.125, -8.25, 1.0) | mat3x2(0.0, -0.5, 3.5, -8.25, 1.0, -8.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case int_int_int_int_int_int_to_mat3x2 + version 310 es + values + { + input int in0 = [ 8 | -192 | 2 | 11 | 255 | -66 | 5 | -12 | 1 | 0 ]; + input int in1 = [ 1 | 2 | -12 | 5 | 0 | 255 | 8 | 11 | -192 | -66 ]; + input int in2 = [ -12 | 11 | 2 | 1 | 8 | -66 | -192 | 5 | 255 | 0 ]; + input int in3 = [ -192 | 0 | -12 | 11 | 1 | -66 | 8 | 255 | 2 | 5 ]; + input int in4 = [ -12 | 5 | 0 | -66 | 255 | 8 | -192 | 11 | 2 | 1 ]; + input int in5 = [ -66 | -12 | 8 | 2 | 255 | 0 | -192 | 11 | 1 | 5 ]; + output mat3x2 out0 = [ mat3x2(8.0, 1.0, -12.0, -192.0, -12.0, -66.0) | mat3x2(-192.0, 2.0, 11.0, 0.0, 5.0, -12.0) | mat3x2(2.0, -12.0, 2.0, -12.0, 0.0, 8.0) | mat3x2(11.0, 5.0, 1.0, 11.0, -66.0, 2.0) | mat3x2(255.0, 0.0, 8.0, 1.0, 255.0, 255.0) | mat3x2(-66.0, 255.0, -66.0, -66.0, 8.0, 0.0) | mat3x2(5.0, 8.0, -192.0, 8.0, -192.0, -192.0) | mat3x2(-12.0, 11.0, 5.0, 255.0, 11.0, 11.0) | mat3x2(1.0, -192.0, 255.0, 2.0, 2.0, 1.0) | mat3x2(0.0, -66.0, 0.0, 5.0, 1.0, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bool_bool_bool_bool_bool_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false ]; + input bool in1 = [ false | true ]; + input bool in2 = [ false | true ]; + input bool in3 = [ false | true ]; + input bool in4 = [ false | true ]; + input bool in5 = [ false | true ]; + output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 1.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_bool_float_int_to_mat3x2 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false | true | false | true | false | false ]; + input float in1 = [ -20.125 | 0.0 | 3.5 | 0.0 | 1.0 | -8.25 | 1.0 | 2.0 | 36.8125 | -0.5 ]; + input int in2 = [ 255 | -66 | 8 | -192 | 5 | 11 | 1 | 2 | 0 | -12 ]; + input bool in3 = [ true | false | false | true | false | true | true | false | false | true ]; + input float in4 = [ 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | -0.5 | 2.0 | 3.5 | 1.0 | 36.8125 ]; + input int in5 = [ -192 | 8 | 2 | 255 | -66 | -12 | 11 | 0 | 5 | 1 ]; + output mat3x2 out0 = [ mat3x2(1.0, -20.125, 255.0, 1.0, 0.0, -192.0) | mat3x2(0.0, 0.0, -66.0, 0.0, -20.125, 8.0) | mat3x2(1.0, 3.5, 8.0, 0.0, 1.0, 2.0) | mat3x2(1.0, 0.0, -192.0, 1.0, -8.25, 255.0) | mat3x2(0.0, 1.0, 5.0, 0.0, 0.0, -66.0) | mat3x2(1.0, -8.25, 11.0, 1.0, -0.5, -12.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 2.0, 11.0) | mat3x2(1.0, 2.0, 2.0, 0.0, 3.5, 0.0) | mat3x2(0.0, 36.8125, 0.0, 0.0, 1.0, 5.0) | mat3x2(0.0, -0.5, -12.0, 1.0, 36.8125, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_ivec3_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) ]; + input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.5, 0.75, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 0.0, -2.0, -4.0) | mat3x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3x2(-0.5, -2.25, -4.875, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case vec2_bvec4_to_mat3x2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ]; + input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.5, 1.0, 1.0, 1.0, 1.0) | mat3x2(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 1.0) | mat3x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(-0.5, -2.25, 1.0, 0.0, 0.0, 1.0) | mat3x2(1.0, 1.25, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1); + ${OUTPUT} + } + "" + end + + case bvec3_float_ivec2_to_mat3x2 + version 310 es + values + { + input bvec3 in0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(true, false, false) ]; + input float in1 = [ -8.25 | 1.0 | 2.0 | -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) ]; + output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, -8.25, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) | mat3x2(0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, -0.5, 0.0, -2.0) | mat3x2(0.0, 1.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 36.8125, 0.0, -2.0) | mat3x2(1.0, 0.0, 0.0, 3.5, -32.0, 64.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_float_bvec2_to_mat3x2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input float in1 = [ -8.25 | 36.8125 | -0.5 | 3.5 | 2.0 | -20.125 | 0.0 | 1.0 ]; + input bvec2 in2 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) ]; + output mat3x2 out0 = [ mat3x2(1.0, 1.25, 1.125, -8.25, 1.0, 0.0) | mat3x2(1.0, 1.25, 1.125, 36.8125, 0.0, 0.0) | mat3x2(-0.5, -2.25, -4.875, -0.5, 1.0, 1.0) | mat3x2(-0.5, -2.25, -4.875, 3.5, 0.0, 0.0) | mat3x2(-32.0, 64.0, -51.0, 2.0, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, -20.125, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, 0.0, 1.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec3_to_mat3 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input vec3 in1 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ]; + input vec3 in2 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) ]; + output mat3 out0 = [ mat3(1.0, 1.25, 1.125, -0.75, -0.0322580645161, 0.0526315789474, -0.75, -0.0322580645161, 0.0526315789474) | mat3(-0.5, -2.25, -4.875, 1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, 1.0, 1.25, 1.125) | mat3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.5, 0.75, 0.0, 0.5, 0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec3_to_mat3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) ]; + input ivec3 in2 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) ]; + output mat3 out0 = [ mat3(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3(0.0, -2.0, -4.0, 0.0, -2.0, -4.0, 0.0, 0.0, 0.0) | mat3(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0) | mat3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_bool_to_mat3 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(-32, 64) ]; + input float in2 = [ -0.5 | 3.5 | 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ]; + input float in3 = [ 3.5 | 0.0 | -20.125 | 36.8125 | 2.0 | -8.25 | -0.5 | 1.0 | 0.0 | 1.0 ]; + input int in4 = [ 0 | 11 | 5 | -192 | 8 | -66 | 1 | 2 | 255 | -12 ]; + input bool in5 = [ true | true | true | false | true | false | false | false | true | false ]; + input bool in6 = [ false | false | true | false | false | false | true | true | true | true ]; + output mat3 out0 = [ mat3(1.0, 1.25, 0.0, 0.0, -0.5, 3.5, 0.0, 1.0, 0.0) | mat3(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, 11.0, 1.0, 0.0) | mat3(0.0, 0.5, 1.0, 1.0, 0.0, -20.125, 5.0, 1.0, 1.0) | mat3(-0.75, -0.0322580645161, 0.0, -2.0, -20.125, 36.8125, -192.0, 0.0, 0.0) | mat3(-32.0, 64.0, 0.0, 0.0, 1.0, 2.0, 8.0, 1.0, 0.0) | mat3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, -8.25, -66.0, 0.0, 0.0) | mat3(-0.5, -2.25, 1.0, 1.0, 0.0, -0.5, 1.0, 0.0, 1.0) | mat3(1.0, 1.25, -32.0, 64.0, 1.0, 1.0, 2.0, 0.0, 1.0) | mat3(0.0, 0.5, 0.0, 0.0, 2.0, 0.0, 255.0, 1.0, 1.0) | mat3(-32.0, 64.0, -32.0, 64.0, 36.8125, 1.0, -12.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_float_to_mat3 + version 310 es + values + { + input bool in0 = [ false | true | true | true | true | true | false | false | false | false ]; + input float in1 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 3.5 | -20.125 | 1.0 | 0.0 | 2.0 ]; + input int in2 = [ 8 | -66 | 5 | 1 | 0 | 2 | -12 | -192 | 11 | 255 ]; + input vec2 in3 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ]; + input bool in4 = [ true | false | true | false | false | true | true | false | true | false ]; + input bvec2 in5 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ]; + input float in6 = [ -0.5 | 1.0 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.0 | 3.5 | -20.125 | -8.25 ]; + output mat3 out0 = [ mat3(0.0, -8.25, 8.0, 0.0, 0.5, 1.0, 0.0, 1.0, -0.5) | mat3(1.0, 1.0, -66.0, -32.0, 64.0, 0.0, 0.0, 0.0, 1.0) | mat3(1.0, -0.5, 5.0, 1.0, 1.25, 1.0, 1.0, 0.0, 1.0) | mat3(1.0, 36.8125, 1.0, -32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, -0.5, -2.25, 0.0, 1.0, 1.0, 36.8125) | mat3(1.0, 3.5, 2.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0, 2.0) | mat3(0.0, -20.125, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0, 0.0) | mat3(0.0, 1.0, -192.0, 0.0, 0.5, 0.0, 0.0, 0.0, 3.5) | mat3(0.0, 0.0, 11.0, 1.0, 1.25, 1.0, 0.0, 1.0, -20.125) | mat3(0.0, 2.0, 255.0, -0.75, -0.0322580645161, 0.0, 1.0, 1.0, -8.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_bool_to_mat3 + version 310 es + values + { + input bool in0 = [ true | false | true | true | false | false | true | false | false | true ]; + input bvec2 in1 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ]; + input int in2 = [ -192 | 2 | 0 | 5 | 1 | -66 | 11 | -12 | 8 | 255 ]; + input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + input bool in4 = [ false | true | false | true | false | false | false | true | true | true ]; + output mat3 out0 = [ mat3(1.0, 0.0, 0.0, -192.0, -32.0, 64.0, -51.0, 24.0, 0.0) | mat3(0.0, 0.0, 1.0, 2.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 1.0, 1.0, 5.0, -32.0, 64.0, -51.0, 24.0, 1.0) | mat3(0.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 0.0, 1.0, 11.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 1.0, 0.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(0.0, 1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(1.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_bool_to_mat3 + version 310 es + values + { + input float in0 = [ -8.25 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -20.125 | 0.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) ]; + input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) ]; + input bool in3 = [ false | true | false | true | true | false | true | false ]; + input bool in4 = [ true | false | false | false | true | true | false | true ]; + output mat3 out0 = [ mat3(-8.25, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, 1.0, 0.0) | mat3(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3(-0.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0, 0.0) | mat3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3(in0, in1, in2, in3, in4); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_to_mat3x4 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + output mat3x4 out0 = [ mat3x4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0) | mat3x4(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat3x4(-32.0, 64.0, -51.0, 24.0, 0.0, 0.5, 0.75, 0.825, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat3x4(-0.5, -2.25, -4.875, 9.0, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat3x4(0.0, 0.5, 0.75, 0.825, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_to_mat3x4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ]; + input ivec4 in1 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + input ivec4 in2 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ]; + output mat3x4 out0 = [ mat3x4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat3x4 + version 310 es + values + { + input vec2 in0 = [ vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-0.5, -2.25) ]; + input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in2 = [ 1.0 | -8.25 | 2.0 | 3.5 | -20.125 | 36.8125 | 0.0 | 1.0 | -0.5 | 0.0 ]; + input float in3 = [ -0.5 | 36.8125 | 1.0 | 1.0 | 0.0 | 3.5 | 2.0 | 0.0 | -8.25 | -20.125 ]; + input float in4 = [ -8.25 | 1.0 | 1.0 | 0.0 | 2.0 | 36.8125 | 0.0 | -20.125 | 3.5 | -0.5 ]; + input int in5 = [ 11 | 2 | 8 | 5 | 0 | -192 | 1 | -12 | 255 | -66 ]; + input int in6 = [ -12 | 5 | 8 | 1 | 0 | 255 | 11 | -192 | -66 | 2 ]; + input bool in7 = [ true | true | true | false | false | false | true | false | true | false ]; + input bool in8 = [ true | true | true | false | true | false | true | false | false | false ]; + input bool in9 = [ true | false | true | false | true | true | false | false | false | true ]; + output mat3x4 out0 = [ mat3x4(1.0, 1.25, 0.0, 0.0, 1.0, -0.5, -8.25, 11.0, -12.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, 1.0, 2.0, 5.0, 1.0, 1.0, 0.0) | mat3x4(0.0, 0.5, -32.0, 64.0, 2.0, 1.0, 1.0, 8.0, 8.0, 1.0, 1.0, 1.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, 3.5, 1.0, 0.0, 5.0, 1.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, -20.125, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3x4(-0.75, -0.0322580645161, -32.0, 64.0, 36.8125, 3.5, 36.8125, -192.0, 255.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.25, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 11.0, 1.0, 1.0, 0.0) | mat3x4(-0.75, -0.0322580645161, 0.0, -2.0, 1.0, 0.0, -20.125, -12.0, -192.0, 0.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, 0.0, -0.5, -8.25, 3.5, 255.0, -66.0, 1.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, -2.0, 0.0, -20.125, -0.5, -66.0, 2.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec3_bool_bvec3_float_bool_to_mat3x4 + version 310 es + values + { + input bool in0 = [ false | false | true | true | true | true | false | false | false | true ]; + input float in1 = [ 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -20.125 ]; + input int in2 = [ -66 | -192 | 255 | 8 | 0 | -12 | 5 | 2 | 11 | 1 ]; + input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) ]; + input bool in4 = [ false | true | true | true | false | false | true | true | false | false ]; + input bvec3 in5 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in6 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 2.0 | -20.125 | 1.0 | 0.0 | 3.5 ]; + input bool in7 = [ true | false | false | true | true | false | true | false | false | true ]; + output mat3x4 out0 = [ mat3x4(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 0.0526315789474, 0.0, 1.0, 0.0, 0.0, -8.25, 1.0) | mat3x4(0.0, -8.25, -192.0, -32.0, 64.0, -51.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(1.0, 1.0, 255.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, -0.5, 0.0) | mat3x4(1.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 36.8125, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.0, -12.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 0.0) | mat3x4(0.0, 2.0, 5.0, 1.0, 1.25, 1.125, 1.0, 1.0, 1.0, 1.0, -20.125, 1.0) | mat3x4(0.0, 3.5, 2.0, 1.0, 1.25, 1.125, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, -0.5, 11.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, -20.125, 1.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 3.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7); + ${OUTPUT} + } + "" + end + + case bool_bvec4_int_vec4_bool_float_to_mat3x4 + version 310 es + values + { + input bool in0 = [ false | true | true | true | false | false | false | true | false | true ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ]; + input int in2 = [ 255 | 2 | -192 | -12 | 11 | 1 | 0 | -66 | 8 | 5 ]; + input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) ]; + input bool in4 = [ true | true | true | false | false | false | true | true | false | false ]; + input float in5 = [ 36.8125 | 2.0 | -8.25 | 0.0 | 1.0 | 1.0 | -0.5 | 3.5 | 0.0 | -20.125 ]; + output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 255.0, -0.5, -2.25, -4.875, 9.0, 1.0, 36.8125) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 1.25, 1.125, 1.75, 1.0, 2.0) | mat3x4(1.0, 0.0, 1.0, 0.0, 0.0, -192.0, 1.0, 1.25, 1.125, 1.75, 1.0, -8.25) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, 0.0, 0.5, 0.75, 0.825, 0.0, 0.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 11.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 1.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, -0.5) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 1.0, 3.5) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 0.0) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 5.0, -0.5, -2.25, -4.875, 9.0, 0.0, -20.125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec4_bool_bool_int_to_mat3x4 + version 310 es + values + { + input float in0 = [ 36.8125 | 1.0 | 0.0 | 3.5 | -8.25 | -20.125 | 2.0 | 0.0 | 1.0 | -0.5 ]; + input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ]; + input ivec4 in2 = [ ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ]; + input bool in3 = [ true | false | true | true | false | true | true | false | false | false ]; + input bool in4 = [ true | false | false | true | true | false | false | false | true | true ]; + input int in5 = [ 1 | 5 | -12 | 8 | -192 | 2 | -66 | 255 | 11 | 0 ]; + output mat3x4 out0 = [ mat3x4(36.8125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 5.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0, -12.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, 8.0) | mat3x4(-8.25, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -192.0) | mat3x4(-20.125, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0) | mat3x4(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -66.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 255.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 11.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat3x4(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec3_vec3_vec2_to_mat4x2 + version 310 es + values + { + input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ]; + input vec2 in2 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) ]; + output mat4x2 out0 = [ mat4x2(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 1.0, 1.25) | mat4x2(-32.0, 64.0, -51.0, -0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25) | mat4x2(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, -0.75, -0.0322580645161) | mat4x2(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -32.0, 64.0) | mat4x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125, 0.0, 0.5) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec3_ivec3_ivec2_to_mat4x2 + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec3 in1 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ]; + input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) ]; + output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, -2.0, -4.0, -32.0, 64.0) | mat4x2(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, -2.0, -4.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, 0.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_int_bool_to_mat4x2 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in2 = [ 3.5 | -8.25 | 2.0 | 36.8125 | -0.5 | 1.0 | 1.0 | 0.0 | -20.125 | 0.0 ]; + input float in3 = [ 0.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | 2.0 | 0.0 | -20.125 | 1.0 ]; + input int in4 = [ -12 | -66 | 11 | 5 | 8 | 255 | -192 | 2 | 1 | 0 ]; + input bool in5 = [ true | true | false | true | false | true | false | true | false | false ]; + output mat4x2 out0 = [ mat4x2(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, -12.0, 1.0) | mat4x2(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, -66.0, 1.0) | mat4x2(1.0, 1.25, -32.0, 64.0, 2.0, 3.5, 11.0, 0.0) | mat4x2(0.0, 0.5, 1.0, 1.0, 36.8125, 1.0, 5.0, 1.0) | mat4x2(-32.0, 64.0, 1.0, 1.0, -0.5, -0.5, 8.0, 0.0) | mat4x2(-0.75, -0.0322580645161, 0.0, 0.0, 1.0, -8.25, 255.0, 1.0) | mat4x2(-0.75, -0.0322580645161, -32.0, 64.0, 1.0, 2.0, -192.0, 0.0) | mat4x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0) | mat4x2(-0.5, -2.25, 0.0, 0.0, -20.125, -20.125, 1.0, 0.0) | mat4x2(1.0, 1.25, 0.0, -2.0, 0.0, 1.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec2_bool_bvec2_to_mat4x2 + version 310 es + values + { + input bool in0 = [ false | false | true | true | true | false | false | true | false | true ]; + input float in1 = [ 36.8125 | -8.25 | 3.5 | 1.0 | 2.0 | -0.5 | 0.0 | 1.0 | -20.125 | 0.0 ]; + input int in2 = [ -66 | 1 | -192 | 2 | 11 | 0 | 255 | 8 | 5 | -12 ]; + input vec2 in3 = [ vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ]; + input bool in4 = [ true | false | false | false | false | true | true | true | false | true ]; + input bvec2 in5 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) ]; + output mat4x2 out0 = [ mat4x2(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0) | mat4x2(0.0, -8.25, 1.0, -0.75, -0.0322580645161, 0.0, 0.0, 1.0) | mat4x2(1.0, 3.5, -192.0, -32.0, 64.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 2.0, 0.0, 0.5, 0.0, 1.0, 1.0) | mat4x2(1.0, 2.0, 11.0, 1.0, 1.25, 0.0, 1.0, 0.0) | mat4x2(0.0, -0.5, 0.0, 1.0, 1.25, 1.0, 0.0, 1.0) | mat4x2(0.0, 0.0, 255.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 8.0, -32.0, 64.0, 1.0, 1.0, 1.0) | mat4x2(0.0, -20.125, 5.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case bool_bvec2_int_vec4_to_mat4x2 + version 310 es + values + { + input bool in0 = [ false | false | true | false | true | false | true | true | true | false ]; + input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ]; + input int in2 = [ -12 | 8 | 2 | 255 | 5 | -192 | 0 | 11 | 1 | -66 ]; + input vec4 in3 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + output mat4x2 out0 = [ mat4x2(0.0, 1.0, 0.0, -12.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(0.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 1.0, 0.0, 5.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(0.0, 0.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825) | mat4x2(1.0, 0.0, 1.0, 11.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 1.0, 1.0, -66.0, 0.0, 0.5, 0.75, 0.825) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec2_bool_to_mat4x2 + version 310 es + values + { + input float in0 = [ 1.0 | -8.25 | -20.125 | 3.5 | -0.5 | 2.0 | 36.8125 | 0.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ]; + input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ]; + input bool in3 = [ true | true | false | true | true | false | false | false ]; + output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 0.0, 1.0, -32.0, 64.0, 1.0) | mat4x2(-8.25, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat4x2(-20.125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4x2(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x2(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 0.0) | mat4x2(36.8125, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x2(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_to_mat4x3 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) ]; + input vec4 in1 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output mat4x3 out0 = [ mat4x3(-0.5, -2.25, -4.875, 9.0, 0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0) | mat4x3(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4x3(0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat4x3(-0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4x3(-32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_to_mat4x3 + version 310 es + values + { + input ivec4 in0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + input ivec4 in1 = [ ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) ]; + input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ]; + output mat4x3 out0 = [ mat4x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) | mat4x3(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0) | mat4x3(0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2); + ${OUTPUT} + } + "" + end + + case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat4x3 + version 310 es + values + { + input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ]; + input float in2 = [ -20.125 | 3.5 | 2.0 | -0.5 | -8.25 | 0.0 | 1.0 | 0.0 | 1.0 | 36.8125 ]; + input float in3 = [ 0.0 | -8.25 | 36.8125 | 1.0 | 0.0 | -20.125 | 3.5 | 2.0 | -0.5 | 1.0 ]; + input float in4 = [ 0.0 | 1.0 | 3.5 | -20.125 | 0.0 | 36.8125 | 1.0 | -8.25 | 2.0 | -0.5 ]; + input int in5 = [ 2 | 8 | 1 | -192 | 0 | -12 | 11 | 255 | 5 | -66 ]; + input int in6 = [ 2 | -12 | 5 | 8 | 11 | 255 | 0 | -66 | 1 | -192 ]; + input bool in7 = [ true | true | false | true | false | false | false | true | false | true ]; + input bool in8 = [ true | false | false | true | true | false | true | true | false | false ]; + input bool in9 = [ false | true | false | false | false | false | true | true | true | true ]; + output mat4x3 out0 = [ mat4x3(-0.5, -2.25, 0.0, -2.0, -20.125, 0.0, 0.0, 2.0, 2.0, 1.0, 1.0, 0.0) | mat4x3(0.0, 0.5, -32.0, 64.0, 3.5, -8.25, 1.0, 8.0, -12.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 0.5, 1.0, 1.0, 2.0, 36.8125, 3.5, 1.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 1.25, -32.0, 64.0, -0.5, 1.0, -20.125, -192.0, 8.0, 1.0, 1.0, 0.0) | mat4x3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 11.0, 0.0, 1.0, 0.0) | mat4x3(-0.5, -2.25, 0.0, 0.0, 0.0, -20.125, 36.8125, -12.0, 255.0, 0.0, 0.0, 0.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, 3.5, 1.0, 11.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 1.25, 0.0, -2.0, 0.0, 2.0, -8.25, 255.0, -66.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, -0.5, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(-0.75, -0.0322580645161, 1.0, 1.0, 36.8125, 1.0, -0.5, -66.0, -192.0, 1.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9); + ${OUTPUT} + } + "" + end + + case bool_float_int_vec3_bool_bvec3_float_bool_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | true | false | false | true | true | true | false | false | false ]; + input float in1 = [ -8.25 | 2.0 | 1.0 | -0.5 | 0.0 | 0.0 | 36.8125 | -20.125 | 3.5 | 1.0 ]; + input int in2 = [ 255 | 2 | 11 | 1 | 8 | -192 | 0 | -66 | -12 | 5 ]; + input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + input bool in4 = [ true | true | false | false | true | false | false | false | true | true ]; + input bvec3 in5 = [ bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(true, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) ]; + input float in6 = [ 1.0 | 0.0 | -0.5 | 36.8125 | 1.0 | -20.125 | 2.0 | 0.0 | -8.25 | 3.5 ]; + input bool in7 = [ true | true | false | false | false | false | true | true | false | true ]; + output mat4x3 out0 = [ mat4x3(1.0, -8.25, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 2.0, 2.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(0.0, 1.0, 11.0, 0.0, 0.5, 0.75, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat4x3(0.0, -0.5, 1.0, -32.0, 64.0, -51.0, 0.0, 0.0, 1.0, 0.0, 36.8125, 0.0) | mat4x3(1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat4x3(1.0, 0.0, -192.0, 1.0, 1.25, 1.125, 0.0, 1.0, 0.0, 0.0, -20.125, 0.0) | mat4x3(1.0, 36.8125, 0.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 1.0) | mat4x3(0.0, -20.125, -66.0, 1.0, 1.25, 1.125, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 3.5, -12.0, -0.5, -2.25, -4.875, 1.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat4x3(0.0, 1.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 3.5, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7); + ${OUTPUT} + } + "" + end + + case bool_bvec4_int_vec4_bool_float_to_mat4x3 + version 310 es + values + { + input bool in0 = [ true | true | true | false | true | false | false | true | false | false ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, false, false, true) ]; + input int in2 = [ 5 | 11 | 0 | -192 | -66 | 255 | 1 | -12 | 8 | 2 ]; + input vec4 in3 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input bool in4 = [ false | true | true | false | true | false | true | true | false | false ]; + input float in5 = [ -20.125 | 0.0 | 1.0 | -0.5 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ]; + output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, -20.125) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 11.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0, 0.0, -0.5) | mat4x3(1.0, 1.0, 1.0, 1.0, 1.0, -66.0, 1.0, 1.25, 1.125, 1.75, 1.0, 3.5) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 255.0, -32.0, 64.0, -51.0, 24.0, 0.0, -8.25) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 1.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.5, 0.75, 0.825, 0.0, 2.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.5, 0.75, 0.825, 0.0, 36.8125) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case float_bvec4_ivec4_bool_bool_int_to_mat4x3 + version 310 es + values + { + input float in0 = [ 36.8125 | -0.5 | 3.5 | 2.0 | 1.0 | -20.125 | 0.0 | 0.0 | -8.25 | 1.0 ]; + input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ]; + input ivec4 in2 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, -2, -4, 9) ]; + input bool in3 = [ false | true | false | true | false | false | false | true | true | true ]; + input bool in4 = [ false | true | false | true | false | true | false | false | true | true ]; + input int in5 = [ 2 | 1 | 8 | 11 | 255 | 5 | 0 | -66 | -192 | -12 ]; + output mat4x3 out0 = [ mat4x3(36.8125, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 2.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x3(3.5, 1.0, 0.0, 0.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 8.0) | mat4x3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 11.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 255.0) | mat4x3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 5.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, -66.0) | mat4x3(-8.25, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -192.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -12.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4x3(in0, in1, in2, in3, in4, in5); + ${OUTPUT} + } + "" + end + + case vec4_vec4_vec4_vec4_to_mat4 + version 310 es + values + { + input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) ]; + output mat4 out0 = [ mat4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0) | mat4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4(-0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4(1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4(0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, -0.5, -2.25, -4.875, 9.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case ivec4_ivec4_ivec4_ivec4_to_mat4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ]; + input ivec4 in1 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ]; + input ivec4 in3 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ]; + output mat4 out0 = [ mat4(-32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0) | mat4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case bvec4_bvec4_bvec4_bvec4_to_mat4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, false, false, true) ]; + input bvec4 in1 = [ bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + input bvec4 in2 = [ bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) ]; + input bvec4 in3 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ]; + output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3); + ${OUTPUT} + } + "" + end + + case float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4 + version 310 es + values + { + input float in0 = [ 2.0 | 1.0 | 3.5 | 0.0 | -20.125 | 36.8125 | -0.5 | -8.25 ]; + input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, -2, -4) ]; + input bvec3 in2 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) ]; + input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) ]; + input ivec2 in4 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) ]; + input float in5 = [ 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 | -20.125 | 1.0 | -0.5 ]; + input vec2 in6 = [ vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(1.0, 1.25) ]; + output mat4 out0 = [ mat4(2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, 2.0, 0.0, 0.5) | mat4(1.0, -32.0, 64.0, -51.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 3.5, -0.5, -2.25) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, 36.8125, -32.0, 64.0) | mat4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, -8.25, 0.0, 0.5) | mat4(-20.125, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 0.0, -0.75, -0.0322580645161) | mat4(36.8125, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -20.125, -0.5, -2.25) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 1.0, 1.0, 1.25) | mat4(-8.25, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, -0.5, 1.0, 1.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = mat4(in0, in1, in2, in3, in4, in5, in6); + ${OUTPUT} + } + "" + end + + +end # matrix_combine diff --git a/vulkan/glsl/es310/functions.test b/vulkan/glsl/es310/functions.test new file mode 100644 index 0000000..db087d4 --- /dev/null +++ b/vulkan/glsl/es310/functions.test @@ -0,0 +1,3151 @@ +# Tests todo: +# - inout with varyings, attributes, uniforms (and arrays of 'em) +# - inout with arrays, array elements +# - inout with array elements +# - inout by-value semantics (arrays & elements & structs) + +# Done: +# - control flow: return, return in loop, etc. + +group datatypes "Function Parameter Data Types" + + case float_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec2 + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 1.0) | vec2(2.0, 2.5) ]; + output float out0 = [ -1.0 | -4.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec2 a) + { + return -(a.x + a.y); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec3 + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec3 a) + { + return -(a.x + a.y + a.z); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_vec4 + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (vec4 a) + { + return -(a.x + a.y + a.z + a.w); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(0.0, 1.0, -2.0, 0.5) | mat2(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat2 a) + { + return -(a[0][0] + a[0][1] + a[1][0] + a[1][1]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0) | mat3(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0) ]; + output float out0 = [ -4.5 | -5.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat3 a) + { + return -(a[0][0] + a[0][1] + a[0][2] + a[1][0] + a[1][1] + a[1][2] + a[2][0] + a[2][1] + a[2][2]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(0.0, 1.0, -2.0, 0.5, 1.0, -1.0, 2.0, 4.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -2.0, -2.0) | mat4(2.0, 2.5, 4.0, -7.0, 2.5, 3.0, 0.5, -3.5, 1.0, 0.0, 2.0, -1.0, 1.0, 0.0, -1.0, 3.0) ]; + output float out0 = [ -5.5 | -9.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (mat4 a) + { + return -(a[0][0] + a[0][1] + a[0][2] + a[0][3] + a[1][0] + a[1][1] + a[1][2] + a[1][3] + a[2][0] + a[2][1] + a[2][2] + a[2][3] + a[3][0] + a[3][1] + a[3][2] + a[3][3]); + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_int + version 310 es + values + { + input int in0 = [ -1 | 0 | 1 | 4 ]; + output int out0 = [ 1 | 0 | -1 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int a) + { + return -a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec2 + version 310 es + values + { + input ivec2 in0 = [ ivec2(-1, 0) | ivec2(1, 4) ]; + output int out0 = [ 1 | -5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec2 a) + { + return -(a.x + a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec3 + version 310 es + values + { + input ivec3 in0 = [ ivec3(-1, 0, 2) | ivec3(1, 4, -8) ]; + output int out0 = [ -1 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec3 a) + { + return -(a.x + a.y + a.z); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case int_ivec4 + version 310 es + values + { + input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; + output int out0 = [ -3 | 1 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (ivec4 a) + { + return -(a.x + a.y + a.z + a.w); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uint + version 310 es + values + { + input uint in0 = [ 1 | 0 | 2 | 4 ]; + output uint out0 = [ 1 | 0 | 4 | 16 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uint a) + { + return a*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec2 + version 310 es + values + { + input uvec2 in0 = [ uvec2(1, 0) | uvec2(2, 4) ]; + output uint out0 = [ 1 | 6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec2 a) + { + return (a.x + a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec3 + version 310 es + values + { + input uvec3 in0 = [ uvec3(1, 0, 2) | uvec3(1, 4, 8) ]; + output uint out0 = [ 3 | 13 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec3 a) + { + return (a.x + a.y + a.z); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case uint_uvec4 + version 310 es + values + { + input uvec4 in0 = [ uvec4(1, 0, 2, 2) | uvec4(1, 4, 8, 2) ]; + output uint out0 = [ 5 | 15 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + uint func (uvec4 a) + { + return (a.x + a.y + a.z + a.w); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bool a) + { + return !a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec2 + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec2 a) + { + return !(a.x == a.y); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec3 + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, true, false) | bvec3(true, false, false) ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec3 a) + { + return (a.x == a.y) == a.z; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case bool_bvec4 + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, true, false) | bvec4(false, false, true, true) | bvec4(true, false, false, true) ]; + output bool out0 = [ false | true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bvec4 a) + { + return ((a.x == a.y) == (a.z == a.w)); + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case mat2 + version 310 es + values + { + input mat2 in0 = [ mat2(-2.0, 0.5, -1.0, 1.0) | mat2(1.0, -3.5, -3.5, 2.5) | mat2(-2.0, -2.0, 3.5, 0.0) ]; + output mat2 out0 = [ mat2(4.0, -1.0, 2.0, -2.0) | mat2(-2.0, 7.0, 7.0, -5.0) | mat2(4.0, 4.0, -7.0, -0.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2 func (mat2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat2x3 + version 310 es + values + { + input mat2x3 in0 = [ mat2x3(2.5, 0.0, 1.0, -2.5, 1.0, 3.0) | mat2x3(0.0, 2.0, 1.5, -3.5, 2.0, 0.5) | mat2x3(-1.5, -3.5, 2.5, 0.0, 1.5, 3.0) ]; + output mat2x3 out0 = [ mat2x3(-5.0, -0.0, -2.0, 5.0, -2.0, -6.0) | mat2x3(-0.0, -4.0, -3.0, 7.0, -4.0, -1.0) | mat2x3(3.0, 7.0, -5.0, -0.0, -3.0, -6.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2x3 func (mat2x3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat2x4 + version 310 es + values + { + input mat2x4 in0 = [ mat2x4(1.5, 3.0, -1.0, 2.5, -0.5, 3.5, 3.0, -3.0) | mat2x4(-2.5, -2.0, 3.5, -0.5, 1.0, -1.5, 0.0, -1.0) | mat2x4(-1.0, 0.5, 0.5, 3.0, 1.5, 3.0, 2.5, 3.5) ]; + output mat2x4 out0 = [ mat2x4(-3.0, -6.0, 2.0, -5.0, 1.0, -7.0, -6.0, 6.0) | mat2x4(5.0, 4.0, -7.0, 1.0, -2.0, 3.0, -0.0, 2.0) | mat2x4(2.0, -1.0, -1.0, -6.0, -3.0, -6.0, -5.0, -7.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat2x4 func (mat2x4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3x2 + version 310 es + values + { + input mat3x2 in0 = [ mat3x2(1.5, -2.5, 2.5, 3.5, 3.0, 0.5) | mat3x2(1.5, -2.0, 2.5, 0.5, -1.5, -3.5) | mat3x2(2.5, 3.5, -3.0, 2.5, -0.5, -2.5) ]; + output mat3x2 out0 = [ mat3x2(-3.0, 5.0, -5.0, -7.0, -6.0, -1.0) | mat3x2(-3.0, 4.0, -5.0, -1.0, 3.0, 7.0) | mat3x2(-5.0, -7.0, 6.0, -5.0, 1.0, 5.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3x2 func (mat3x2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3 + version 310 es + values + { + input mat3 in0 = [ mat3(-1.5, 2.0, 3.0, -3.5, 1.0, -3.5, 1.5, -1.5, 3.0) | mat3(3.5, 0.0, 3.5, -1.5, -3.0, 0.5, -3.5, -2.5, -0.5) | mat3(1.0, -2.5, -3.5, 3.0, -1.5, 3.5, 3.0, -1.0, -0.5) ]; + output mat3 out0 = [ mat3(3.0, -4.0, -6.0, 7.0, -2.0, 7.0, -3.0, 3.0, -6.0) | mat3(-7.0, -0.0, -7.0, 3.0, 6.0, -1.0, 7.0, 5.0, 1.0) | mat3(-2.0, 5.0, 7.0, -6.0, 3.0, -7.0, -6.0, 2.0, 1.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3 func (mat3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat3x4 + version 310 es + values + { + input mat3x4 in0 = [ mat3x4(0.0, 1.0, 0.5, 0.5, 1.0, 3.5, 0.0, -0.5, 1.5, -2.0, -1.5, 3.5) | mat3x4(0.0, 0.5, -3.5, -0.5, 0.5, -3.5, 1.0, 1.0, -3.5, 1.0, -0.5, 1.5) | mat3x4(-1.0, 1.5, 2.0, -3.5, -3.5, 1.5, 3.5, -2.0, -0.5, 0.5, -1.5, -1.0) ]; + output mat3x4 out0 = [ mat3x4(-0.0, -2.0, -1.0, -1.0, -2.0, -7.0, -0.0, 1.0, -3.0, 4.0, 3.0, -7.0) | mat3x4(-0.0, -1.0, 7.0, 1.0, -1.0, 7.0, -2.0, -2.0, 7.0, -2.0, 1.0, -3.0) | mat3x4(2.0, -3.0, -4.0, 7.0, 7.0, -3.0, -7.0, 4.0, 1.0, -1.0, 3.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat3x4 func (mat3x4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4x2 + version 310 es + values + { + input mat4x2 in0 = [ mat4x2(-1.5, -1.0, 0.5, -1.5, -1.0, 2.0, -3.5, 0.5) | mat4x2(2.0, -1.5, -2.0, 2.5, -2.0, -2.5, -0.5, 1.5) | mat4x2(-3.0, -1.5, -1.0, 2.5, -0.5, 2.5, -2.5, -1.0) ]; + output mat4x2 out0 = [ mat4x2(3.0, 2.0, -1.0, 3.0, 2.0, -4.0, 7.0, -1.0) | mat4x2(-4.0, 3.0, 4.0, -5.0, 4.0, 5.0, 1.0, -3.0) | mat4x2(6.0, 3.0, 2.0, -5.0, 1.0, -5.0, 5.0, 2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4x2 func (mat4x2 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4x3 + version 310 es + values + { + input mat4x3 in0 = [ mat4x3(1.0, 3.0, -0.5, -2.0, -3.0, 0.0, -2.5, 2.5, 2.5, -2.5, -1.5, 2.5) | mat4x3(1.0, 2.5, -1.0, -3.0, -1.5, 2.0, -1.5, -1.0, -0.5, -0.5, -0.5, 3.0) | mat4x3(-2.5, -3.5, 3.5, 3.0, 3.5, -0.5, 3.5, 3.0, -2.0, 2.0, 2.5, 1.0) ]; + output mat4x3 out0 = [ mat4x3(-2.0, -6.0, 1.0, 4.0, 6.0, -0.0, 5.0, -5.0, -5.0, 5.0, 3.0, -5.0) | mat4x3(-2.0, -5.0, 2.0, 6.0, 3.0, -4.0, 3.0, 2.0, 1.0, 1.0, 1.0, -6.0) | mat4x3(5.0, 7.0, -7.0, -6.0, -7.0, 1.0, -7.0, -6.0, 4.0, -4.0, -5.0, -2.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4x3 func (mat4x3 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + + case mat4 + version 310 es + values + { + input mat4 in0 = [ mat4(0.0, -1.5, -1.0, -2.0, -3.0, 0.5, -1.5, 2.5, -3.5, 3.0, 1.5, 3.0, 3.0, 3.0, 0.5, -3.5) | mat4(2.0, -2.5, -1.5, 1.0, 0.0, -0.5, 3.5, 1.0, -1.0, -2.0, 2.5, 0.0, 2.0, -1.0, -2.5, 0.5) | mat4(2.5, -2.5, 2.0, 3.0, 2.5, 2.5, -3.5, 1.0, 2.5, -3.5, -1.5, -1.5, 0.0, -0.5, 0.0, 2.0) ]; + output mat4 out0 = [ mat4(-0.0, 3.0, 2.0, 4.0, 6.0, -1.0, 3.0, -5.0, 7.0, -6.0, -3.0, -6.0, -6.0, -6.0, -1.0, 7.0) | mat4(-4.0, 5.0, 3.0, -2.0, -0.0, 1.0, -7.0, -2.0, 2.0, 4.0, -5.0, -0.0, -4.0, 2.0, 5.0, -1.0) | mat4(-5.0, 5.0, -4.0, -6.0, -5.0, -5.0, 7.0, -2.0, -5.0, 7.0, 3.0, 3.0, -0.0, 1.0, -0.0, -4.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + mat4 func (mat4 a) + { + return -2.0*a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case float_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + + float func (Pos p) + { + return -(p.a + p.b + p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + out0 = func(p); + ${OUTPUT} + } + "" + end + + case struct_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + + Pos func (Pos p) + { + return Pos(-p.a, -p.b, -p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + p = func(p); + out0 = p.a + p.b + p.c; + ${OUTPUT} + } + "" + end + + case struct_nested_struct + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 1.0, -2.0) | vec3(2.0, 2.5, -4.0) ]; + output float out0 = [ 1.0 | -0.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + struct Line { Pos start, end; }; + + Line func (Pos p) + { + return Line(p, Pos(-p.a, -p.b, -p.c)); + } + + float sum (Pos p) + { + return (p.a + p.b + p.c); + } + + void main() + { + Pos p = Pos(in0.x, in0.y, in0.z); + Line line = func(p); + out0 = sum(line.start) + (2.0 * sum(line.end)); + ${OUTPUT} + } + "" + end + + +end # datatypes + +group qualifiers "Function Parameter Qualifiers" + + case in_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in lowp float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out lowp float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_lowp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout lowp float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (in highp float a) + { + a = -a; + return 2.0 * a; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out highp float a) + { + a = -1.0; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_highp_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout highp float a) + { + a = -a; + } + + void main() + { + ${SETUP} + float f = 1.0; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case const_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (const float a) + { + float b = -a; + return 2.0 * b; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case const_in_float + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (const in float a) + { + float b = -a; + return 2.0 * b; + } + + void main() + { + ${SETUP} + float f = in0; + float g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case in_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in lowp int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out lowp int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_lowp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout lowp int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case in_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in highp int a) + { + a = -a; + return 2 * a; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case out_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out highp int a) + { + a = -1; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case inout_highp_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout highp int a) + { + a = -a; + } + + void main() + { + ${SETUP} + int f = 1; + func(f); + out0 = f * in0; + ${OUTPUT} + } + "" + end + + case const_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (const int a) + { + int b = -a; + return 2 * b; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case const_in_int + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 4 ]; + output int out0 = [ 0 | -1 | 2 | -4 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (const in int a) + { + int b = -a; + return 2 * b; + } + + void main() + { + ${SETUP} + int f = in0; + int g = func(f); + out0 = f + g; + ${OUTPUT} + } + "" + end + + case in_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a) + { + a = !a; + return a; + } + + void main() + { + ${SETUP} + bool f = in0; + bool g = func(f); + out0 = (f != g); + ${OUTPUT} + } + "" + end + + case out_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (out bool a) + { + a = false; + } + + void main() + { + ${SETUP} + bool f = true; + func(f); + out0 = (in0 == f); + ${OUTPUT} + } + "" + end + + case inout_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + void func (inout bool a) + { + a = !a; + } + + void main() + { + ${SETUP} + bool f = true; + func(f); + out0 = (in0 == f); + ${OUTPUT} + } + "" + end + + case const_bool + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ true | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (const bool a) + { + bool b = !a; + return b; + } + + void main() + { + ${SETUP} + bool f = in0; + bool g = func(f); + out0 = (f != g); + ${OUTPUT} + } + "" + end + +end # qualifiers + +group declarations "Function Declarations" + + case basic + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + float func (void) + { + return -1.0; + } + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case basic_arg + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f); + + float func (float f) + { + return -f; + } + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case define_after_use + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + + float func (void) + { + return -1.0; + } + "" + end + + case double_declare + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void); + + float func (void); + + float func (void) + { + return -1.0; + } + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case declare_after_define + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (void) + { + return -1.0; + } + + float func (void); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + "" + end + + case void_vs_no_void + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (); + + void main() + { + out0 = func() * in0; + ${OUTPUT} + } + + float func (void) + { + return -1.0; + } + "" + end + + case in_vs_no_in + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f); + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + + float func (in float f) + { + return -f; + } + "" + end + + case default_vs_explicit_precision + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + precision mediump float; + + float func (float f); + + precision highp float; + + void main() + { + out0 = func(in0); + ${OUTPUT} + } + + float func (mediump float f) + { + return -f; + } + "" + end + + +end # declarations + +group overloading "Function Overloading" + + case user_func_arg_type_simple + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + int func (int a) + { + return -a; + } + + void main() + { + out0 = func(in0) * float(func(-1)); + ${OUTPUT} + } + "" + end + + case user_func_arg_float_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) { return -a; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + + void main() + { + out0 = func(func(func(func(vec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_int_types + version 310 es + values + { + input int in0 = [ 0 | 1 | -2 | 6 ]; + output int out0 = [ 0 | -1 | 2 | -6 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + out0 = func(func(func(func(ivec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_bool_types + version 310 es + values + { + input bool in0 = [ true | false ]; + output bool out0 = [ false | true ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + out0 = func(func(func(func(bvec4(in0)).xyz).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_basic_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + float func (float a) { return -a; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + + void main() + { + ${SETUP} + if (func(func(bvec4(false)).x)) + out0 = func(in0) * float(func(-1)); + else + out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arg_complex_types + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct Pos { float a, b, c; }; + struct Line { Pos start, end; }; + + float func (float a) { return -a; } + float func (float a[4]) { return a[0] + a[3]; } + vec2 func (vec2 a) { return a.yx; } + vec3 func (vec3 a) { return a.xxx; } + vec4 func (vec4 a) { return a.wwww; } + vec4 func (vec4 a[4]) { return a[1] + a[2]; } + int func (int a) { return -a; } + ivec2 func (ivec2 a) { return a.yx; } + ivec3 func (ivec3 a) { return a.xxx; } + ivec4 func (ivec4 a) { return a.wwww; } + bool func (bool a) { return !a; } + bvec2 func (bvec2 a) { return a.yx; } + bvec3 func (bvec3 a) { return a.xxx; } + bvec4 func (bvec4 a) { return a.wwww; } + Pos func (Pos a) { return a; } + Line func (Line a) { return Line(a.end, a.start); } + + void main() + { + ${SETUP} + float arr[4]; + vec4 arr2[4]; + out0 = func(arr) + func(arr2).x; + if (func(func(bvec4(false)).x)) + out0 = func(in0) * float(func(-1)); + else + out0 = float(func(func(ivec4(func(func(func(vec4(0.5)).xyz).xy).xxxx)).xy).x); + ${OUTPUT} + } + "" + end + + case user_func_arguments + version 310 es + values + { + input float in0 = [ 0.0 | 1.0 | -2.0 | 2.5 ]; + output float out0 = [ 0.0 | -1.0 | 2.0 | -2.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + } + + float func (float a, float b) + { + return a * b; + } + + void main() + { + out0 = func(in0) * func(-0.5, -2.0); + ${OUTPUT} + } + "" + end + + case array_size + version 310 es + values + { + output float out0 = [ 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float f[3]) + { + return f[0]; + } + + float func (float f[4]) + { + return f[1]; + } + + void main () + { + ${SETUP} + float[4] x = float[4] (-1.0, 1.0, 0.0, 0.0); + out0 = func(x); + ${OUTPUT} + } + "" + end + +end # overloading + +group array_arguments "Arrays as Arguments" + + case local_in_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (in float a[4]) + { + a[0] = -1.0; + a[2] = -4.0; + a[3] = -3.0 * a[1]; + return a[0]; + } + + void main() + { + float arr[4]; + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + float f = func(arr); + out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (in float a[4]) + { + a[0] = -1.0; + a[2] = -4.0; + a[3] = -3.0 * a[1]; + return a[0]; + } + + float arr[4]; + + void main() + { + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + float f = func(arr); + out0 = f * vec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case local_in_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, -4) | ivec4(-7, -11, 13, 19) ]; + output ivec4 out0 = [ ivec4(0, -1, -2, 4) | ivec4(7, 11, -13, -19) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a[4]) + { + a[0] = -1; + a[2] = -4; + a[3] = -3 * a[1]; + return a[0]; + } + + void main() + { + ${SETUP} + int arr[4]; + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + int f = func(arr); + out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 1, 2, 4) | ivec4(-7, -11, 13, 19) ]; + output ivec4 out0 = [ ivec4(0, -1, -2, -4) | ivec4(7, 11, -13, -19) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (in int a[4]) + { + a[0] = -1; + a[2] = -4; + a[3] = -3 * a[1]; + return a[0]; + } + + int arr[4]; + + void main() + { + ${SETUP} + arr[0] = in0.x; + arr[1] = in0.y; + arr[2] = in0.z; + arr[3] = in0.w; + int f = func(arr); + out0 = f * ivec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + + "" + end + + case local_in_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a[4]) + { + a[0] = false; + a[2] = true; + a[3] = !a[1]; + return a[0]; + } + + void main() + { + ${SETUP} + bool arr[4]; + arr[0] = !in0.x; + arr[1] = !in0.y; + arr[2] = !in0.z; + arr[3] = !in0.w; + func(arr); + out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case global_in_bool + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, true, false, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, true, true, true) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + bool func (in bool a[4]) + { + a[0] = false; + a[2] = true; + a[3] = !a[1]; + return a[0]; + } + + bool arr[4]; + + void main() + { + ${SETUP} + arr[0] = !in0.x; + arr[1] = !in0.y; + arr[2] = !in0.z; + arr[3] = !in0.w; + func(arr); + out0 = bvec4(arr[0], arr[1], arr[2], arr[3]); + ${OUTPUT} + } + "" + end + + case test_helpers + version 310 es + desc "Check that helper functions are supported properly." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output float out0 = [ 1.0 | 1.0 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + void main() + { + float arr[4]; + set(arr, in0); + negate(arr); + out0 = float(test(arr, -in0)); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_local_in_on_call + version 310 es + desc "Check that local 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + a[0] = 2.123; + a[2] = -4.123; + return isEqual(a, b) ? 1.0 : -1.0; + } + + void main() + { + float arr[4]; + set(arr, in0); + out0 = in0 * func(arr, arr); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_global_in_on_call + version 310 es + desc "Check that global 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + a[0] = 2.123; + a[2] = -4.123; + return isEqual(a, b) ? 1.0 : -1.0; + } + + float arr[4]; + + void main() + { + set(arr, in0); + out0 = in0 * func(arr, arr); + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_local_inout_on_call + version 310 es + desc "Check that local 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (inout float a[4], inout float b[4]) + { + negate(a); + return isEqual(a, b) ? 1.0 : -1.0; + } + + void main() + { + float arr[4]; + set(arr, in0); + float m = func(arr, arr); // returns -1.0 + float n = float(test(arr, in0) || test(arr, -in0)); + out0 = in0 * m * n; + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + + case copy_global_inout_on_call + version 310 es + desc "Check that global 'in' arguments are copied on call and don't alias." + values + { + input vec4 in0 = [ vec4(0.0, 1.0, 2.0, -4.0) | vec4(-7.5, 12.125, -0.25, 16.0) ]; + output vec4 out0 = [ vec4(0.0, -1.0, -2.0, 4.0) | vec4(7.5, -12.125, 0.25, -16.0) ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + vec4 get (in float arr[4]); + void set (out float arr[4], vec4 val); + void negate (inout float arr[4]); + bool test (in float arr[4], vec4 ref); + bool isEqual (in float a[4], in float b[4]); + + float func (in float a[4], in float b[4]) + { + negate(a); + return isEqual(a, b) ? 1.0 : -1.0; + } + + float arr[4]; + + void main() + { + set(arr, in0); + float m = func(arr, arr); // returns -1.0 + float n = float(test(arr, in0) || test(arr, -in0)); + out0 = in0 * m * n; + ${OUTPUT} + } + + float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } + vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } + void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } + void negate (inout float arr[4]) { set(arr, -get(arr)); } + bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } + bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + "" + end + +# vec4 get (in float arr[4]); +# void set (out float arr[4], vec4 val); +# void negate (inout float arr[4]); +# bool test (in float arr[4], vec4 ref); +# bool isEqual (in float a[4], in float b[4]); + +# float absDiff (vec4 a, vec4 b) { vec4 d = abs(a - b); return max(max(d.x, d.y), max(d.z, d.w)); } +# vec4 get (in float arr[4]) { return vec4(arr[0], arr[1], arr[2], arr[3]); } +# void set (out float arr[4], vec4 val) { arr[0] = val.x; arr[1] = val.y; arr[2] = val.z; arr[3] = val.w; } +# void negate (inout float arr[4]) { set(arr, -get(arr)); } +# bool test (in float arr[4], vec4 ref) { return (absDiff(get(arr), ref) < 0.1); } +# bool isEqual (in float a[4], in float b[4]) { return (absDiff(get(a), get(b)) < 0.1); } + +end # array_arguments + +#group qualifiers "Function Parameter Qualifiers" +# +#end # qualifiers + +group control_flow "Control Flow In Functions" + + case simple_return + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + return -a; + a = a * -1.0; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_if + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + if (a != 0.0) + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_else + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + if (a == 0.0) + return 1.0; + else + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + while (a < 100.0) + return -a; + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_loop_if + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + while (a < 100.0) + { + a = -a; + if (a != 0.0) + return a; + else + return -1.0; + } + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 5; i++) + a = -a; + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_break + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + a = -a; + if (i == 4) + break; + } + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_continue + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + if (i == 4) + continue; + a = -a; + } + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_in_nested_loop + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + for (int i = 0; i < 6; i++) + { + a = -a; + for (int j = 0; j < 4; j++) + { + a = -a; + if (i == 1) + return a; + } + if (i == 4) + return 1.0; + } + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case return_after_loop_sequence + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + int i; + for (i = 0; i < 6; i++) // negate a + { + a = -a; + if (i == 4) + a = -a; + } + + for (; i < 10; i++) // keep a + { + if (i == 8) + continue; + else if (i == 9) + break; + a = -a; + } + + return a; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case mixed_return_break_continue + version 310 es + values + { + input float in0 = [ -0.5 | 1.5 ]; + output float out0 = [ 0.5 | -1.5 ]; + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float func (float a) + { + int i; + for (i = 0; i < 6; i++) + { + if (i == 0) + continue; + else if (i == 1) + { + } + else if (i == 3) + break; + else + return a; + a = -a; + } + + return 1.0; + } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + +end # control_flow + +group misc "Miscellaneous" + + case multi_arg_float + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 1.0, -2.0, 0.5) | vec4(2.0, 2.5, 4.0, -7.0) ]; + output float out0 = [ 0.5 | -1.5 ]; # -sum(in0) + } + + both "" + #version 310 es + precision highp float; + ${DECLARATIONS} + + float sum(vec4 v) { return (v.x + v.y + v.z + v.w); } + + float func (float a, vec3 b, vec2 c, vec2 d, vec4 e) + { + return -sum(vec4(a, b) + vec4(c, d)) + sum(e); + } + + void main() + { + ${SETUP} + out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); + ${OUTPUT} + } + "" + end + + case multi_arg_int + version 310 es + values + { + input ivec4 in0 = [ ivec4(-1, 0, 2, 2) | ivec4(1, 4, -8, 2) ]; + output int out0 = [ -3 | 1 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int sum(ivec4 v) { return (v.x + v.y + v.z + v.w); } + + int func (int a, ivec3 b, ivec2 c, ivec2 d, ivec4 e) + { + return -sum(ivec4(a, b) + ivec4(c, d)) + sum(e); + } + + void main() + { + ${SETUP} + out0 = func(in0.y, in0.xzw, in0.wz, in0.yx, in0); + ${OUTPUT} + } + "" + end + + case argument_eval_order_1 + version 310 es + values + { + input int in0 = [ 0 | 1 | 3 | 5 ]; + output int out0 = [ -1 | 5 | 11 | 17 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (float a, int b, bool c, int d) + { + if (c) + return b + int(a) + d; + else + return -1; + } + + void main () + { + ${SETUP} + float v0 = float(in0); + int v1 = in0; + out0 = func((v0 += 1.0), v1++, (v0 > 1.5), v1); + ${OUTPUT} + } + "" + end + + case argument_eval_order_2 + version 310 es + values + { + input int in0 = [ 0 | -1 | 3 | 5 ]; + output int out0 = [ 3 | -1 | 9 | 13 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int g; + + int modG (int v) + { + g += v; + return v; + } + + int func (float a, int b, bool c, int d) + { + if (c) + return b + int(a) + d; + else + return -1; + } + + void main () + { + ${SETUP} + out0 = func(float(g = in0), modG(2), --g > 0, g); + ${OUTPUT} + } + "" + end + +end # misc diff --git a/vulkan/glsl/es310/linkage.test b/vulkan/glsl/es310/linkage.test new file mode 100644 index 0000000..48402bb --- /dev/null +++ b/vulkan/glsl/es310/linkage.test @@ -0,0 +1,2179 @@ + +# Varying tests +group varying "Varying linkage" + + # Linking rules + group rules "Varying linking rules" + # declared in vertex shader, no reference in frag shader + case vertex_declare + version 310 es + desc "varying declared in vertex shader, no reference in fragment shader" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # declared in vertex shader, declared in frag shader + case both_declare + version 310 es + desc "varying declared in both vertex and fragment shader, but not used" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # vec4 vs vec3 + case legal_mismatch_vec4_vec3 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to vec3)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec3 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y + var.z); + } + "" + end + + # vec4 vs vec2 + case legal_mismatch_vec4_vec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to vec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); + } + "" + end + + # vec4 vs float + case legal_mismatch_vec4_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec4 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec4 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + var.w = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # vec3 vs vec2 + case legal_mismatch_vec3_vec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec3 to vec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec3 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump vec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); + } + "" + end + + # vec3 vs float + case legal_mismatch_vec3_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec3 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec3 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + var.z = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # vec2 vs float + case legal_mismatch_vec2_float + version 310 es + desc "legal vertex to fragment shader varying type mismatches (vec2 to float)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump vec2 var; + void main() + { + var.x = 0.0; + var.y = 0.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0 + var); + } + "" + end + + # ivec4 vs ivec3 + case legal_mismatch_ivec4_ivec3 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec3)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec3 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y + var.z == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec4 vs ivec2 + case legal_mismatch_ivec4_ivec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec4 vs int + case legal_mismatch_ivec4_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec4 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec4 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + var.w = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec3 vs ivec2 + case legal_mismatch_ivec3_ivec2 + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec3 to ivec2)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec3 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat ivec2 var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var.x + var.y == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec3 vs int + case legal_mismatch_ivec3_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec3 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec3 var; + void main() + { + var.x = 0; + var.y = 0; + var.z = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # ivec2 vs int + case legal_mismatch_ivec2_int + version 310 es + desc "legal vertex to fragment shader varying type mismatches (ivec2 to int)" + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump ivec2 var; + void main() + { + var.x = 0; + var.y = 0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump flat int var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (var == 0) + ${FRAG_COLOR} = vec4(1.0); + else + ${FRAG_COLOR} = vec4(0.0); + } + "" + end + + # declared in vertex shader, static use in frag shader + case vertex_declare_fragment_use + version 310 es + desc "varying declared in both shaders, statically used in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + if (u_false) + ${FRAG_COLOR} = vec4(var); + else + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, no reference in fragment shader + case vertex_use_fragment_declare + version 310 es + desc "varying declared and statically used in vertex shader, no reference in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, declared in fragment shader + case vertex_use_declare_fragment + version 310 es + desc "varying declared and statically used in vertex shader, only declared in fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + layout(location = 0) in mediump float var; + ${FRAGMENT_DECLARATIONS} + void main() + { + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # static use in vertex shader, used in fragment shader + case vertex_use_fragment_use + version 310 es + desc "varying statically used in both vertex and fragment shader" + values { uniform bool u_false = false; } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mediump float var; + void main() + { + if (u_false) + var = 1.0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mediump float var; + void main() + { + if (u_false) + ${FRAG_COLOR} = vec4(var); + else + ${FRAG_COLOR} = vec4(1.0); + } + "" + end + + # different interpolation + case differing_interpolation_2 + version 310 es + desc "varying interpolation different (smooth vs. centroid)" + values + { + input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) smooth out mediump float var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) centroid in mediump float var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + # differing name (linking is done by location only in SPIR-V) + case differing_name_1 + version 310 es + desc "varying declared with matching location but different name" + values + { + input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; + input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; + output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out highp float vtxVarB; + layout(location = 2) out highp float vtxVarA; + void main() + { + vtxVarA = in0; + vtxVarB = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 2) in highp float fragVarA; + layout(location = 0) in highp float fragVarB; + void main() + { + out0 = fragVarA - fragVarB; + ${FRAGMENT_OUTPUT} + } + "" + end + + # differing name (linking is done by location only in SPIR-V) + case differing_name_2 + version 310 es + desc "varying declared with matching location but different name" + values + { + input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; + input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; + output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; + } + + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out highp float varA; + layout(location = 2) out highp float varB; + void main() + { + varA = in0; + varB = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 2) in highp float varA; + layout(location = 0) in highp float varB; + void main() + { + out0 = varB - varA; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group basic_types "Basic varying types" + case float + version 310 es + desc "varying of type float" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out float var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in float var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec2 + version 310 es + desc "varying of type vec2" + values + { + input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec3 + version 310 es + desc "varying of type vec3" + values + { + input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec4 + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2 + version 310 es + desc "varying of type mat2" + values + { + input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x3 + version 310 es + desc "varying of type mat2x3" + values + { + input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2x3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2x3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x4 + version 310 es + desc "varying of type mat2x4" + values + { + input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat2x4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat2x4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x2 + version 310 es + desc "varying of type mat3x2" + values + { + input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3x2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3x2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3 + version 310 es + desc "varying of type mat3" + values + { + input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x4 + version 310 es + desc "varying of type mat3x4" + values + { + input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat3x4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat3x4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x2 + version 310 es + desc "varying of type mat4x2" + values + { + input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4x2 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4x2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x3 + version 310 es + desc "varying of type mat4x3" + values + { + input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4x3 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4x3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4 + version 310 es + desc "varying of type mat4" + values + { + input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) out mat4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in mat4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case int + version 310 es + desc "varying of type int" + values + { + input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump int var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in int var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec2 + version 310 es + desc "varying of type ivec2" + values + { + input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec2 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec3 + version 310 es + desc "varying of type ivec3" + values + { + input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec3 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec4 + version 310 es + desc "varying of type ivec4" + values + { + input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump ivec4 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in ivec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uint + version 310 es + desc "varying of type int" + values + { + input uint in0 = [ 1 | 2 | 3 | 16 ]; + output uint out0 = [ 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uint var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uint var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec2 + version 310 es + desc "varying of type uvec2" + values + { + input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec2 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec2 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec3 + version 310 es + desc "varying of type uvec3" + values + { + input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec3 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec3 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec4 + version 310 es + desc "varying of type uvec4" + values + { + input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out mediump uvec4 var; + void main() + { + ${VERTEX_SETUP} + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in uvec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group struct "Structure varyings" + case float + version 310 es + desc "varying of type float inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec2 + version 310 es + desc "varying of type vec2 inside struct" + values + { + input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec3 + version 310 es + desc "varying of type vec3 inside struct" + values + { + input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case vec4 + version 310 es + desc "varying of type vec4 inside struct" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump vec4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump vec4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2 + version 310 es + desc "varying of type mat2 inside struct" + values + { + input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x3 + version 310 es + desc "varying of type mat2x3 inside struct" + values + { + input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2x3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2x3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat2x4 + version 310 es + desc "varying of type mat2x4 inside struct" + values + { + input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat2x4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat2x4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x2 + version 310 es + desc "varying of type mat3x2 inside struct" + values + { + input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3x2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3x2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3 + version 310 es + desc "varying of type mat3 inside struct" + values + { + input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat3x4 + version 310 es + desc "varying of type mat3x4 inside struct" + values + { + input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat3x4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat3x4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x2 + version 310 es + desc "varying of type mat4x2 inside struct" + values + { + input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4x2 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4x2 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4x3 + version 310 es + desc "varying of type mat4x3 inside struct" + values + { + input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4x3 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4x3 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case mat4 + version 310 es + desc "varying of type mat4 inside struct" + values + { + input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump mat4 a; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump mat4 a; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case int + version 310 es + desc "varying of type int inside struct" + values + { + input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump int a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump int a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec2 + version 310 es + desc "varying of type ivec2 inside struct" + values + { + input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec2 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec2 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec3 + version 310 es + desc "varying of type ivec3 inside struct" + values + { + input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec3 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec3 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case ivec4 + version 310 es + desc "varying of type ivec4 inside struct" + values + { + input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump ivec4 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump ivec4 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uint + version 310 es + desc "varying of type uint in struct" + values + { + input uint in0 = [ 1 | 2 | 3 | 16 ]; + output uint out0 = [ 1 | 2 | 3 | 16 ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uint a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uint a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec2 + version 310 es + desc "varying of type uvec2 inside struct" + values + { + input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec2 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec2 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec3 + version 310 es + desc "varying of type uvec3 inside struct" + values + { + input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec3 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec3 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case uvec4 + version 310 es + desc "varying of type uvec4 inside struct" + values + { + input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump uvec4 a; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + ${FRAGMENT_DECLARATIONS} + struct S { mediump uvec4 a; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + ${FRAGMENT_OUTPUT} + } + "" + end + + case float_vec3 + version 310 es + desc "varyings of type float and vec3 inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + input vec3 in1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; highp vec3 b; }; + layout(location = 0) out S var; + void main() + { + var.a = in0; + var.b = in1; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; highp vec3 b; }; + layout(location = 0) in S var; + void main() + { + out0 = var.a; + out1 = var.b; + ${FRAGMENT_OUTPUT} + } + "" + end + + case float_uvec2_vec3 + version 310 es + desc "varyings of type float and vec3 inside struct" + values + { + input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; + input uvec2 in1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; + output uvec2 out1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; + input vec3 in2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + output vec3 out2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + struct S { mediump float a; highp uvec2 b; highp vec3 c; }; + layout(location = 0) flat out S var; + void main() + { + ${VERTEX_SETUP} + var.a = in0; + var.b = in1; + var.c = in2; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + struct S { mediump float a; highp uvec2 b; highp vec3 c; }; + layout(location = 0) flat in S var; + void main() + { + out0 = var.a; + out1 = var.b; + out2 = var.c; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group interpolation "Varying interpolation modes" + case smooth + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) smooth out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) smooth in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case centroid + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) centroid out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) centroid in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + + case flat + version 310 es + desc "varying of type vec4" + values + { + input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; + } + vertex "" + #version 310 es + ${VERTEX_DECLARATIONS} + layout(location = 0) flat out vec4 var; + void main() + { + var = in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) flat in vec4 var; + void main() + { + out0 = var; + ${FRAGMENT_OUTPUT} + } + "" + end + end + + group usage "Varying usage in shaders" + case readback_1 + version 310 es + desc "read back (an already written) varying in the vertex shader" + values + { + input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ]; + output float out0 = [ 3.0 | 0.0 | -6.0 | 30.0 ]; + } + vertex "" + #version 310 es + precision highp float; + ${VERTEX_DECLARATIONS} + layout(location = 0) out float var1; + layout(location = 1) out float var2; + + void main() + { + var1 = in0; + var2 = var1 + in0; + ${VERTEX_OUTPUT} + } + "" + fragment "" + #version 310 es + precision highp float; + ${FRAGMENT_DECLARATIONS} + layout(location = 0) in float var1; + layout(location = 1) in float var2; + + void main() + { + out0 = var1 + var2; + ${FRAGMENT_OUTPUT} + } + "" + end + end +end diff --git a/vulkan/glsl/es310/scoping.test b/vulkan/glsl/es310/scoping.test new file mode 100644 index 0000000..fd25c40 --- /dev/null +++ b/vulkan/glsl/es310/scoping.test @@ -0,0 +1,460 @@ +group valid "Valid scoping and name redeclaration cases" + + case local_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + void main() + { + ${SETUP} + int a = in0; + + out0 = a; + ${OUTPUT} + } + "" + end + + case block_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + { + int a = -1; + } + out0 = a; + ${OUTPUT} + } + "" + end + + case block_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + void main() + { + ${SETUP} + { + int a = in0; + + out0 = a; + } + ${OUTPUT} + } + "" + end + + case for_init_statement_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + for (int a = 0; a < 10; a++) + { + } + out0 = a; + ${OUTPUT} + } + "" + end + + case while_condition_variable_hides_local_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + int i = 0; + while (bool a = (i < 1)) + { + i++; + } + out0 = a; + ${OUTPUT} + } + "" + end + + case for_init_statement_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 5; + + void main() + { + ${SETUP} + for (int a = 0; a < 10; a++) + { + } + out0 = in0 + a - 5; + ${OUTPUT} + } + "" + end + + case while_condition_variable_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 5; + + void main() + { + ${SETUP} + int i = 0; + while (bool a = (i < 1)) + { + i++; + } + out0 = in0 + a - 5; + ${OUTPUT} + } + "" + end + + case variable_in_if_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = 1; + + void main() + { + ${SETUP} + if (true) + int a = 42; + out0 = a*in0; + ${OUTPUT} + } + "" + end + + case variable_from_outer_scope_visible_in_initializer + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + void main() + { + ${SETUP} + int a = in0; + { + int a = a+5, b = a-5; + out0 = b; + a = 42; + } + out0 = out0 + a - in0; + ${OUTPUT} + } + "" + end + + case local_int_variable_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int val; }; + + void main() + { + ${SETUP} + int S = S(in0).val; + out0 = S; + ${OUTPUT} + } + "" + end + + case local_struct_variable_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int val; }; + + void main() + { + ${SETUP} + S S = S(in0); + out0 = S.val; + ${OUTPUT} + } + "" + end + + case local_variable_hides_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int foo (int x) { return x; } + + void main() + { + ${SETUP} + int foo = in0; + out0 = foo; + ${OUTPUT} + } + "" + end + + case function_parameter_hides_global_variable + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int a = -1; + + int func (int a) { return a; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case function_parameter_hides_struct_type + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + struct S { int x; }; + + int func (int S) { return S; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case function_parameter_hides_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int func) { return func; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + + case local_variable_in_inner_scope_hides_function_parameter + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + int func (int inp, int x) { { int x = 5; return inp + x - 5; } } + + void main() + { + ${SETUP} + out0 = func(in0, 42); + ${OUTPUT} + } + "" + end + + case redeclare_function + version 310 es + values + { + input int in0 = [ 1 | 2 | 3 ]; + output int out0 = [ 1 | 2 | 3 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + ${DECLARATIONS} + + int func (int x); + int func (int); + int func (int inp) { return inp; } + + void main() + { + ${SETUP} + out0 = func(in0); + ${OUTPUT} + } + "" + end + +end diff --git a/vulkan/glsl/es310/swizzles.test b/vulkan/glsl/es310/swizzles.test new file mode 100644 index 0000000..234ef95 --- /dev/null +++ b/vulkan/glsl/es310/swizzles.test @@ -0,0 +1,7783 @@ +# WARNING: This file is auto-generated. Do NOT modify it manually, but rather +# modify the generating script file. Otherwise changes will be lost! + +group vector_swizzles "Vector Swizzles" + + case mediump_vec2_x + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yxy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_xyxx + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_vec2_yyyy + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_vec2_s + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec2_ss + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_vec2_st + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_vec2_ts + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_vec2_tst + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_vec2_stss + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_vec2_tttt + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_vec2_r + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(-0.5, -0.5) | vec2(-32.0, -32.0) | vec2(-0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_vec2_gr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec2 out0 = [ vec2(0.5, 0.0) | vec2(1.25, 1.0) | vec2(-2.25, -0.5) | vec2(64.0, -32.0) | vec2(-0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_grg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_vec2_rgrr + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_vec2_gggg + version 310 es + values + { + input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_x + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec3_z + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xyz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zyx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xxx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzy + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_vec3_yxy + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xzx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_xyyx + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_vec3_zzzz + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_vec3_s + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec3_p + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_stp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pts + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sss + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_vec3_ppp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_ppt + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_vec3_tst + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_vec3_sps + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_vec3_stts + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_vec3_pppp + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_vec3_r + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec3_b + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output float out0 = [ 0.75 | 1.125 | -4.875 | -51.0 | 0.0526315789474 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.0, 0.75) | vec2(1.0, 1.125) | vec2(-0.5, -4.875) | vec2(-32.0, -51.0) | vec2(-0.75, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec2 out0 = [ vec2(0.75, 0.75) | vec2(1.125, 1.125) | vec2(-4.875, -4.875) | vec2(-51.0, -51.0) | vec2(0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rgb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bgr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.5, 0.0) | vec3(1.125, 1.25, 1.0) | vec3(-4.875, -2.25, -0.5) | vec3(-51.0, 64.0, -32.0) | vec3(0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rrr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(-0.5, -0.5, -0.5) | vec3(-32.0, -32.0, -32.0) | vec3(-0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.75) | vec3(1.125, 1.125, 1.125) | vec3(-4.875, -4.875, -4.875) | vec3(-51.0, -51.0, -51.0) | vec3(0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbg + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.75, 0.75, 0.5) | vec3(1.125, 1.125, 1.25) | vec3(-4.875, -4.875, -2.25) | vec3(-51.0, -51.0, 64.0) | vec3(0.0526315789474, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_grg + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.5, 0.0, 0.5) | vec3(1.25, 1.0, 1.25) | vec3(-2.25, -0.5, -2.25) | vec3(64.0, -32.0, 64.0) | vec3(-0.0322580645161, -0.75, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rbr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec3 out0 = [ vec3(0.0, 0.75, 0.0) | vec3(1.0, 1.125, 1.0) | vec3(-0.5, -4.875, -0.5) | vec3(-32.0, -51.0, -32.0) | vec3(-0.75, 0.0526315789474, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_rggr + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.5, 0.0) | vec4(1.0, 1.25, 1.25, 1.0) | vec4(-0.5, -2.25, -2.25, -0.5) | vec4(-32.0, 64.0, 64.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_vec3_bbbb + version 310 es + values + { + input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.75, 0.75) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-4.875, -4.875, -4.875, -4.875) | vec4(-51.0, -51.0, -51.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.0526315789474, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_vec4_x + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_vec4_w + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wz + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_vec4_www + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_vec4_yyw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xyzw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzyx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xxxx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_yyyy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wwww + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wzzw + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_vec4_wwwy + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_vec4_xyxx + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_vec4_zzwz + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_vec4_s + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_vec4_q + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qs + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qp + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ttq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qpt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_stpq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qpts + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ssss + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_vec4_tttt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqqq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qppq + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_vec4_qqqt + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_vec4_stss + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ppqp + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_vec4_r + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_vec4_a + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output float out0 = [ 0.825 | 1.75 | 9.0 | 24.0 | 0.25 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ar + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.0) | vec2(1.75, 1.0) | vec2(9.0, -0.5) | vec2(24.0, -32.0) | vec2(0.25, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_vec4_ab + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec2 out0 = [ vec2(0.825, 0.75) | vec2(1.75, 1.125) | vec2(9.0, -4.875) | vec2(24.0, -51.0) | vec2(0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaa + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.825, 0.825) | vec3(1.75, 1.75, 1.75) | vec3(9.0, 9.0, 9.0) | vec3(24.0, 24.0, 24.0) | vec3(0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_vec4_gga + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.5, 0.5, 0.825) | vec3(1.25, 1.25, 1.75) | vec3(-2.25, -2.25, 9.0) | vec3(64.0, 64.0, 24.0) | vec3(-0.0322580645161, -0.0322580645161, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abg + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec3 out0 = [ vec3(0.825, 0.75, 0.5) | vec3(1.75, 1.125, 1.25) | vec3(9.0, -4.875, -2.25) | vec3(24.0, -51.0, 64.0) | vec3(0.25, 0.0526315789474, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rgba + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abgr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.5, 0.0) | vec4(1.75, 1.125, 1.25, 1.0) | vec4(9.0, -4.875, -2.25, -0.5) | vec4(24.0, -51.0, 64.0, -32.0) | vec4(0.25, 0.0526315789474, -0.0322580645161, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rrrr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-32.0, -32.0, -32.0, -32.0) | vec4(-0.75, -0.75, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_gggg + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.5, 0.5, 0.5, 0.5) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(-2.25, -2.25, -2.25, -2.25) | vec4(64.0, 64.0, 64.0, 64.0) | vec4(-0.0322580645161, -0.0322580645161, -0.0322580645161, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaaa + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.825) | vec4(1.75, 1.75, 1.75, 1.75) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(24.0, 24.0, 24.0, 24.0) | vec4(0.25, 0.25, 0.25, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_vec4_abba + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.75, 0.75, 0.825) | vec4(1.75, 1.125, 1.125, 1.75) | vec4(9.0, -4.875, -4.875, 9.0) | vec4(24.0, -51.0, -51.0, 24.0) | vec4(0.25, 0.0526315789474, 0.0526315789474, 0.25) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_vec4_aaag + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.825, 0.825, 0.825, 0.5) | vec4(1.75, 1.75, 1.75, 1.25) | vec4(9.0, 9.0, 9.0, -2.25) | vec4(24.0, 24.0, 24.0, 64.0) | vec4(0.25, 0.25, 0.25, -0.0322580645161) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_vec4_rgrr + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(1.0, 1.25, 1.0, 1.0) | vec4(-0.5, -2.25, -0.5, -0.5) | vec4(-32.0, 64.0, -32.0, -32.0) | vec4(-0.75, -0.0322580645161, -0.75, -0.75) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_vec4_bbab + version 310 es + values + { + input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ]; + output vec4 out0 = [ vec4(0.75, 0.75, 0.825, 0.75) | vec4(1.125, 1.125, 1.75, 1.125) | vec4(-4.875, -4.875, 9.0, -4.875) | vec4(-51.0, -51.0, 24.0, -51.0) | vec4(0.0526315789474, 0.0526315789474, 0.25, 0.0526315789474) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_x + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yxy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_xyxx + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_yyyy + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_s + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_ss + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_st + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_ts + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_tst + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_stss + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_tttt + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_r + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_gr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-2, 0) | ivec2(64, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_grg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_rgrr + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec2_gggg + version 310 es + values + { + input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_x + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_z + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xyz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zyx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xxx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzy + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_yxy + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xzx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_xyyx + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_zzzz + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_s + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_p + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_stp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pts + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sss + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_ppp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_ppt + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_tst + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_sps + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_stts + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_pppp + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_r + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_b + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output int out0 = [ 0 | 1 | -4 | -51 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -4) | ivec2(-32, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(-4, -4) | ivec2(-51, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rgb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bgr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -2, 0) | ivec3(-51, 64, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rrr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, -32, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -4) | ivec3(-51, -51, -51) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbg + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-4, -4, -2) | ivec3(-51, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_grg + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, 0, -2) | ivec3(64, -32, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rbr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -4, 0) | ivec3(-32, -51, -32) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_rggr + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -2, 0) | ivec4(-32, 64, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_ivec3_bbbb + version 310 es + values + { + input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, -4, -4) | ivec4(-51, -51, -51, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_x + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_w + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wz + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_www + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_yyw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xyzw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzyx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xxxx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_yyyy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wwww + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wzzw + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_wwwy + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_xyxx + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_zzwz + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_s + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_q + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qs + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qp + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ttq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qpt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_stpq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qpts + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ssss + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_tttt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqqq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qppq + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_qqqt + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_stss + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ppqp + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_r + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 0 | -32 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_a + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output int out0 = [ 0 | 1 | 9 | 24 | 0 ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ar + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, 0) | ivec2(24, -32) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_ab + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(9, -4) | ivec2(24, -51) | ivec2(0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaa + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(24, 24, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_gga + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(-2, -2, 9) | ivec3(64, 64, 24) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abg + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(9, -4, -2) | ivec3(24, -51, 64) | ivec3(0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rgba + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abgr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -2, 0) | ivec4(24, -51, 64, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rrrr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, -32, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_gggg + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-2, -2, -2, -2) | ivec4(64, 64, 64, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaaa + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(24, 24, 24, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_abba + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, -4, -4, 9) | ivec4(24, -51, -51, 24) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_aaag + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, -2) | ivec4(24, 24, 24, 64) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_rgrr + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, -32) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_ivec4_bbab + version 310 es + values + { + input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ]; + output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(-4, -4, 9, -4) | ivec4(-51, -51, 24, -51) | ivec4(0, 0, 0, 0) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_x + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yxy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_xyxx + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_yyyy + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_s + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_ss + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ss; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_st + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.st; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_ts + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ts; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_tst + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_stss + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_tttt + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_r + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rg; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_gr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec2 out0 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_grg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_rgrr + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec2_gggg + version 310 es + values + { + input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_x + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_z + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.z; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xyz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zyx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xxx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzy + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzy; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_yxy + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yxy; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xzx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xzx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_xyyx + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_zzzz + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzzz; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_s + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_p + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.p; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_stp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pts + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pts; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sss + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sss; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_ppp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_ppt + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppt; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_tst + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tst; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_sps + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.sps; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_stts + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stts; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_pppp + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.pppp; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_r + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_b + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bool out0 = [ false | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.b; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec2 out0 = [ bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rgb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bgr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bgr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rrr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbb; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbg + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_grg + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.grg; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rbr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rbr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_rggr + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rggr; + ${OUTPUT} + } + "" + end + + case mediump_bvec3_bbbb + version 310 es + values + { + input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbbb; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_x + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.x; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_w + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.w; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wz + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wz; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_www + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.www; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_yyw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xyzw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyzw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzyx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzyx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xxxx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xxxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_yyyy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.yyyy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wwww + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwww; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wzzw + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wzzw; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_wwwy + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.wwwy; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_xyxx + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.xyxx; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_zzwz + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.zzwz; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_s + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.s; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_q + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.q; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qs + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qs; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qp + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qp; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ttq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ttq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qpt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_stpq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stpq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qpts + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qpts; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ssss + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ssss; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_tttt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.tttt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqqq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qppq + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qppq; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_qqqt + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.qqqt; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_stss + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.stss; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ppqp + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ppqp; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_r + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | false | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.r; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_a + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bool out0 = [ true | true | false | true | false ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.a; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ar + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ar; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_ab + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec2 out0 = [ bvec2(true, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.ab; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaa + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaa; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_gga + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gga; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abg + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abg; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rgba + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgba; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abgr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, false) | bvec4(false, false, true, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abgr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rrrr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rrrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_gggg + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.gggg; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaaa + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaaa; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_abba + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.abba; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_aaag + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, true, true, false) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.aaag; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_rgrr + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.rgrr; + ${OUTPUT} + } + "" + end + + case mediump_bvec4_bbab + version 310 es + values + { + input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(false, false, true, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ]; + } + + both "" + #version 310 es + precision highp float; + precision highp int; + + ${DECLARATIONS} + + void main() + { + ${SETUP} + out0 = in0.bbab; + ${OUTPUT} + } + "" + end + + +end # vector_swizzles