Add tests for VK_EXT_shader_atomic_float2
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 26 Aug 2020 22:47:24 +0000 (17:47 -0500)
committerAlexander Galazin <alexander.galazin@arm.com>
Tue, 27 Jul 2021 16:34:57 +0000 (18:34 +0200)
New tests:
dEQP-VK.glsl.atomic_operations.*float16*
dEQP-VK.glsl.atomic_operations.min_float*
dEQP-VK.glsl.atomic_operations.max_float*
dEQP-VK.image.atomic_operations.min*r32f*
dEQP-VK.image.atomic_operations.max*r32f*

Affects:

dEQP-VK.glsl.atomic_operations.*float*
dEQP-VK.image.atomic_operations.add*r32f*
dEQP-VK.image.atomic_operations.exchange*r32f*

Components: Vulkan

VK-GL-CTS issue: 2566

Change-Id: I7462cc74e799c2245407220fa9db7e5b659f86f4
(cherry picked from commit ca4e5aff66bccbbe88935c10e2c55a3147c1fc03)

14 files changed:
android/cts/master/vk-master-2021-03-01/glsl.txt
android/cts/master/vk-master-2021-03-01/image.txt
android/cts/master/vk-master/glsl.txt
android/cts/master/vk-master/image.txt
external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl
external/vulkancts/modules/vulkan/image/vktImageAtomicOperationTests.cpp
external/vulkancts/modules/vulkan/shaderexecutor/vktAtomicOperationTests.cpp
external/vulkancts/mustpass/master/vk-default/glsl.txt
external/vulkancts/mustpass/master/vk-default/image.txt
external/vulkancts/scripts/src/mandatory_features.txt
framework/delibs/debase/deFloat16.h
framework/delibs/debase/deMath.h
framework/delibs/decpp/CMakeLists.txt
framework/delibs/decpp/deMath.hpp [new file with mode: 0644]

index ab20c15..a376b9f 100644 (file)
@@ -567,6 +567,19 @@ dEQP-VK.glsl.builtin.precision_double.fma.compute.scalar
 dEQP-VK.glsl.builtin.precision_double.fma.compute.vec2
 dEQP-VK.glsl.builtin.precision_double.fma.compute.vec3
 dEQP-VK.glsl.builtin.precision_double.fma.compute.vec4
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_fragment_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_geometry_reference
@@ -649,6 +662,19 @@ dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_tess_ctrl_reference
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.add_float16_vertex
+dEQP-VK.glsl.atomic_operations.add_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.add_float16_fragment
+dEQP-VK.glsl.atomic_operations.add_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.add_float16_geometry
+dEQP-VK.glsl.atomic_operations.add_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.add_float16_compute
+dEQP-VK.glsl.atomic_operations.add_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.add_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.add_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.add_signed_fragment_reference
 dEQP-VK.glsl.atomic_operations.add_signed_geometry_reference
@@ -703,6 +729,19 @@ dEQP-VK.glsl.atomic_operations.add_float64_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.add_float64_compute
 dEQP-VK.glsl.atomic_operations.add_float64_compute_shared
 dEQP-VK.glsl.atomic_operations.add_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float16_vertex
+dEQP-VK.glsl.atomic_operations.min_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float16_fragment
+dEQP-VK.glsl.atomic_operations.min_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float16_geometry
+dEQP-VK.glsl.atomic_operations.min_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float16_compute
+dEQP-VK.glsl.atomic_operations.min_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed_fragment_reference
 dEQP-VK.glsl.atomic_operations.min_signed_geometry_reference
@@ -717,6 +756,19 @@ dEQP-VK.glsl.atomic_operations.min_unsigned_tess_ctrl_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float32_vertex
+dEQP-VK.glsl.atomic_operations.min_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float32_fragment
+dEQP-VK.glsl.atomic_operations.min_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float32_geometry
+dEQP-VK.glsl.atomic_operations.min_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float32_compute
+dEQP-VK.glsl.atomic_operations.min_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_fragment_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_geometry_reference
@@ -731,6 +783,32 @@ dEQP-VK.glsl.atomic_operations.min_unsigned64bit_tess_ctrl_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float64_vertex
+dEQP-VK.glsl.atomic_operations.min_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float64_fragment
+dEQP-VK.glsl.atomic_operations.min_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float64_geometry
+dEQP-VK.glsl.atomic_operations.min_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float64_compute
+dEQP-VK.glsl.atomic_operations.min_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float16_vertex
+dEQP-VK.glsl.atomic_operations.max_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float16_fragment
+dEQP-VK.glsl.atomic_operations.max_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float16_geometry
+dEQP-VK.glsl.atomic_operations.max_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float16_compute
+dEQP-VK.glsl.atomic_operations.max_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed_fragment_reference
 dEQP-VK.glsl.atomic_operations.max_signed_geometry_reference
@@ -745,6 +823,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned_tess_ctrl_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float32_vertex
+dEQP-VK.glsl.atomic_operations.max_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float32_fragment
+dEQP-VK.glsl.atomic_operations.max_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float32_geometry
+dEQP-VK.glsl.atomic_operations.max_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float32_compute
+dEQP-VK.glsl.atomic_operations.max_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_fragment_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_geometry_reference
@@ -759,6 +850,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned64bit_tess_ctrl_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float64_vertex
+dEQP-VK.glsl.atomic_operations.max_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float64_fragment
+dEQP-VK.glsl.atomic_operations.max_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float64_geometry
+dEQP-VK.glsl.atomic_operations.max_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float64_compute
+dEQP-VK.glsl.atomic_operations.max_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float64_compute_reference
 dEQP-VK.glsl.atomic_operations.and_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.and_signed_fragment_reference
 dEQP-VK.glsl.atomic_operations.and_signed_geometry_reference
index 76bbc28..488c754 100644 (file)
@@ -1748,6 +1748,8 @@ dEQP-VK.image.atomic_operations.dec.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.dec.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.dec.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.dec.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -1756,10 +1758,14 @@ dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -1768,10 +1774,14 @@ dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -1780,6 +1790,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -1788,6 +1800,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -1796,6 +1810,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -1804,6 +1820,8 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -1812,10 +1830,14 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -1824,6 +1846,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -1832,6 +1856,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -1840,6 +1866,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -1848,6 +1876,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -1856,10 +1886,14 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -1868,6 +1902,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -1876,6 +1912,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -1884,6 +1922,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -1892,6 +1932,8 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -1900,10 +1942,14 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -1912,6 +1958,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -1920,6 +1968,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -1928,6 +1978,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -1936,6 +1988,8 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -1944,10 +1998,14 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -1956,6 +2014,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -1964,6 +2024,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -1972,6 +2034,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -1980,6 +2044,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -1988,10 +2054,18 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -2000,10 +2074,14 @@ dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -2012,10 +2090,14 @@ dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -2024,6 +2106,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -2032,6 +2116,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -2040,6 +2126,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -2048,6 +2136,8 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -2056,10 +2146,14 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -2068,6 +2162,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -2076,6 +2172,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -2084,6 +2182,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -2092,6 +2192,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -2100,10 +2202,14 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -2112,6 +2218,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -2120,6 +2228,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -2128,6 +2238,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -2136,6 +2248,8 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -2144,10 +2258,14 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -2156,6 +2274,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -2164,6 +2284,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -2172,6 +2294,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -2180,6 +2304,8 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -2188,10 +2314,14 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -2200,6 +2330,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -2208,6 +2340,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -2216,6 +2350,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -2224,6 +2360,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -2232,10 +2370,16 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r64i_end_result
index 84e6871..e7b145f 100644 (file)
@@ -16534,6 +16534,19 @@ dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_geometry
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_tess_ctrl
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_tess_eval
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_compute
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_vertex
 dEQP-VK.glsl.atomic_operations.exchange_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_fragment
@@ -16664,6 +16677,19 @@ dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.add_float16_vertex
+dEQP-VK.glsl.atomic_operations.add_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.add_float16_fragment
+dEQP-VK.glsl.atomic_operations.add_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.add_float16_geometry
+dEQP-VK.glsl.atomic_operations.add_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.add_float16_compute
+dEQP-VK.glsl.atomic_operations.add_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.add_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.add_signed_vertex
 dEQP-VK.glsl.atomic_operations.add_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.add_signed_fragment
@@ -16742,6 +16768,19 @@ dEQP-VK.glsl.atomic_operations.add_float64_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.add_float64_compute
 dEQP-VK.glsl.atomic_operations.add_float64_compute_shared
 dEQP-VK.glsl.atomic_operations.add_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float16_vertex
+dEQP-VK.glsl.atomic_operations.min_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float16_fragment
+dEQP-VK.glsl.atomic_operations.min_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float16_geometry
+dEQP-VK.glsl.atomic_operations.min_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float16_compute
+dEQP-VK.glsl.atomic_operations.min_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed_vertex
 dEQP-VK.glsl.atomic_operations.min_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed_fragment
@@ -16768,6 +16807,19 @@ dEQP-VK.glsl.atomic_operations.min_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float32_vertex
+dEQP-VK.glsl.atomic_operations.min_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float32_fragment
+dEQP-VK.glsl.atomic_operations.min_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float32_geometry
+dEQP-VK.glsl.atomic_operations.min_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float32_compute
+dEQP-VK.glsl.atomic_operations.min_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_vertex
 dEQP-VK.glsl.atomic_operations.min_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_fragment
@@ -16794,6 +16846,32 @@ dEQP-VK.glsl.atomic_operations.min_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float64_vertex
+dEQP-VK.glsl.atomic_operations.min_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float64_fragment
+dEQP-VK.glsl.atomic_operations.min_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float64_geometry
+dEQP-VK.glsl.atomic_operations.min_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float64_compute
+dEQP-VK.glsl.atomic_operations.min_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float16_vertex
+dEQP-VK.glsl.atomic_operations.max_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float16_fragment
+dEQP-VK.glsl.atomic_operations.max_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float16_geometry
+dEQP-VK.glsl.atomic_operations.max_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float16_compute
+dEQP-VK.glsl.atomic_operations.max_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed_vertex
 dEQP-VK.glsl.atomic_operations.max_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed_fragment
@@ -16820,6 +16898,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float32_vertex
+dEQP-VK.glsl.atomic_operations.max_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float32_fragment
+dEQP-VK.glsl.atomic_operations.max_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float32_geometry
+dEQP-VK.glsl.atomic_operations.max_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float32_compute
+dEQP-VK.glsl.atomic_operations.max_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_vertex
 dEQP-VK.glsl.atomic_operations.max_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_fragment
@@ -16846,6 +16937,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float64_vertex
+dEQP-VK.glsl.atomic_operations.max_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float64_fragment
+dEQP-VK.glsl.atomic_operations.max_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float64_geometry
+dEQP-VK.glsl.atomic_operations.max_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float64_compute
+dEQP-VK.glsl.atomic_operations.max_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float64_compute_reference
 dEQP-VK.glsl.atomic_operations.and_signed_vertex
 dEQP-VK.glsl.atomic_operations.and_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.and_signed_fragment
index 33a9496..aec29d4 100644 (file)
@@ -17584,6 +17584,8 @@ dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17592,6 +17594,8 @@ dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64i_end_result
@@ -17600,6 +17604,8 @@ dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17608,6 +17614,8 @@ dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17616,6 +17624,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17624,6 +17634,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17632,6 +17644,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17640,6 +17654,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17648,6 +17664,8 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -17656,6 +17674,8 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17664,6 +17684,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17672,6 +17694,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17680,6 +17704,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17688,6 +17714,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17696,6 +17724,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17704,6 +17734,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64i_end_result
@@ -17712,6 +17744,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17720,6 +17754,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17728,6 +17764,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17736,6 +17774,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17744,6 +17784,8 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -17752,6 +17794,8 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17760,6 +17804,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -17768,6 +17814,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17776,6 +17824,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17784,6 +17834,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17792,6 +17844,8 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -17800,6 +17854,8 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64i_end_result
@@ -17808,6 +17864,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17816,6 +17874,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17824,6 +17884,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17832,6 +17894,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17840,6 +17904,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17848,14 +17914,22 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17864,6 +17938,8 @@ dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64i_end_result
@@ -17872,6 +17948,8 @@ dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17880,6 +17958,8 @@ dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17888,6 +17968,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17896,6 +17978,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17904,6 +17988,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17912,6 +17998,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17920,6 +18008,8 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -17928,6 +18018,8 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17936,6 +18028,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17944,6 +18038,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17952,6 +18048,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17960,6 +18058,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17968,6 +18068,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17976,6 +18078,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64i_end_result
@@ -17984,6 +18088,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17992,6 +18098,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18000,6 +18108,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18008,6 +18118,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18016,6 +18128,8 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -18024,6 +18138,8 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64i_end_result
@@ -18032,6 +18148,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -18040,6 +18158,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18048,6 +18168,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18056,6 +18178,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18064,6 +18188,8 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -18072,6 +18198,8 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64i_end_result
@@ -18080,6 +18208,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -18088,6 +18218,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18096,6 +18228,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18104,6 +18238,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18112,6 +18248,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -18120,10 +18258,16 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32ui_end_result
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32i_end_result
index fe57bdb..e014ffc 100644 (file)
@@ -336,6 +336,16 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                nextPtr  = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.pNext;
        }
 
+       vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT;
+       deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) )
+       {
+               physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>();
+               *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT;
+               nextPtr  = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext;
+       }
+
        vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT;
        deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT));
 
@@ -1876,6 +1886,15 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
+       {
+               if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        return result;
 }
 
index df45519..8c7f987 100644 (file)
@@ -580,6 +580,15 @@ void commonCheckSupport (Context& context, const tcu::TextureFormat& tcuFormat,
                if ((operation == ATOMIC_OPERATION_ADD) && !atomicFloatFeatures.shaderImageFloat32AtomicAdd)
                        TCU_THROW(NotSupportedError, "shaderImageFloat32AtomicAdd not supported");
 
+               if (operation == ATOMIC_OPERATION_MIN || operation == ATOMIC_OPERATION_MAX)
+               {
+                       context.requireDeviceFunctionality("VK_EXT_shader_atomic_float2");
+                       if (!context.getShaderAtomicFloat2FeaturesEXT().shaderImageFloat32AtomicMinMax)
+                       {
+                               TCU_THROW(NotSupportedError, "shaderImageFloat32AtomicMinMax not supported");
+                       }
+               }
+
                if ((formatProperties.optimalTilingFeatures & requiredFeatures) != requiredFeatures)
                        TCU_FAIL("Required format feature bits not supported");
 
@@ -723,7 +732,9 @@ void BinaryAtomicEndResultCase::initPrograms (SourceCollections& sourceCollectio
                const string    atomicInvocation                = getAtomicOperationShaderFuncName(m_operation) + "(u_resultImage, " + atomicCoord + compareExchangeStr + ", " + atomicArgExpr + ")";
                const string    shaderImageFormatStr    = getShaderImageFormatQualifier(m_format);
                const string    shaderImageTypeStr              = getShaderImageType(m_format, m_imageType);
-               const string    extensions                              = "#extension GL_EXT_shader_atomic_float : enable\n#extension GL_KHR_memory_scope_semantics : enable  ";
+               const string    extensions                              = "#extension GL_EXT_shader_atomic_float : enable\n"
+                                                                                                 "#extension GL_EXT_shader_atomic_float2 : enable\n"
+                                                                                                 "#extension GL_KHR_memory_scope_semantics : enable";
 
                string source = versionDecl + "\n" + extensions + "\n";
 
@@ -849,7 +860,9 @@ void BinaryAtomicIntermValuesCase::initPrograms (SourceCollections& sourceCollec
                                                                                                "(u_resultImage, " + atomicCoord + compareExchangeStr + ", " + atomicArgExpr + ")";
                const string    shaderImageFormatStr    = getShaderImageFormatQualifier(m_format);
                const string    shaderImageTypeStr              = getShaderImageType(m_format, m_imageType);
-               const string    extensions                              = "#extension GL_EXT_shader_atomic_float : enable\n#extension GL_KHR_memory_scope_semantics : enable  ";
+               const string    extensions                              = "#extension GL_EXT_shader_atomic_float : enable\n"
+                                                                                                 "#extension GL_EXT_shader_atomic_float2 : enable\n"
+                                                                                                 "#extension GL_KHR_memory_scope_semantics : enable";
 
                string source = versionDecl + "\n" + extensions + "\n"
                                                "\n";
@@ -1453,12 +1466,12 @@ bool BinaryAtomicEndResultInstance::verifyResult (Allocation&   outputBufferAlloca
        for (deInt32 x = 0; x < resultBuffer.getWidth();  x++)
        {
                const void* resultValue = resultBuffer.getPixelPtr(x, y, z);
-               deUint32 floatToUnsignedValue = 0;
+               deInt32 floatToIntValue = 0;
                bool isFloatValue = false;
                if (isFloatFormat(mapTextureFormat(m_format)))
                {
                        isFloatValue = true;
-                       floatToUnsignedValue = static_cast<deUint32>(*((float*)resultValue));
+                       floatToIntValue = static_cast<deInt32>(*((float*)resultValue));
                }
 
                if (isOrderIndependentAtomicOperation(m_operation))
@@ -1492,7 +1505,7 @@ bool BinaryAtomicEndResultInstance::verifyResult (Allocation&     outputBufferAlloca
                        else
                        {
                                // 32-bit floating point
-                               if (!isValueCorrect<deUint32>(floatToUnsignedValue, x, y, z, gridSize, extendedGridSize))
+                               if (!isValueCorrect<deInt32>(floatToIntValue, x, y, z, gridSize, extendedGridSize))
                                        return false;
                        }
                }
@@ -1507,7 +1520,7 @@ bool BinaryAtomicEndResultInstance::verifyResult (Allocation&     outputBufferAlloca
                                matchFound = is64Bit ?
                                        (*((deInt64*)resultValue) == getAtomicFuncArgument<deInt64>(m_operation, gid, extendedGridSize)) :
                                        isFloatValue ?
-                                       floatToUnsignedValue == getAtomicFuncArgument<deUint32>(m_operation, gid, extendedGridSize) :
+                                       floatToIntValue == getAtomicFuncArgument<deInt32>(m_operation, gid, extendedGridSize) :
                                        (*((deInt32*)resultValue) == getAtomicFuncArgument<deInt32>(m_operation, gid, extendedGridSize));
 
                        }
@@ -1526,7 +1539,7 @@ bool BinaryAtomicEndResultInstance::verifyResult (Allocation&     outputBufferAlloca
                                matchFound = is64Bit ?
                                        (*((deInt64*)resultValue) == getAtomicFuncArgument<deInt64>(m_operation, gid, extendedGridSize)) :
                                        isFloatValue ?
-                                       floatToUnsignedValue == getAtomicFuncArgument<deUint32>(m_operation, gid, extendedGridSize) :
+                                       floatToIntValue == getAtomicFuncArgument<deInt32>(m_operation, gid, extendedGridSize) :
                                        (*((deInt32*)resultValue) == getAtomicFuncArgument<deInt32>(m_operation, gid, extendedGridSize));
                        }
 
@@ -1802,7 +1815,7 @@ bool BinaryAtomicIntermValuesInstance::verifyResult (Allocation&  outputBufferAll
                else
                {
                        // 32-bit floating point
-                       if (!areValuesCorrect<deUint32>(resultBuffer, true, x, y, z, gridSize, extendedGridSize))
+                       if (!areValuesCorrect<deInt32>(resultBuffer, true, x, y, z, gridSize, extendedGridSize))
                                return false;
                }
        }
@@ -1975,10 +1988,13 @@ tcu::TestCaseGroup* createImageAtomicOperationTests (tcu::TestContext& testCtx)
                                                        if (backingType.type == ImageBackingType::SPARSE && (vkImageType != VK_IMAGE_TYPE_2D && vkImageType != VK_IMAGE_TYPE_3D))
                                                                continue;
 
-                                                       // Only ADD and EXCHANGE are supported on floating-point
+                                                       // Only some operations are supported on floating-point
                                                        if (format.type == tcu::TextureFormat::FLOAT)
                                                        {
-                                                               if (operation != ATOMIC_OPERATION_ADD && operation != ATOMIC_OPERATION_EXCHANGE)
+                                                               if (operation != ATOMIC_OPERATION_ADD &&
+                                                                       operation != ATOMIC_OPERATION_EXCHANGE &&
+                                                                       operation != ATOMIC_OPERATION_MIN &&
+                                                                       operation != ATOMIC_OPERATION_MAX)
                                                                {
                                                                        continue;
                                                                }
index dd16c4c..7462387 100644 (file)
@@ -37,6 +37,8 @@
 #include "tcuStringTemplate.hpp"
 #include "tcuResultCollector.hpp"
 
+#include "deFloat16.h"
+#include "deMath.hpp"
 #include "deStringUtil.hpp"
 #include "deSharedPtr.hpp"
 #include "deRandom.hpp"
@@ -211,7 +213,8 @@ enum
 
 enum DataType
 {
-       DATA_TYPE_INT32 = 0,
+       DATA_TYPE_FLOAT16 = 0,
+       DATA_TYPE_INT32,
        DATA_TYPE_UINT32,
        DATA_TYPE_FLOAT32,
        DATA_TYPE_INT64,
@@ -225,6 +228,7 @@ std::string dataType2Str(DataType type)
 {
        static const char* const s_names[] =
        {
+               "float16_t",
                "int",
                "uint",
                "float",
@@ -345,6 +349,18 @@ public:
 
 };
 
+template<typename T>
+bool nanSafeSloppyEquals(T x, T y)
+{
+       if (deIsIEEENaN(x) && deIsIEEENaN(y))
+               return true;
+
+       if (deIsIEEENaN(x) || deIsIEEENaN(y))
+               return false;
+
+       return fabs(deToDouble(x) - deToDouble(y)) < 0.00001;
+}
+
 template<typename dataTypeT>
 class TestBufferFloatingPoint : public BufferInterface
 {
@@ -364,7 +380,7 @@ public:
                T                       input[NUM_ELEMENTS];
                T                       compare[NUM_ELEMENTS];
                T                       output[NUM_ELEMENTS];
-               T                       invocationHitCount[NUM_ELEMENTS];
+               deInt32         invocationHitCount[NUM_ELEMENTS];
                deInt32         index;
        };
 
@@ -385,19 +401,35 @@ public:
 
                for (int i = 0; i < NUM_ELEMENTS / 2; i++)
                {
-                       m_ptr->inout[i] = static_cast<dataTypeT>(rnd.getFloat());
-                       // The first half of compare elements match with every even index.
-                       // The second half matches with odd indices. This causes the
-                       // overlapping operations to only select one.
-                       m_ptr->compare[i] = m_ptr->inout[i] + (dataTypeT)(i % 2);
-                       m_ptr->compare[i + NUM_ELEMENTS / 2] = m_ptr->inout[i] + (dataTypeT)(1 - (i % 2));
+                       m_ptr->inout[i] = deToFloatType<dataTypeT>(rnd.getFloat());
+                       // These aren't used by any of the float tests
+                       m_ptr->compare[i] = deToFloatType<dataTypeT>(0.0);
                }
+               // Add special cases for NaN and +/-0
+               // 0: min(sNaN, x)
+               m_ptr->inout[0] = deSignalingNaN<dataTypeT>();
+               // 1: min(x, sNaN)
+               m_ptr->input[1 * 2 + 0] = deSignalingNaN<dataTypeT>();
+               // 2: min(qNaN, x)
+               m_ptr->inout[2] = deQuietNaN<dataTypeT>();
+               // 3: min(x, qNaN)
+               m_ptr->input[3 * 2 + 0] = deQuietNaN<dataTypeT>();
+               // 4: min(NaN, NaN)
+               m_ptr->inout[4] = deSignalingNaN<dataTypeT>();
+               m_ptr->input[4 * 2 + 0] = deQuietNaN<dataTypeT>();
+               m_ptr->input[4 * 2 + 1] = deQuietNaN<dataTypeT>();
+               // 5: min(+0, -0)
+               m_ptr->inout[5] = deToFloatType<dataTypeT>(-0.0);
+               m_ptr->input[5 * 2 + 0] = deToFloatType<dataTypeT>(0.0);
+               m_ptr->input[5 * 2 + 1] = deToFloatType<dataTypeT>(0.0);
+
                for (int i = 0; i < NUM_ELEMENTS; i++)
                {
-                       m_ptr->input[i] = static_cast<dataTypeT>(rnd.getFloat());
+                       m_ptr->input[i] = deToFloatType<dataTypeT>(rnd.getFloat());
                        m_ptr->output[i] = pattern;
                        m_ptr->invocationHitCount[i] = 0;
                }
+
                m_ptr->index = 0;
 
                // Take a copy to be used when calculating expected values.
@@ -424,11 +456,9 @@ public:
 
                bool compare(T inout, T output0, T output1)
                {
-                       T diff1 = static_cast<T>(fabs(m_inout - inout));
-                       T diff2 = static_cast<T>(fabs(m_output[0] - output0));
-                       T diff3 = static_cast<T>(fabs(m_output[1] - output1));
-                       const T epsilon = static_cast<T>(0.00001);
-                       return (diff1 < epsilon) && (diff2 < epsilon) && (diff3 < epsilon);
+                       return nanSafeSloppyEquals(m_inout, inout) &&
+                              nanSafeSloppyEquals(m_output[0], output0) &&
+                              nanSafeSloppyEquals(m_output[1], output1);
                }
        };
 
@@ -447,6 +477,8 @@ static BufferInterface* createTestBuffer(DataType type, AtomicOperation atomicOp
 {
        switch (type)
        {
+       case DATA_TYPE_FLOAT16:
+               return new TestBufferFloatingPoint<deFloat16>(atomicOp);
        case DATA_TYPE_INT32:
                return new TestBuffer<deInt32>(atomicOp);
        case DATA_TYPE_UINT32:
@@ -591,6 +623,83 @@ void TestBuffer<T>::checkOperation (const BufferData<T>&   original,
        }
 }
 
+template<typename T>
+void handleExceptionalFloatMinMaxValues(vector<T> &values, T x, T y)
+{
+
+       if (deIsSignalingNaN(x) && deIsSignalingNaN(y))
+       {
+               values.push_back(deQuietNaN<T>());
+               values.push_back(deSignalingNaN<T>());
+       }
+       else if (deIsSignalingNaN(x))
+       {
+               values.push_back(deQuietNaN<T>());
+               values.push_back(deSignalingNaN<T>());
+               if (!deIsIEEENaN(y))
+                       values.push_back(y);
+       }
+       else if (deIsSignalingNaN(y))
+       {
+               values.push_back(deQuietNaN<T>());
+               values.push_back(deSignalingNaN<T>());
+               if (!deIsIEEENaN(x))
+                       values.push_back(x);
+       }
+       else if (deIsIEEENaN(x) && deIsIEEENaN(y))
+       {
+               // Both quiet NaNs
+               values.push_back(deQuietNaN<T>());
+       }
+       else if (deIsIEEENaN(x))
+       {
+               // One quiet NaN and one non-NaN.
+               values.push_back(y);
+       }
+       else if (deIsIEEENaN(y))
+       {
+               // One quiet NaN and one non-NaN.
+               values.push_back(x);
+       }
+       else if ((deIsPositiveZero(x) && deIsNegativeZero(y)) || (deIsNegativeZero(x) && deIsPositiveZero(y)))
+       {
+               values.push_back(deToFloatType<T>(0.0));
+               values.push_back(deToFloatType<T>(-0.0));
+       }
+}
+
+template<typename T>
+T floatAdd(T x, T y)
+{
+       if (deIsIEEENaN(x) || deIsIEEENaN(y))
+               return deQuietNaN<T>();
+       return deToFloatType<T>(deToDouble(x) + deToDouble(y));
+}
+
+template<typename T>
+vector<T> floatMinValues(T x, T y)
+{
+       vector<T> values;
+       handleExceptionalFloatMinMaxValues(values, x, y);
+       if (values.empty())
+       {
+               values.push_back(deToDouble(x) < deToDouble(y) ? x : y);
+       }
+       return values;
+}
+
+template<typename T>
+vector<T> floatMaxValues(T x, T y)
+{
+       vector<T> values;
+       handleExceptionalFloatMinMaxValues(values, x, y);
+       if (values.empty())
+       {
+               values.push_back(deToDouble(x) > deToDouble(y) ? x : y);
+       }
+       return values;
+}
+
 // Use template to handle both float and double cases. SPIR-V should
 // have separate operations for both.
 template<typename T>
@@ -626,8 +735,60 @@ void TestBufferFloatingPoint<T>::checkOperationFloatingPoint(const BufferDataFlo
                {
                case ATOMIC_OP_ADD:
                {
-                       exp.push_back(Expected<T>(originalInout + input0 + input1, originalInout, originalInout + input0));
-                       exp.push_back(Expected<T>(originalInout + input0 + input1, originalInout + input1, originalInout));
+                       exp.push_back(Expected<T>(floatAdd(floatAdd(originalInout, input0), input1), originalInout, floatAdd(originalInout, input0)));
+                       exp.push_back(Expected<T>(floatAdd(floatAdd(originalInout, input0), input1), floatAdd(originalInout, input1), originalInout));
+               }
+               break;
+
+               case ATOMIC_OP_MIN:
+               {
+                       // The case where input0 is combined first
+                       vector<T> minOriginalAndInput0 = floatMinValues(originalInout, input0);
+                       for (T x : minOriginalAndInput0)
+                       {
+                               vector<T> minAll = floatMinValues(x, input1);
+                               for (T y : minAll)
+                               {
+                                       exp.push_back(Expected<T>(y, originalInout, x));
+                               }
+                       }
+
+                       // The case where input1 is combined first
+                       vector<T> minOriginalAndInput1 = floatMinValues(originalInout, input1);
+                       for (T x : minOriginalAndInput1)
+                       {
+                               vector<T> minAll = floatMinValues(x, input0);
+                               for (T y : minAll)
+                               {
+                                       exp.push_back(Expected<T>(y, x, originalInout));
+                               }
+                       }
+               }
+               break;
+
+               case ATOMIC_OP_MAX:
+               {
+                       // The case where input0 is combined first
+                       vector<T> minOriginalAndInput0 = floatMaxValues(originalInout, input0);
+                       for (T x : minOriginalAndInput0)
+                       {
+                               vector<T> minAll = floatMaxValues(x, input1);
+                               for (T y : minAll)
+                               {
+                                       exp.push_back(Expected<T>(y, originalInout, x));
+                               }
+                       }
+
+                       // The case where input1 is combined first
+                       vector<T> minOriginalAndInput1 = floatMaxValues(originalInout, input1);
+                       for (T x : minOriginalAndInput1)
+                       {
+                               vector<T> minAll = floatMaxValues(x, input0);
+                               for (T y : minAll)
+                               {
+                                       exp.push_back(Expected<T>(y, x, originalInout));
+                               }
+                       }
                }
                break;
 
@@ -648,17 +809,37 @@ void TestBufferFloatingPoint<T>::checkOperationFloatingPoint(const BufferDataFlo
                const T resOutput1 = result.output[elementNdx + NUM_ELEMENTS / 2];
 
 
-               if (!exp[0].compare(resIo, resOutput0, resOutput1) && !exp[1].compare(resIo, resOutput0, resOutput1))
+               bool hasMatch = false;
+               for (Expected<T> e : exp)
+               {
+                       if (e.compare(resIo, resOutput0, resOutput1))
+                       {
+                               hasMatch = true;
+                               break;
+                       }
+               }
+               if (!hasMatch)
                {
                        std::ostringstream errorMessage;
                        errorMessage << "ERROR: Result value check failed at index " << elementNdx
-                               << ". Expected one of the two outcomes: InOut = " << exp[0].m_inout
-                               << ", Output0 = " << exp[0].m_output[0] << ", Output1 = "
-                               << exp[0].m_output[1] << ", or InOut = " << exp[1].m_inout
-                               << ", Output0 = " << exp[1].m_output[0] << ", Output1 = "
-                               << exp[1].m_output[1] << ". Got: InOut = " << resIo
-                               << ", Output0 = " << resOutput0 << ", Output1 = "
-                               << resOutput1 << ". Using Input0 = " << original.input[elementNdx]
+                               << ". Expected one of the outcomes:";
+
+                       bool first = true;
+                       for (Expected<T> e : exp)
+                       {
+                               if (!first)
+                                       errorMessage << ", or";
+                               first = false;
+
+                               errorMessage << " InOut = " << e.m_inout
+                                       << ", Output0 = " << e.m_output[0]
+                                       << ", Output1 = " << e.m_output[1];
+                       }
+
+                       errorMessage << ". Got: InOut = " << resIo
+                               << ", Output0 = " << resOutput0
+                               << ", Output1 = " << resOutput1
+                               << ". Using Input0 = " << original.input[elementNdx]
                                << " and Input1 = " << original.input[elementNdx + NUM_ELEMENTS / 2] << ".";
 
                        resultCollector.fail(errorMessage.str());
@@ -898,6 +1079,62 @@ void AtomicOperationCase::checkSupport (Context& ctx) const
                }
        }
 
+       if (m_dataType == DATA_TYPE_FLOAT16)
+       {
+               ctx.requireDeviceFunctionality("VK_EXT_shader_atomic_float2");
+               if (m_atomicOp == ATOMIC_OP_ADD)
+               {
+                       if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderSharedFloat16AtomicAdd)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point shared add atomic operation not supported");
+                               }
+                       }
+                       else
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderBufferFloat16AtomicAdd)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point buffer add atomic operation not supported");
+                               }
+                       }
+               }
+               if (m_atomicOp == ATOMIC_OP_MIN || m_atomicOp == ATOMIC_OP_MAX)
+               {
+                       if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderSharedFloat16AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point shared min/max atomic operation not supported");
+                               }
+                       }
+                       else
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderBufferFloat16AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point buffer min/max atomic operation not supported");
+                               }
+                       }
+               }
+               if (m_atomicOp == ATOMIC_OP_EXCHANGE)
+               {
+                       if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderSharedFloat16Atomics)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point shared atomic operations not supported");
+                               }
+                       }
+                       else
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderBufferFloat16Atomics)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat16: 16-bit floating point buffer atomic operations not supported");
+                               }
+                       }
+               }
+       }
+
        if (m_dataType == DATA_TYPE_FLOAT32)
        {
                ctx.requireDeviceFunctionality("VK_EXT_shader_atomic_float");
@@ -918,6 +1155,24 @@ void AtomicOperationCase::checkSupport (Context& ctx) const
                                }
                        }
                }
+               if (m_atomicOp == ATOMIC_OP_MIN || m_atomicOp == ATOMIC_OP_MAX)
+               {
+                       ctx.requireDeviceFunctionality("VK_EXT_shader_atomic_float2");
+                       if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderSharedFloat32AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat32: 32-bit floating point shared min/max atomic operation not supported");
+                               }
+                       }
+                       else
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderBufferFloat32AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat32: 32-bit floating point buffer min/max atomic operation not supported");
+                               }
+                       }
+               }
                if (m_atomicOp == ATOMIC_OP_EXCHANGE)
                {
                        if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
@@ -957,6 +1212,24 @@ void AtomicOperationCase::checkSupport (Context& ctx) const
                                }
                        }
                }
+               if (m_atomicOp == ATOMIC_OP_MIN || m_atomicOp == ATOMIC_OP_MAX)
+               {
+                       ctx.requireDeviceFunctionality("VK_EXT_shader_atomic_float2");
+                       if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderSharedFloat64AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat64: 64-bit floating point shared min/max atomic operation not supported");
+                               }
+                       }
+                       else
+                       {
+                               if (!ctx.getShaderAtomicFloat2FeaturesEXT().shaderBufferFloat64AtomicMinMax)
+                               {
+                                       TCU_THROW(NotSupportedError, "VkShaderAtomicFloat64: 64-bit floating point buffer min/max atomic operation not supported");
+                               }
+                       }
+               }
                if (m_atomicOp == ATOMIC_OP_EXCHANGE)
                {
                        if (m_shaderType.getMemoryType() == AtomicMemoryType::SHARED)
@@ -1138,10 +1411,12 @@ void AtomicOperationCase::createShaderSpec (void)
                        << "#extension GL_EXT_shader_atomic_int64 : enable\n"
                        ;
        }
-       else if ((m_dataType == DATA_TYPE_FLOAT32) || (m_dataType == DATA_TYPE_FLOAT64))
+       else if ((m_dataType == DATA_TYPE_FLOAT16) || (m_dataType == DATA_TYPE_FLOAT32) || (m_dataType == DATA_TYPE_FLOAT64))
        {
                extensions
+                       << "#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable\n"
                        << "#extension GL_EXT_shader_atomic_float : enable\n"
+                       << "#extension GL_EXT_shader_atomic_float2 : enable\n"
                        << "#extension GL_KHR_memory_scope_semantics : enable\n"
                        ;
        }
@@ -1213,6 +1488,7 @@ void addAtomicOperationTests (tcu::TestCaseGroup* atomicOperationTestsGroup)
                const char*             description;
        } dataSign[] =
        {
+               { DATA_TYPE_FLOAT16,"float16",                  "Tests using 16-bit float data"                         },
                { DATA_TYPE_INT32,      "signed",                       "Tests using signed data (int)"                         },
                { DATA_TYPE_UINT32,     "unsigned",                     "Tests using unsigned data (uint)"                      },
                { DATA_TYPE_FLOAT32,"float32",                  "Tests using 32-bit float data"                         },
@@ -1244,9 +1520,12 @@ void addAtomicOperationTests (tcu::TestCaseGroup* atomicOperationTestsGroup)
                        for (int shaderTypeNdx = 0; shaderTypeNdx < DE_LENGTH_OF_ARRAY(shaderTypes); shaderTypeNdx++)
                        {
                                // Only ADD and EXCHANGE are supported on floating-point
-                               if (dataSign[signNdx].dataType == DATA_TYPE_FLOAT32 || dataSign[signNdx].dataType == DATA_TYPE_FLOAT64)
+                               if (dataSign[signNdx].dataType == DATA_TYPE_FLOAT16 || dataSign[signNdx].dataType == DATA_TYPE_FLOAT32 || dataSign[signNdx].dataType == DATA_TYPE_FLOAT64)
                                {
-                                       if (atomicOp[opNdx].value != ATOMIC_OP_ADD && atomicOp[opNdx].value != ATOMIC_OP_EXCHANGE)
+                                       if (atomicOp[opNdx].value != ATOMIC_OP_ADD &&
+                                           atomicOp[opNdx].value != ATOMIC_OP_MIN &&
+                                           atomicOp[opNdx].value != ATOMIC_OP_MAX &&
+                                           atomicOp[opNdx].value != ATOMIC_OP_EXCHANGE)
                                        {
                                                continue;
                                        }
index 073297d..9137e52 100644 (file)
@@ -16582,6 +16582,19 @@ dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_geometry
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_tess_ctrl
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_tess_eval
 dEQP-VK.glsl.opaque_type_indexing.atomic_counter.dynamically_uniform_compute
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex
+dEQP-VK.glsl.atomic_operations.exchange_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment
+dEQP-VK.glsl.atomic_operations.exchange_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry
+dEQP-VK.glsl.atomic_operations.exchange_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.exchange_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.exchange_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_vertex
 dEQP-VK.glsl.atomic_operations.exchange_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.exchange_signed_fragment
@@ -16712,6 +16725,19 @@ dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.comp_swap_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.add_float16_vertex
+dEQP-VK.glsl.atomic_operations.add_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.add_float16_fragment
+dEQP-VK.glsl.atomic_operations.add_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.add_float16_geometry
+dEQP-VK.glsl.atomic_operations.add_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.add_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.add_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.add_float16_compute
+dEQP-VK.glsl.atomic_operations.add_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.add_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.add_signed_vertex
 dEQP-VK.glsl.atomic_operations.add_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.add_signed_fragment
@@ -16790,6 +16816,19 @@ dEQP-VK.glsl.atomic_operations.add_float64_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.add_float64_compute
 dEQP-VK.glsl.atomic_operations.add_float64_compute_shared
 dEQP-VK.glsl.atomic_operations.add_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float16_vertex
+dEQP-VK.glsl.atomic_operations.min_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float16_fragment
+dEQP-VK.glsl.atomic_operations.min_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float16_geometry
+dEQP-VK.glsl.atomic_operations.min_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float16_compute
+dEQP-VK.glsl.atomic_operations.min_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed_vertex
 dEQP-VK.glsl.atomic_operations.min_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed_fragment
@@ -16816,6 +16855,19 @@ dEQP-VK.glsl.atomic_operations.min_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float32_vertex
+dEQP-VK.glsl.atomic_operations.min_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float32_fragment
+dEQP-VK.glsl.atomic_operations.min_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float32_geometry
+dEQP-VK.glsl.atomic_operations.min_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float32_compute
+dEQP-VK.glsl.atomic_operations.min_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_vertex
 dEQP-VK.glsl.atomic_operations.min_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.min_signed64bit_fragment
@@ -16842,6 +16894,32 @@ dEQP-VK.glsl.atomic_operations.min_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.min_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.min_float64_vertex
+dEQP-VK.glsl.atomic_operations.min_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.min_float64_fragment
+dEQP-VK.glsl.atomic_operations.min_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.min_float64_geometry
+dEQP-VK.glsl.atomic_operations.min_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.min_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.min_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.min_float64_compute
+dEQP-VK.glsl.atomic_operations.min_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.min_float64_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float16_vertex
+dEQP-VK.glsl.atomic_operations.max_float16_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float16_fragment
+dEQP-VK.glsl.atomic_operations.max_float16_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float16_geometry
+dEQP-VK.glsl.atomic_operations.max_float16_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float16_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float16_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float16_compute
+dEQP-VK.glsl.atomic_operations.max_float16_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float16_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed_vertex
 dEQP-VK.glsl.atomic_operations.max_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed_fragment
@@ -16868,6 +16946,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float32_vertex
+dEQP-VK.glsl.atomic_operations.max_float32_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float32_fragment
+dEQP-VK.glsl.atomic_operations.max_float32_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float32_geometry
+dEQP-VK.glsl.atomic_operations.max_float32_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float32_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float32_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float32_compute
+dEQP-VK.glsl.atomic_operations.max_float32_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float32_compute_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_vertex
 dEQP-VK.glsl.atomic_operations.max_signed64bit_vertex_reference
 dEQP-VK.glsl.atomic_operations.max_signed64bit_fragment
@@ -16894,6 +16985,19 @@ dEQP-VK.glsl.atomic_operations.max_unsigned64bit_tess_eval_reference
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_shared
 dEQP-VK.glsl.atomic_operations.max_unsigned64bit_compute_reference
+dEQP-VK.glsl.atomic_operations.max_float64_vertex
+dEQP-VK.glsl.atomic_operations.max_float64_vertex_reference
+dEQP-VK.glsl.atomic_operations.max_float64_fragment
+dEQP-VK.glsl.atomic_operations.max_float64_fragment_reference
+dEQP-VK.glsl.atomic_operations.max_float64_geometry
+dEQP-VK.glsl.atomic_operations.max_float64_geometry_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl
+dEQP-VK.glsl.atomic_operations.max_float64_tess_ctrl_reference
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval
+dEQP-VK.glsl.atomic_operations.max_float64_tess_eval_reference
+dEQP-VK.glsl.atomic_operations.max_float64_compute
+dEQP-VK.glsl.atomic_operations.max_float64_compute_shared
+dEQP-VK.glsl.atomic_operations.max_float64_compute_reference
 dEQP-VK.glsl.atomic_operations.and_signed_vertex
 dEQP-VK.glsl.atomic_operations.and_signed_vertex_reference
 dEQP-VK.glsl.atomic_operations.and_signed_fragment
index 33a9496..aec29d4 100644 (file)
@@ -17584,6 +17584,8 @@ dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17592,6 +17594,8 @@ dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d.transfer.normal_read.normal_img.r64i_end_result
@@ -17600,6 +17604,8 @@ dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17608,6 +17614,8 @@ dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.1d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17616,6 +17624,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17624,6 +17634,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17632,6 +17644,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17640,6 +17654,8 @@ dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17648,6 +17664,8 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -17656,6 +17674,8 @@ dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17664,6 +17684,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17672,6 +17694,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17680,6 +17704,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17688,6 +17714,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17696,6 +17724,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17704,6 +17734,8 @@ dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.2d_array.transfer.normal_read.sparse_img.r64i_end_result
@@ -17712,6 +17744,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17720,6 +17754,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17728,6 +17764,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17736,6 +17774,8 @@ dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17744,6 +17784,8 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -17752,6 +17794,8 @@ dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.3d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17760,6 +17804,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -17768,6 +17814,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17776,6 +17824,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17784,6 +17834,8 @@ dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17792,6 +17844,8 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -17800,6 +17854,8 @@ dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube.transfer.normal_read.sparse_img.r64i_end_result
@@ -17808,6 +17864,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17816,6 +17874,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17824,6 +17884,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17832,6 +17894,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17840,6 +17904,8 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17848,14 +17914,22 @@ dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.min.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.min.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17864,6 +17938,8 @@ dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d.transfer.normal_read.normal_img.r64i_end_result
@@ -17872,6 +17948,8 @@ dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17880,6 +17958,8 @@ dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.1d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17888,6 +17968,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17896,6 +17978,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17904,6 +17988,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17912,6 +17998,8 @@ dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17920,6 +18008,8 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.normal_img.r64i_end_result
@@ -17928,6 +18018,8 @@ dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d.transfer.normal_read.sparse_img.r64i_end_result
@@ -17936,6 +18028,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -17944,6 +18038,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -17952,6 +18048,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -17960,6 +18058,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -17968,6 +18068,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.normal_img.r64i_end_result
@@ -17976,6 +18078,8 @@ dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.2d_array.transfer.normal_read.sparse_img.r64i_end_result
@@ -17984,6 +18088,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.normal_img.r64i_end_result
@@ -17992,6 +18098,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18000,6 +18108,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18008,6 +18118,8 @@ dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18016,6 +18128,8 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.normal_img.r64i_end_result
@@ -18024,6 +18138,8 @@ dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_end
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.3d.transfer.normal_read.sparse_img.r64i_end_result
@@ -18032,6 +18148,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.normal_img.r64i_end_result
@@ -18040,6 +18158,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18048,6 +18168,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18056,6 +18178,8 @@ dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18064,6 +18188,8 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.normal_img.r64i_end_result
@@ -18072,6 +18198,8 @@ dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_e
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube.transfer.normal_read.sparse_img.r64i_end_result
@@ -18080,6 +18208,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.normal_img.r64i_end_result
@@ -18088,6 +18218,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.normal_read.sparse_img.r64i_end_result
@@ -18096,6 +18228,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.normal_img.r64i_end_result
@@ -18104,6 +18238,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.notransfer.sparse_read.sparse_img.r64i_end_result
@@ -18112,6 +18248,8 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.normal_img.r64i_end_result
@@ -18120,10 +18258,16 @@ dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32i_intermediate_values
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64ui_intermediate_values
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_end_result
 dEQP-VK.image.atomic_operations.max.cube_array.transfer.normal_read.sparse_img.r64i_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.notransfer.normal_read.normal_img.r32f_intermediate_values
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_end_result
+dEQP-VK.image.atomic_operations.max.buffer.transfer.normal_read.normal_img.r32f_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32ui_end_result
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32ui_intermediate_values
 dEQP-VK.image.atomic_operations.and.1d.notransfer.normal_read.normal_img.r32i_end_result
index f30c336..d548d81 100644 (file)
@@ -148,3 +148,4 @@ VkPhysicalDeviceMultiDrawFeaturesEXT                                                FEATURES ( multiDraw )                                                                                  REQUI
 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR    FEATURES ( shaderSubgroupUniformControlFlow )                                   REQUIREMENTS ( VK_KHR_shader_subgroup_uniform_control_flow )
 VkPhysicalDevicePresentIdFeaturesKHR                                           FEATURES ( presentId )                                                                                  REQUIREMENTS ( VK_KHR_present_id )
 VkPhysicalDevicePresentWaitFeaturesKHR                                         FEATURES ( presentWait )                                                                                REQUIREMENTS ( VK_KHR_present_wait )
+VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT                          FEATURES ( shaderImageFloat32AtomicMinMax )                                                     REQUIREMENTS ( VK_EXT_shader_atomic_float2 physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
index 576b1b7..c43f92b 100644 (file)
@@ -59,6 +59,37 @@ float                deFloat16To32           (deFloat16 val16);
  * \return Converted 64-bit floating-point value.
  *//*--------------------------------------------------------------------*/
 double         deFloat16To64           (deFloat16 val16);
+
+DE_INLINE deBool deHalfIsPositiveZero(deFloat16 x)
+{
+       return deFloat16To32(x) == 0 && (x >> 15) == 0;
+}
+
+DE_INLINE deBool deHalfIsNegativeZero(deFloat16 x)
+{
+       return deFloat16To32(x) == 0 && (x >> 15) != 0;
+}
+
+static const deFloat16 deFloat16SignalingNaN = 0x7c01;
+static const deFloat16 deFloat16QuietNaN = 0x7e01;
+
+DE_INLINE deBool deHalfIsIEEENaN(deFloat16 x)
+{
+       deUint16 e = (x & 0x7c00u) >> 10;
+       deUint16 m = (x & 0x03ffu);
+       return e == 0x1f && m != 0;
+}
+
+DE_INLINE deBool deHalfIsSignalingNaN(deFloat16 x)
+{
+       return deHalfIsIEEENaN(x) && (x & (1u << 9)) == 0;
+}
+
+DE_INLINE deBool deHalfIsQuietNaN(deFloat16 x)
+{
+       return deHalfIsIEEENaN(x) && (x & (1u << 9)) != 0;
+}
+
 DE_END_EXTERN_C
 
 #endif /* _DEFLOAT16_H */
index f9ea13e..cd926c5 100644 (file)
@@ -24,6 +24,7 @@
  *//*--------------------------------------------------------------------*/
 
 #include "deDefs.h"
+#include "deMemory.h"
 
 #include <math.h>
 #include <float.h>
@@ -69,6 +70,82 @@ DE_INLINE deBool     deFloatIsNaN            (float x)               { return (x != x); }
 DE_INLINE int          deIsInf                         (double x)              { return (x > DBL_MAX) - (x < -DBL_MAX); }
 DE_INLINE deBool       deIsNaN                         (double x)              { return (x != x); }
 
+DE_INLINE deUint32 deFloatBitsToUint32(float x)
+{
+       deUint32 bits;
+       deMemcpy((void *)&bits, (void *)&x, 4);
+       return bits;
+}
+
+DE_INLINE deUint64 deDoubleBitsToUint64(double x)
+{
+       deUint64 bits;
+       deMemcpy((void *)&bits, (void *)&x, 8);
+       return bits;
+}
+
+DE_INLINE deBool deFloatIsPositiveZero(float x)
+{
+       return x == 0 && (deFloatBitsToUint32(x) >> 31) == 0;
+}
+
+DE_INLINE deBool deDoubleIsPositiveZero(double x)
+{
+       return x == 0 && (deDoubleBitsToUint64(x) >> 63) == 0;
+}
+
+DE_INLINE deBool deFloatIsNegativeZero(float x)
+{
+       return x == 0 && (deFloatBitsToUint32(x) >> 31) != 0;
+}
+
+DE_INLINE deBool deDoubleIsNegativeZero(double x)
+{
+       return x == 0 && (deDoubleBitsToUint64(x) >> 63) != 0;
+}
+
+DE_INLINE deBool deFloatIsIEEENaN(float x)
+{
+       deUint32 e = (deFloatBitsToUint32(x) & 0x7f800000u) >> 23;
+       deUint32 m = (deFloatBitsToUint32(x) & 0x007fffffu);
+       return e == 0xff && m != 0;
+}
+
+DE_INLINE deBool deDoubleIsIEEENaN(double x)
+{
+       deUint64 e = (deDoubleBitsToUint64(x) & 0x7ff0000000000000ull) >> 52;
+       deUint64 m = (deDoubleBitsToUint64(x) & 0x000fffffffffffffull);
+       return e == 0x7ff && m != 0;
+}
+
+/* \note The definition used for signaling NaN here is valid for ARM and
+ * x86 but possibly not for other platforms.
+ *
+ * These are defined as overloads so that they can be used in templated
+ * code without risking a type conversion which would triggern an exception
+ * on a signaling NaN.  We don't use deIsNan in these helpers because they
+ * do a comparison operation which may also trigger exceptions.
+ */
+DE_INLINE deBool deFloatIsSignalingNaN(float x)
+{
+       return deFloatIsIEEENaN(x) && (deFloatBitsToUint32(x) & (1u << 22)) == 0;
+}
+
+DE_INLINE deBool deDoubleIsSignalingNaN(double x)
+{
+       return deDoubleIsIEEENaN(x) && (deDoubleBitsToUint64(x) & (1ull << 51)) == 0;
+}
+
+DE_INLINE deBool deFloatIsQuietNaN(float x)
+{
+       return deFloatIsIEEENaN(x) && (deFloatBitsToUint32(x) & (1u << 22)) != 0;
+}
+
+DE_INLINE deBool deDoubleIsQuietNaN(double x)
+{
+       return deDoubleIsIEEENaN(x) && (deDoubleBitsToUint64(x) & (1ull << 51)) != 0;
+}
+
 /* Basic utilities. */
 
 DE_INLINE float                deFloatAbs                      (float x)                                               { return (x >= 0.0f) ? x : -x; }
index 4f20687..b9417c2 100644 (file)
@@ -23,6 +23,7 @@ set(DECPP_SRCS
        deDynamicLibrary.hpp
        deFilePath.cpp
        deFilePath.hpp
+       deMath.hpp
        deMemPool.cpp
        deMemPool.hpp
        deMeta.cpp
diff --git a/framework/delibs/decpp/deMath.hpp b/framework/delibs/decpp/deMath.hpp
new file mode 100644 (file)
index 0000000..b213430
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _DEMATH_HPP
+#define _DEMATH_HPP
+/*-------------------------------------------------------------------------
+ * drawElements Base Portability Library
+ * -------------------------------------
+ *
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Basic mathematical operations.
+ *//*--------------------------------------------------------------------*/
+
+#include "deFloat16.h"
+#include "deMath.h"
+
+#include <limits>
+
+DE_INLINE double       deToDouble      (deFloat16 x)   { return deFloat16To64(x); }
+DE_INLINE double       deToDouble      (float x)               { return x; };
+DE_INLINE double       deToDouble      (double x)              { return x; };
+
+template <typename T>
+inline T deToFloatType(double x)
+{
+       return static_cast<T>(x);
+}
+
+template <>
+inline deFloat16 deToFloatType<deFloat16>(double x)
+{
+       return deFloat64To16(x);
+}
+
+// These helpers make the C helpers usable from templates.  Because some of
+// these deal with signaling NaN, it's important that no implicit float
+// conversion operations happen.
+DE_INLINE deBool       deIsPositiveZero        (deFloat16 x)   { return deHalfIsPositiveZero(x); };
+DE_INLINE deBool       deIsPositiveZero        (float x)               { return deFloatIsPositiveZero(x); };
+DE_INLINE deBool       deIsPositiveZero        (double x)              { return deDoubleIsPositiveZero(x); };
+DE_INLINE deBool       deIsNegativeZero        (deFloat16 x)   { return deHalfIsNegativeZero(x); };
+DE_INLINE deBool       deIsNegativeZero        (float x)               { return deFloatIsNegativeZero(x); };
+DE_INLINE deBool       deIsNegativeZero        (double x)              { return deDoubleIsNegativeZero(x); };
+DE_INLINE deBool       deIsIEEENaN                     (deFloat16 x)   { return deHalfIsIEEENaN(x); };
+DE_INLINE deBool       deIsIEEENaN                     (float x)               { return deFloatIsIEEENaN(x); };
+DE_INLINE deBool       deIsIEEENaN                     (double x)              { return deDoubleIsIEEENaN(x); };
+DE_INLINE deBool       deIsSignalingNaN        (deFloat16 x)   { return deHalfIsSignalingNaN(x); };
+DE_INLINE deBool       deIsSignalingNaN        (float x)               { return deFloatIsSignalingNaN(x); };
+DE_INLINE deBool       deIsSignalingNaN        (double x)              { return deDoubleIsSignalingNaN(x); };
+DE_INLINE deBool       deIsQuietNaN            (deFloat16 x)   { return deHalfIsQuietNaN(x); };
+DE_INLINE deBool       deIsQuietNaN            (float x)               { return deFloatIsQuietNaN(x); };
+DE_INLINE deBool       deIsQuietNaN            (double x)              { return deDoubleIsQuietNaN(x); };
+
+template<typename T>
+inline T deQuietNaN()
+{
+       return std::numeric_limits<T>::quiet_NaN();
+}
+
+template<>
+inline deFloat16 deQuietNaN<deFloat16>()
+{
+       return deFloat16QuietNaN;
+}
+
+template<typename T>
+inline T deSignalingNaN()
+{
+       return std::numeric_limits<T>::signaling_NaN();
+}
+
+template<>
+inline deFloat16 deSignalingNaN<deFloat16>()
+{
+       return deFloat16SignalingNaN;
+}
+
+#endif // _DEMATH_HPP